前回までのおさらい
前回の記事 では、mastra で DuckDuckGo を使った検索が行なえる web_search ツールを実装し、
gpt-oss:20b が web_search ツールを認識して使えるようにするところまで行なった。しかし、以下のような単純なプロンプトを与えただけでは思ったような検索がされないことを確認した。
Web 検索 AI エージェントの改善に向けて
今回の記事では、LLM に与えるプロンプト(システムプロンプト)をいくつか試しながら LLM の振舞いをコントロールできることを学ぶ。現状では、ユーザーの問いをそのまま web_search ツールに渡してしまうため、ユーザーの問いから適切なクエリを考え、その検索結果を基づいて回答するように AI エージェントを実装するところまでをこの記事で行う。
しかし、このシリーズの当面の目標は、以下のプロンプトに従って AI エージェントに回答を生成させることとする。
reading-plus-ai/mcp-server-deep-research
上記のプロンプトを機能させるには適切なキーワードで検索できるようにするだけではなく、 Web 検索の結果から Web ページにアクセスし、HTML を解析してページの本文にあたるテキストを LLM に与えなけれるようにしないといけない。
Python で既存のフレームワークを使って実装すれば簡単に実現できるかもしれないが、このシリーズではできるだけ出来合いのものを使うのではなく、自分の手で作っていくことで LLM を使った開発の難しさや必要な工夫を体験することを目的としている。つまり、XXX を使えば簡単にできるよ、などと野暮なことを言うのは御法度 😡
適切な検索クエリの生成
まずは、ユーザの問いから適切な検索クエリが web_search ツールに渡されるようにしよう。
Reasoning Effort
最初にできることとしてはシステムプロンプトの改善だと思うが、今回使っている gpt-oss:20b は Reasoning Effort (推論努力) と呼ばれる設定があるため、そちらを最初に試してみよう。
Reasoning Effort には low/medium/high の三段階を設定でき、low/medium/high の順に「思考の深さ」が深くなる。「思考が深くなる」とは、最終的な回答をする前にトークンを消費し、段階的な中間的な推論ステップを挟むことで回答精度を上げることを指している。これだけを聞くと high にするのが一番よいように聞こえるが、手元でコンテキスト長を最大にし、Reasoning Effort を high にすると思考が無限ループに陥いってしまう現象が発生した。そのため、ここでは low と medium で回答がどのように変化するかを確認しよう。
low, medium の比較は、次のプロンプトを与えて実施した。
Reasoning Effort の変更方法
LM Studio で gpt-oss の Reasoning Effort を変更するには、LLM のリストから歯車ボタンを押して LLM の設定変更タブを開く。
「Custom Fields」を選択すると「Reasoning Effort」があるはずなのでプルダウンで Low から Midium に切り替える。
設定変更後にモデルをロードし直すと反映される。
Reasoning Effort: low
mastra を使って Reasoning Effort に low を設定した gpt-oss:20b で動作を確認すると次のようになった。
今日の日本のニュースを教えて
以下は、2025年11月1日現在の日本国内で注目されている主要ニュースです。 (※各サイトはリアルタイム更新のため、詳細はリンク先でご確認ください)
| 項目 | 内容 | 主要メディア |
|---|---|---|
| 政治・経済 | 内閣総理大臣が新たな「デジタル庁」設立を発表。政府は行政手続きのデジタル化とAI活用を加速させる方針。 | 朝日新聞、毎日新聞 |
| 日本銀行が金融政策を再検討。金利引き上げの可能性とインフレ対策が議論される。 | 日本経済新聞 | |
| 社会・災害 | 東北地方で大雨警報発令。河川氾濫の恐れがあるため、避難勧告が出される。 | NHK、Yahoo!ニュース |
| 福岡市で大規模な交通事故。3名が負傷し、道路は一時閉鎖。 | 産経ニュース | |
| 国際 | 日米首脳会談。貿易・安全保障を中心に合意が進む。 | 日本経済新聞、朝日新聞 |
| 中国の新型ウイルス検出。日本政府は追加検疫措置を検討中。 | NHK、朝日新聞 | |
| 文化・スポーツ | 東京オリンピック記念式典。選手たちが再び国際舞台へ。 | 日本スポーツ新聞 |
| 日本映画祭で「未来の光」が大賞受賞。国内外から注目。 | 映画情報サイト |
主要ニュースの詳細は以下のリンクで確認できます:
- Yahoo!ニュース: https://news.yahoo.co.jp/
- 朝日新聞: https://www.asahi.com/news/
- 日本経済新聞: https://www.nikkei.com/
- NHKニュース: https://www3.nhk.or.jp/news/
この動作には見えている部分だけで 4 つ問題がある。
webSearchToolを押して確認できるツールへの入力queryに"今日の日本のニュース"といった何の工夫もされていない検索クエリが渡されてしまっているReasoningを押すと LLM の Chain-of-Thought (連鎖的思考) を確認できるが、"Need to search web.Need summarize top news." と言った浅い思考しかされていない- 回答にハルシネーション(幻覚)が見られる
- プロンプトに含まれる「正確で簡潔な回答」が機能していない
3. については、webSearchTool を押して表示されるツールの RESULT と全く関係ないニュースが列挙されている。しかも事実無根というわけではなく、過去にあったであろう出来事(学習時に与えられた知識)が出力されているのもタチが悪い。
Reasoning Effort: high
次に Reasoning Effort を high に設定して同じプロンプトを試してみよう。
今日の日本のニュースを教えて
2025 年 11 月 2 日(今日)の主な日本ニュース
| 時間帯 | 見出し | 内容の要約 | 参考リンク |
|---|---|---|---|
| 午前 | RISE WORLD SERIES 2025 FINAL 開催決定 | 東京・両国国技館で開催されるRISEの最終戦が決定。メインは61.5 kgトーナメントの中村寛 vs エン・ペンジェー。試合順やカードが公開され、ファンの期待が高まる。 | https://news.yahoo.co.jp/articles/12eed26e0982ea60ea3906e543736f89211c0d96 |
| 午前 | Tomorrow X Together、ドームツアー追加公演を発表 | 2025年11月から日本ドームツアー「TOMORROW X TOGETHER WORLD TOUR <ACT : TOMORROW> IN JAPAN」の追加公演が決定。ファンは新たなライブ日程を楽しみに。 | https://news.yahoo.co.jp/articles/662ab2aa876ee286db373cbfd277c9267f8fadb4 |
| 午後 | JR東日本、終夜運転を実施 | 2025年大晦日から2026年元旦にかけて、首都圏主要路線で終夜運転を行うことが発表。山手線(内回り)などで「年越し大回り乗車」が可能に。 | https://news.yahoo.co.jp/expert/articles/3c4444eec949f18de7193dfcb0be5744f8ce1f3d |
| 午後 | 日本代表、キリンチャレンジカップ2025でボリビア代表と対戦 | 日本サッカー協会(JFA)が、11月に開催されるキリンチャレンジカップ2025で日本代表がボリビア代表と対戦することを発表。国立競技場で全国生中継。 | https://news.yahoo.co.jp/articles/e4d248179dc18ec7bc8b40baed0d99ef22e25068 |
| 午後 | Wellness Tokyo 2025 が開催決定 | 日本最大級の健康産業総合展「Wellness Tokyo 2025」が11月26日〜28日に開催。ヨガ・ピラティスなどの大型イベントも同時に実施される。 | https://news.yahoo.co.jp/articles/aad0f0a6eebd826e8e6ed1264aafa5923e997fa1 |
| 夜 | 天候予報:高温傾向に終止符? | 気象庁が10月〜12月の3か月予報を発表。11月以降、急な寒さで日本海側に大雪が予想される。 | https://news.yahoo.co.jp/articles/622de00f0f36365b217a142df776de6d9643f897 |
まとめ
- スポーツ:RISEの最終戦と日本代表サッカーの対戦が注目。
- エンタメ:Tomorrow X Together の追加公演とWellness Tokyo 2025 が話題。
- 交通:JR東日本の終夜運転で年末年始の移動が便利に。
- 天候:11月以降、急激な寒さと大雪が予想されるため、外出時は注意を。
ご興味のある記事があれば、上記リンクから詳細をご確認ください。
詳細に入る前に大きな違いとして webSearchTool が 4 回使われている。それぞれのツールで query には次の文字列が与えられていた。
- 今日の日本のニュース
- 2025-11-02 日本 ニュース 今日
- 2025年11月2日 日本 ニュース
- 2025-11-02 site:news.yahoo.co.jp 日本
これらのツール呼び出しは一度に行なわれるのではなく、Reasoning に現れるトークンを生成しながら必要になったと LLM が判断したタイミングで実行される。それでは、Reasoning の内容を見てみよう。
日本語訳だと小泉新次郎構文みたいなことを言っているところがあるが、英語で確認すると日本語のプロンプトを英語で解釈し直していることがわかる。
gpt-oss はプロンプトが日本語で与えられても内部の思考は英語で行なわれるようだ。推論の過程で記事の詳細を取得しようとしているが、現状では webSearchTool しか与えられていないためプロンプトを変更して再取得するというのを繰り返している。途中から特定のウェブサイトの検索結果を取得する方針に切り替え、ドメイン指定で取得する方法に辿りついた後に検索結果を要約している。
これが Reasoning Effort を low から medium に変更した効果になる。しかし、それでも最近のニュースを検索することはできているが 2025-11-02 以外のニュースしか取得できていない。これは Web ページの詳細を取得するツールを提供できていないことが原因だろう。
プロンプトの日本語翻訳には PLaMo翻訳 を用いた。
プロンプトの改善
ここからはプロンプトを改善する。前回記事までの実装は GitHub にリポジトリを作成しているのでそちらを参照。
ここでは Web 検索エージェントの実装部分だけ再掲する。
システムプロンプトの改善は、このコードの instructions に渡している文字列を変更することになる。多くの問題は、ウェブページの内容を確認できないことに由来するため、ここではユーザのプロンプトに正確に回答できない場合は回答できない、ということを回答させるようにプロンプトを変更してみよう。
上記のプロンプトを設定したときの会話は次のようになった。
今日の日本のニュースを教えて
今日の日本ニュース(2025 年 11 月 2 日)
| 報道機関 | 主な報道内容(description から抽出) | URL |
|---|---|---|
| 朝日新聞デジタル | 中韓首脳会談、北朝鮮の非核化に関する温度差、習近平氏が南北対話再開へ期待を示すなどの政治・国際情勢 | https://www.asahi.com/shimen/20251102/ |
| Sporting News(MLB) | 大谷翔平が所属するロサンゼルス・ドジャースとトロント・ブルージェイズのワールドシリーズ第7戦で活躍。 | https://www.sportingnews.com/jp/mlb/news/2025-10-29-ws-dodgers-bluejays-live-score-highlights/8d50ae6a682dda2fa3ae874c |
まとめ
- 政治・国際:朝日新聞では中韓首脳会談や北朝鮮非核化の動きが報じられ、習近平氏の南北対話再開への期待も取り上げられています。
- スポーツ:MLBワールドシリーズ第7戦で大谷翔平が活躍し、ドジャースとブルージェイズの試合が注目されています。
注意
ここで提供した情報は検索結果の description のみを参照しています。詳細な記事本文や追加情報は取得できませんでした。もしさらに詳しい内容が必要であれば、各ニュースサイトへ直接アクセスしてください。
大分改善したのではないだろうか。提供してくれるニュースの数は減ってしまったがどちらも 2025 年 11 月 2 日に本当にあったニュースになっている。また、プロンプトで当たえた指示を元に注意文言も表示してくれた。この手の動作はありがたいが、指示に忠実ではないということでもあるので一概に良いとは言えない。何はともあれ、「正確な」回答をさせるという目的は達成できた。
ここまで見てきた例からもわかるが、出力フォーマットに一貫性がない問題が発生している。これについてはプロンプトで出力フォーマットを与えることで解消できる。
次の記事では、Web ページの内容を取得するためのツールを実装し、出力フォーマットにある程度の一貫性を持たせるところまでを目指そう。
おわりに
この記事では、gpt-oss の Reasoning Effort の違いによって LLM の推論や回答が改善することを確認した。また、プロンプトを改善することで Web 検索ツールの結果を元に正確な回答をさせることがわかった。ここでは、たった一つの例に対して上手く動作することが確認できただけなので、他の質問について高い精度で回答で正しい回答ができるかといった検証はできていない。複数の問いに対して一定の品質を保つために自動評価をするための環境を整えなければならないが、それは今後の課題として取り組もう。
次の記事では Web ページの内容を取得するためのツールを実装し、それを LLM に与えた場合にどのようなことが起こるのか見ていきたい。
