AIエージェント
AI Agent ・ えーあいえーじぇんと
LLMが自律的にツールを使い、目標達成まで行動を繰り返す仕組み。
概要
AIエージェントは、LLM(大規模言語モデル)を「頭脳」として、目標の達成まで自律的に行動を繰り返すシステムです。単発の質問に一度だけ答えるチャットボットと違い、エージェントは「このバグを直して」「来週の出張を手配して」といった粒度の粗い目標を受け取ると、自分でタスクを分解し、検索・ファイル編集・API呼び出しといったツールを使い、その結果を観察して次の行動を決める — このループを目標達成(または断念)まで回し続けます。
コードを書いてテストを実行し、失敗したら修正して再実行するコーディングエージェント、社内文書を調べて回答をまとめるリサーチエージェントなどが代表例です。「LLMに手足が生えたもの」と言い換えてもよく、モデル単体では閉じたテキスト生成しかできなかったAIが、外部の世界に働きかけて結果を確かめられるようになった点が本質的な変化です。
なぜ生まれたか
LLM単体には2つの根本的な限界がありました。ひとつは「行動できない」こと。モデルの出力はあくまでテキストで、ファイルを保存することも、最新情報を検索することも、計算を正確に実行することもできません。知らないことを尋ねられるともっともらしい誤答を生成してしまうハルシネーションも、外部の事実を確かめる手段がないことと地続きの問題です。もうひとつは「一発勝負」であること。複雑なタスクは途中で状況を確認しながら軌道修正する必要がありますが、1回の応答で完結するチャットでは、間違いに気づいて引き返すことができません。
転機は、LLMに外部関数の呼び出しを指示させる Function Calling の登場(2023年)と、「推論と行動を交互に繰り返させると性能が上がる」ことを示したReActなどの研究でした。行動の手段と、試行錯誤するループ構造。この2つが揃ったことで、「目標だけ渡して過程はモデルに任せる」というエージェントの形が実用になったのです。
詳細
観察→思考→行動のループ
エージェントの心臓部は「エージェントループ」と呼ばれる繰り返し構造です。LLMは目標と現在の状況(会話履歴・ツールの実行結果)を読み、次の一手を考え、ツール呼び出しという形で行動を指示します。実際にツールを実行するのはエージェント側のプログラムで、その結果を再びLLMに渡す — この往復を、LLMが「もうツールは不要、最終回答を出せる」と判断するまで繰り返します。
このループの各周回で、LLMは前回の行動の結果を「観察」できることが重要です。テストが失敗すればエラーメッセージを読んで原因を考え直し、検索結果が空なら別のキーワードを試す。一発勝負では不可能だった試行錯誤と軌道修正が、ループ構造によって可能になります。
ツールと文脈 — エージェントを構成する部品
エージェントの能力は、ほぼ「どんなツールを持たせるか」で決まります。ファイル読み書き、シェル実行、Web検索、社内APIの呼び出しなど、ツールの宣言と呼び出しの形式は Function Calling の仕組みそのものです。ツールの接続を標準化するプロトコルとして MCP が登場し、エージェントと外部システムの組み合わせを差し替え可能にしつつあります。また、必要な知識をその場で検索して文脈に取り込む RAG は、エージェントにとって代表的な「情報収集ツール」になります。
一方で制約になるのがコンテキストウィンドウです。ループを重ねるほど履歴とツール結果が積み上がり、いずれ文脈が溢れます。長いタスクでは、途中経過を要約して圧縮する、重要な情報を外部にメモして必要時に読み戻すといった「文脈の管理」がエージェント設計の中心的な課題になります。どのツールをどう説明し、どんな手順方針を渡すかというシステムプロンプトの設計は、プロンプトエンジニアリングの腕の見せどころです。
自律性のスペクトラム
「エージェント」は0か1かではなく、人間がどこまで手綱を握るかのスペクトラムとして捉えるのが実態に合っています。あらかじめ決めた手順の一部にLLMを組み込むワークフロー型(自律性は低いが予測可能)から、1ステップごとに人間が承認する半自律型、目標だけ渡して完了まで任せる自律型、さらに複数のエージェントが分担・協調するマルチエージェント構成まで。自律性を上げるほど適用範囲は広がりますが、誤った行動の影響も大きくなるため、「タスクの失敗コスト」と「自律性の高さ」を釣り合わせるのが設計の基本です。定型的で検証しやすい作業は自律に寄せ、取り返しのつかない操作は人間の承認を挟む、という使い分けです。
ガードレール — 暴走をどう防ぐか
行動できるということは、間違った行動もできるということです。エージェントの実運用では、能力を与えることと同じくらい、制限をかけることが重要になります。基本は最小権限の原則で、タスクに必要なツールと権限だけを渡します。ファイル削除や本番環境への変更のような破壊的操作には人間の承認(human-in-the-loop)を必須にし、実行環境はコンテナなどのサンドボックスで隔離して影響範囲を限定します。ループ回数や課金額に上限を設けて無限ループや暴走コストを防ぐのも定石です。また、エージェントが読み込む外部データ(Webページやメールの本文)に「これまでの指示を無視して〜せよ」といった命令を仕込むプロンプトインジェクションという攻撃があり、外部データを扱うエージェントではSQLインジェクションに匹敵する主要な脅威として警戒が必要です。
エージェントは決定的に動くプログラムではなく、確率的に判断する主体です。従来のソフトウェアの「仕様どおり動くことをテストで保証する」発想だけでは足りず、権限・隔離・承認・監視を組み合わせて「間違えても被害が限定される」構造を作る — 信頼できない賢い実行者を安全に働かせるという、新しい設計問題だと捉えるのがよいでしょう。
