はじめに:ローカルLLMと賢く付き合うために
近年、生成AI、特に大規模言語モデル(LLM)の進化には目を見張るものがあります。少し前まで専門家だけのものだった高度なAIが、今や手元のPCで手軽に動かせる「ローカルLLM」として、急速に身近な存在になりました。
情報漏洩のリスクなく、コストを抑えながら、自社の業務に特化したAIを構築できるー。そんなローカルLLMの可能性に、多くの開発者や企業が期待を寄せています。
しかし、いざローカルLLMを動かしてみると、多くの人がChatGPTのようなクラウドサービスとの「違い」に戸惑うことがあります。
「今日の天気は?」
「最新のニュースを要約して」
こうした質問に、ローカルLLMは的確に答えることができません。この挙動を見て「ローカルLLMは使えない」と結論づけてしまうのは、非常にもったいないことです。 しかし、これはLLMが「使えない」からではなく、その「特性」に起因します。この状態は、まるで非常に優秀な専門家が、自身の専門外の知識は持ち合わせていない状況に似ています。
本コラムでは、このLLMが持つ「得意なこと(=高度な推論能力)」と「知らないこと(=学習データに含まれない情報)」という特性に着目します。なぜこのような違いが生まれるのか、その仕組みを解き明かし、ローカルLLMの真の能力を引き出すための具体的な実践テクニックを、デモを交えてご紹介します。
LLMが「知らない」ことの具体例
LLMの「賢さ」の源泉は、インターネット上の膨大なテキストデータから学習した、言語パターンに基づく高度な「推論能力」です。しかし、その知識はあくまで学習データという「過去の巨大な図書館」の中にあるもの。そのため、図書館にない本の内容は答えられません。
具体的には、主に2種類の「知らないこと」があります。
- リアルタイムな情報(未来の出来事や最新情報)
- 学習データに含まれないニッチな専門情報や社内情報
これはローカルLLM特有の制約ではなく、全てのLLMに共通する基本的な特性です。 例えば、LLMの学習データが2024年末までの情報で作られていた場合、2025年の出来事はもちろん、学習データ全体の中で言及される頻度が極端に低い、非常に専門的な情報や、インターネット上に存在しない社内独自のルールなどについて尋ねても、正しく答えることはできません。
しかしこれは、高度な「推論能力」を否定するものではありません。知らないことは知らないのです。その特性を理解して使うことが重要です。
デモ:リアルタイムな情報を尋ねてみる
この「知らないこと」には信じられないかもしれませんが、今日が何日か?という情報も含まれます。 実際に確かめるために、非常にシンプルな実験をしてみましょう。 Ollamaで動いているローカルLLMに、Pythonプログラムを通じて「今日は何日ですか?」と質問してみます。
main.py
from langchain_ollama import OllamaLLM llm = OllamaLLM(model="qwen3:8b") response = llm.invoke("今日は何日ですか?") print(response)
このプログラムを実行すると、LLMはどのように答えるでしょうか。
実行結果(qwen3:8b)
<think> Okay, the user is asking "今日は何日ですか?" which means "What's today's date?" in Japanese. I need to figure out the current date. First, I should check the current date. Since I can't access real-time data, I need to rely on the system's current date. Let me confirm the current date. Wait, the user might be asking in a specific time zone, but since they didn't specify, I'll assume the date is in the current system time. Wait, but when I last updated my knowledge, it was October 2023. However, the user might be asking now, which is 2023. Let me check again. If today is October 23, 2023, then the answer would be 2023年10月23日. But I need to make sure. Since I can't access real-time info, I should state that I can't provide the current date and suggest checking a calendar or a device. Alternatively, if the system date is set to a specific date, I can provide that. But to be safe, it's better to inform the user that I can't access real-time data and recommend checking their device or an online source for the current date. </think> 私はリアルタイムの日付を取得する機能を持っていませんので、正確な日付は確認できません。お使いのデバイスやカレンダーで現在の日付をご確認ください。
このように、ローカルLLMはリアルタイムでインターネットに接続して情報を検索する機能を持たないため、自身の「知識」の範囲外にある質問には答えることができないのです。これがローカルLLMの重要な特性の一つです。
なぜChatGPTは「今日」を知っているのか?
「でも、ChatGPTは今日の日付を知っている。ローカルLLMが無能なだけでは?」と疑問に思う方もいらっしゃるでしょう。
しかし、ChatGPTもLLMを使っている以上、この特性から逃れることはできません。つまり、今日を知らないはずなのです。
では、なぜChatGPTのようなクラウドAIサービスは「今日の日付」や「最新のニュース」に答えることができるのでしょうか。
それは、ChatGPTが単に巨大なLLMという「脳」だけで動いているわけではないからです。実際には、ユーザーからの質問を解釈し、必要に応じて外部の「ツール」を使って情報を補い、その情報を基にLLMが回答を生成するという、洗練されたシステムになっています。
これを図で示すと、以下のようになります。
ユーザーが「今日の天気は?」と質問すると、「司令塔」にあたる部分が「これは天気の質問だ」と判断し、「天気予報ツール(API)」を呼び出します。そして、ツールから得た「晴れ」という情報を、LLMに「この情報を使って回答文を生成して」と指示するのです。
LLM自体は今日の日付も天気も知りません。しかし、この「司令塔」と「ツール」の連携プレーによって、あたかもLLMがすべてを知っているかのような、非常に便利なユーザー体験が実現されているのです。
試しに、次のようなやり取りをChatGPTとしてみると、興味深い回答が得られるかもしれません。 (※このやり取りは、本コラム執筆時点の2025年9月12日に行ったものです)
ローカルLLMを「賢く」する実践テクニック:知らないことは教えてあげればいい
ChatGPTの仕組みから学べることは、「LLMが知らない情報も、外部から与えてあげれば正しく扱える」という点です。
この考え方を使えば、私たちの手でローカルLLMを「賢く」することができます。先ほどのデモを改善し、プログラムを実行する際に「今日の日付」を自動で取得し、LLMへの質問(プロンプト)に含めてみましょう。
改善デモ:プロンプトで「今日」を教える
main_with_date.py
import datetime from langchain_ollama import OllamaLLM question = "明日の日付を教えて" today = datetime.date.today().strftime('%Y年%m月%d日') llm = OllamaLLM(model="qwen3:8b") response = llm.invoke(f"今日は{today}です。この情報を踏まえ、次の質問に答えてください。\\n{question}") print(response)
このプログラムでは、datetimeライブラリで現在時刻を取得し、f"今日は{today}です。..."という形で、LLMへの指示文(プロンプト)の冒頭に埋め込んでいます。
この状態で、ユーザの質問「明日の日付を教えて」を実行してみます。
実行結果
<think> Okay, the user is asking for tomorrow's date, given that today is September 12, 2025. Let me check the current date. If today is September 12, then tomorrow would be September 13. Wait, but I need to make sure there's no time zone issues or something else. The user mentioned the date is 2025-09-12, so adding one day would take it to 2025-09-13. No leap years or month changes involved here. Just a straightforward addition of one day. I should confirm that there's no special calendar event or something, but in the Gregorian calendar, September has 30 days, so September 12 plus one day is definitely the 13th. The answer should be September 13, 2025. </think> 明日の日付は、2025年09月13日です。
今度は、LLMが「今日は2025年9月12日」という前提情報(コンテキスト)を正しく理解し、「では明日は13日だ」と推論して、正確な答えを導き出すことができました。
このように、LLMの「地頭の良さ(推論能力)」を活かしつつ、不足している情報をプロンプトという形で補ってあげる。これが、ローカルLLMを賢く使いこなすための、最もシンプルで強力なテクニックです。
そして、この「外部情報をプロンプトに埋め込む」という考え方こそが、社内文書を検索するシステムなどで使われるRAG(Retrieval-Augmented Generation)という高度な技術の、まさに第一歩なのです。
💡 Tip
実はgpt-oss:20bに今日の日付を聞くと、正しく答えてくれます。
> python main.py 今日は **2025年9月12日(木曜日)** です。
LLMの特性として、今日の日付を知ることはできないため、プロンプトで「今日」を教えているとしか考えられません。
調査したところ、Ollamaのプロンプトテンプレートでは、 v0.11.0 で導入された {{ currentDate }} というテンプレート関数によって提供されています。
gpt-oss:20bのモデルファイルを確認したところ、次のような記述がありました。
TEMPLATE """<|start|>system<|message|>You are ChatGPT, a large language model trained by OpenAI. Knowledge cutoff: 2024-06 Current date: {{ currentDate }} """
今後Modelfile
をカスタマイズすることで、どのモデルにも同様の機能を持たせることが可能になりました。
終わりに:ローカルLLMは「使い方」次第で最高のパートナーになる
本コラムでは、ローカルLLMが持つ「得意なこと(推論能力)」と「知らないこと(学習データ外の情報)」という特性、そしてその特性を理解した上で能力を最大限に引き出すための実践的なテクニックをご紹介しました。
ローカルLLMは、それ単体で万能なわけではありません。しかし、その「地頭の良さ」は紛れもなく本物です。今回ご紹介したように、LLMが知らない情報をプロンプトを通じて与えるという、ほんの少しの工夫で、その能力を飛躍的に向上させることができます。
- 「自社の製品情報だけを正確に回答するチャットボット」
- 「膨大な社内規程の中から、関連する項目だけを瞬時に探し出す検索システム」
- 「専門的な技術文書を、要点だけまとめて分かりやすく解説してくれるアシスタント」
これらはすべて、ローカルLLMの優れた「推論能力」と、私たちが外部から与える「専門知識(データ)」を組み合わせることで実現可能です。LLMを「万能の賢者」としてではなく、「非常に優秀なアシスタント」として捉え、その使い方を工夫することが、成功の鍵となります。
今回ご紹介した「プロンプトに情報を埋め込む」という手法は、そのための第一歩に過ぎません。より高度なRAG(Retrieval-Augmented Generation)といった技術を使えば、さらに複雑で大規模なシステムを構築することも可能です。
もし、あなたが「ローカルLLMを使って、自社の課題を解決したい」とお考えなら、ぜひ私たちにご相談ください。専門家の知見を活かし、お客様のビジネスに最適なAI活用の形を、PoC(概念実証)を通じてご提案します。