お母さんにも生成AIエージェントの基礎と実践的なアーキテクチャを説明できるようになりたい
変なタイトルですが、本記事は2025年2月にKaggleでGoogleが公開した「AIエージェント」に関するホワイトペーパーをChatLLMと一緒にかみ砕いて要約したものです。実際にお母さんに読ませたら”はじめに”の部分で脱落すると思いますが、この記事にたどり着いた人にとってはそれなりにわかりやすいと思います。それでも完全な情報の正確性は保証できかねますので、より正確な情報を得たい方やより詳しく知りたい方は本文が掲載されている以下のURLを参照してください。
はじめに
AIエージェントは、言語モデル(LM)に外部ツールやデータソースへのアクセス権限を与え、より複雑なタスクを自律的にこなすことができる。これを実現するには、モデルが外部ツールやデータソースへのアクセス権限を持つだけでなく、自己主導的にタスクを計画・実行する能力が必要である。この「推論」「論理」「外部情報へのアクセス」が生成AIモデルと結びついたものが「AIエージェント」という概念。
AIエージェントとは?
AIエージェントは、与えられた目標を達成するために、外部環境を観察し、必要に応じて行動を起こす自律的なプログラム。従来の言語モデルは、訓練データに基づく知識しか持たず、外部世界とのやり取りはできなかった。しかしAIエージェントは、APIやデータベースなどの外部ツールを活用し、リアルタイムな情報取得やアクション実行が可能である。
たとえば、ショッピングサイトのレコメンド、メールの自動返信、金融取引の自動化など、現実世界のさまざまな業務を自律的にこなせるようになる。エージェントは、単なる「質問→回答」ではなく、「計画→実行→調整」というサイクルを繰り返しながら、最適な結果を目指す。
エージェントの認知アーキテクチャ
エージェントの内部動作を理解するために、エージェントの行動や意思決定を駆動する基礎的な構成要素を紹介する。これらの要素の組み合わせは「認知アーキテクチャ」と呼ばれ、さまざまな構成が可能である。コア機能に注目すると、エージェントの認知アーキテクチャには3つの本質的な要素が存在する。
図1.一般的なエージェントの構造(アーキテクチャ)とその要素
モデル
エージェントの意思決定を担うのが言語モデル(LM)。モデルは、ユーザーからの入力や外部ツールから得た情報をもとに、次に取るべきアクションを推論する。モデルには、一般的な大規模言語モデルだけでなく、特定のタスクやツールに最適化されたものも利用できる。最適な運用結果を得るには、目的のアプリケーションに最適なモデルを選び、理想的には使用予定のツールに関連するデータで訓練されたモデルを活用するのが望ましい。
ツール
ツールは、エージェントが外部世界とやり取りするためのインターフェース。API、データベース、Webサービスなどが該当する。ツールを使うことで、エージェントは現実世界のデータを取得したり、外部システムに働きかけたりできる。
オーケストレーションレイヤー
オーケストレーションレイヤーは、エージェントの「思考の流れ」を制御する部分。情報の取り込み、内部推論、ツールの選択、アクションの実行、結果の評価といった一連のサイクルを管理する。これにより、エージェントは複数のステップを経て複雑なタスクを遂行できる。
推論フレームワークと意思決定
エージェントが複雑なタスクをこなすためには、単純な「入力→出力」ではなく、段階的な推論や計画が必要である。代表的な推論フレームワークには以下のようなものがある。
ReAct
ReActは、「推論(Reason)」と「行動(Act)」を組み合わせたフレームワーク。エージェントは、ユーザーの質問に対して「何をすべきか考える→実際に行動する→結果を観察する→再度考える」というループを繰り返す。これにより、より柔軟で現実的な問題解決が可能になる。
Chain-of-Thought(CoT)
CoTは、複雑な問題を中間ステップに分解し、段階的に推論する手法。たとえば、数学の問題や論理的な推論が必要なタスクで効果を発揮する。
Tree-of-Thoughts(ToT)
ToTは、複数の思考の道筋(ツリー構造)を同時に探索し、最適な解決策を見つけるためのフレームワーク。探索的なタスクや戦略的な意思決定に向いている。
ツールの種類と役割
エージェントが外部世界とやり取りするためのツールには、主に以下の3種類がある。
拡張機能(Extensions)
拡張機能は、APIとエージェントを標準化された方法で接続する仕組み。たとえば、フライト予約エージェントがGoogle Flights APIを使ってリアルタイムのフライト情報を取得する場合、拡張機能を通じてAPI呼び出しが行われる。拡張機能は、必要なパラメータや使い方の例をエージェントに教えることで、柔軟なAPI連携を実現する。
関数(Functions)
関数は、クライアントサイドで実行される自己完結型のコードモジュール。エージェントは、どの関数をいつ使うか、どんな引数を渡すかを判断し、実際のAPI呼び出しやデータ処理はクライアント側で行う。これにより、セキュリティや認証の制約、バッチ処理など、さまざまな要件に柔軟に対応できる。
データストア(Data Stores)
データストアは、エージェントが構造化・非構造化データ(PDF、スプレッドシート、Webページなど)にアクセスできるようにする仕組み。ベクトルデータベースを活用し、ユーザーのクエリに関連する情報を効率的に検索・取得できる。RAG(検索拡張生成)の中核。
モデルの学習強化と最適化
エージェントの性能を最大化するには、モデルが「どのツールを、どのタイミングで、どのように使うか」を適切に判断できることが重要。そのための主なアプローチを以下に示す。
インコンテキスト学習
推論時にプロンプトで少数の例(few-shot)を与え、モデルがその場でツールの使い方を学ぶ手法。柔軟性が高く、さまざまなタスクに応用できる。
検索ベースのインコンテキスト学習
外部メモリやデータストアから、最も関連性の高い情報やツールの例を動的にプロンプトに組み込む方法。RAGやExample Storeなどが該当する。
ファインチューニング
特定のタスクやツールの使い方を大量の例で事前学習させることで、モデルの専門性を高める。特定分野での高精度な応答が求められる場合に有効。
LangChainによるエージェント構築
オープンソースのLangChainやLangGraphなどのライブラリを使えば、エージェントのプロトタイプを簡単に作成できる。たとえば、Google Search APIやGoogle Places APIをツールとして組み込み、
「昨日RIDDLEが対戦した相手は?そのチームのオーナーは?」
といった複数段階の質問にも、検索→情報取得→応答生成という一連の流れを自動化できる。
まとめ
生成AIエージェントは、言語モデルの能力を大きく拡張し、現実世界の複雑な課題解決に活用できる新しい枠組みである。エージェントの中核には、推論・計画・意思決定を担う認知アーキテクチャがあり、拡張機能・関数・データストアなどのツールを組み合わせることで、リアルタイムな情報取得やアクション実行が可能になる。
今後は、
- より高度な推論能力
- 多様なツール連携
- 専門分野ごとのエージェントチェイニング(複数エージェントの連携)
などが進化し、ビジネスや社会のさまざまな場面で活用が広がると考えられる。
所感
一個ずつの技術についてはそれなりに知っていましたが、それらをうまく組み合わせてより複雑なAIエージェントを作り上げる構造が、この記事を読んで明確になりました。とても面白い。
1,2年前まではChatGPT=大規模言語モデル(LLM)という認識がありましたが、最近はユーザとの過去のやり取りを踏まえた回答をしたり、Web検索をしたりできるため、ChatGPT=AIエージェントという側面が強くなってきました。そういえば、1年くらい前に研究室の先輩が「同じモデルでもChatGPTを使った場合の回答とOpenAI APIを使った場合の回答が異なる」という話をしていました。その時は「なんでだろうね」という程度の会話で終わりましたが、これはChatGPTで入力したプロンプトはモデルにそのまま渡されているわけではなく、何らかのツールを用いて加工されていたのだと最近になって気付きました。
また何か作りたいものが思いついたらLangChainを利用したRAGや複数のモデルを活用した複雑なシステムを構築してみたいと思います。ではまた。👋
Discussion