AIエージェントとは?道具を呼び、結果を受け取り、次の操作を決める仕組み
AIエージェントは、文章を一度生成して終わるだけでなく、目的に応じて外部の道具を選び、その結果を受け取って次の操作を決める仕組みだ。ただし「AIが自分で何でも実行する」という意味ではない。モデルが操作の候補と入力を出し、実際に操作するプログラムが権限や入力を確かめて実行する。この境界を見失うと、文章で提案しただけの操作と、実際に変更された状態を取り違える。
例えば「先週の記事のPVを調べて、伸びた記事を一つ教えて」と頼まれた場合を考える。モデルは分析用の道具に期間を指定して問い合わせ、返った数値から記事を選び、理由を書く。これが一連の流れだ。ここで挙げた依頼は説明用であり、実際のPVを調べた結果ではない。
Tool Callingは実行命令ではなく、実行の依頼
道具には名前、入力の形式、できることを定義する。モデルが「この道具を、この引数で使う」と出力した後、アプリケーション側が入力を検証し、許可された処理を実行する。道具の結果を会話へ戻し、モデルがそれを読んで回答または次の道具を選ぶ。AnthropicのTool Use資料は、この往復を tool_use と tool_result の対応として説明している。MCPの仕様も、道具をモデルが呼び出せる機能として定義するが、道具の提供と実際の操作権限は実装側の責任だ。
道具の名前が同じでも、読み取りと書き込みは影響が違う。記事を検索する道具と、記事を公開する道具を同列に扱わない。モデルの提案は入力として受け止め、実行前に対象、権限、引数をプログラム側で確認する。特に削除、支払い、外部への送信は、実行した後で文章を訂正しても元に戻せないことがある。
結果を見て次を決めるループ
ReActの研究は、推論と外部への行動を交互に使う考え方を示した。エージェントの実装でも、道具を呼ぶ、結果を読む、続けるか答えるかを決めるというループが基本になる。検索結果に記事がなければ別の期間を調べ、権限エラーならそこで止まる。最初に立てた計画を、道具の結果を無視して最後まで実行するわけではない。
このループは無限に続けない。最大実行回数、時間、費用、同じ呼び出しを繰り返したときの停止条件をアプリケーションで決める。道具が失敗したなら、成功したふりをして次へ進まず、失敗を結果として扱う。再試行してよい操作かも区別する。読み取りの再試行と、投稿や決済の再試行は同じではない。
状態を持たせるときに記録するもの
複数段階の作業では、これまでの質問、使った道具、返った結果、残る作業を次の判断へ渡す必要がある。ただし、会話を際限なく積み上げると、古い結果と新しい結果が混ざり、重要な条件が文脈から落ちる。長期の作業状態は、会話文だけでなく、完了済み操作と未完了操作を区別できる記録として管理する。
先のPV調査なら、取得した期間、指標の定義、記事URL、集計日時を結果に添える。モデルが「伸びた」と言うとき、前期間との比較がないなら、単にPVが多かっただけかもしれない。道具の結果をどの根拠として使ったかを残すと、後で結論を確認できる。
固定手順との使い分け
毎回同じ順番で二つのAPIを呼べば足りる処理なら、通常のプログラムで手順を固定した方が確認しやすい。エージェントが役立つのは、道具の結果によって次の調査先や操作が変わる場合だ。それでも、使える道具と停止条件を狭く定義するほど、結果を検証しやすい。
RAGは外部文書から回答の材料を探す仕組みであり、検索を道具としてエージェントへ渡すこともできる。RAGを使ったから自動的にエージェントになるわけではない。次の記事では、道具の入力と結果をどう設計するかを掘り下げる。