AI Tips連載の8日目の記事です。
はじめに
こんにちは。フューチャーアーキテクト 製造・エネルギーサービス事業部の柴田です😌 見真の心で本質を探求しています!
本記事では、Google ADK (Agent Development Kit) を活用したマルチエージェントの構築、特に APIツール の利用に焦点を当てます。
OpenAPI仕様書からツールを生成し、APIキーを設定する具体的な手順を紹介します。これにより、自社開発や外部のAPIをAIエージェントと簡単に連携させる方法を示します。
もしこれからADKを始める方はこちらのクイックスタートがおすすめです。
https://cloud.google.com/vertex-ai/generative-ai/docs/agent-development-kit/quickstart?hl=ja
この記事が複雑なタスクを処理するマルチエージェント開発のTipsになればと思います!!
マルチエージェントとは
複数のAIエージェントが協調的または競合的に相互作用し、共通の目標達成や複雑な問題解決を目指すシステムです。
各エージェントは自律的に意思決定を行い、環境や他のエージェントの行動に応じて学習・適応することで、単一エージェントでは困難なタスクを効率的にこなします
Agent Development Kit(ADK)とは
ADKは、AIエージェントの開発とデプロイのためのフレームワークです。
AIエージェントごとに利用するモデル・役割・外部との連携を選択し、さらにAIエージェント同士の関係を記述することで、上記のようなマルチエージェントが作成できます。
ADKにおけるツールとは
AIエージェントに提供される機能を指しています。エージェントがLLMとしての能力を超えて、さまざまなアクションを実行したり、外部と連携することを可能にします。
エージェントに武器を持たせるイメージが自分の中でしっくりきています。このツールがADKによるマルチエージェント開発をすごく面白いものにしていると思います。
![]() 斧を装備した近距離型戦士 |
![]() 弓を装備した遠距離型戦士 |
※上記2つのイメージ画像はMiroで生成したものです
ツールの例
- データベースのクエリ
- APIリクエストの作成(例:天気データの取得、予約システム)
- ウェブ検索
- コードスニペットの実行
- 文書からの情報の取得(RAG)
- 他のソフトウェアやサービスとのやり取り
想定するマルチエージェントの構成
本記事ではツールの中のAPIリクエストの作成にターゲットを絞りますが、具体的に作成したいマルチエージェント構成を示します。
今回はこのマルチエージェントの中で、エネルギーデータ取得エージェントさんが必要データを取得するためにAPIツールを利用するという想定で話を進めます。

マルチエージェント構成図
この構成では指定した期間の必要データをeiaから取得し、数値に変動大きい時期を特定して同時期の関連ニュースを検索し、まとめてレポートを作成します。そして最後にレポートを指定したメールに送付します。
APIツールの実装手順
OpenAPI仕様書の取得
素晴らしいことに ADKではOpenAPI仕様に準拠したJSONやYAMLファイルをインポートすることでツールを作成することができます。
ということで今回は油価を取得するAPIを求めて、エネルギー情報局 EIA(Energy Information Administration)のウェブサイトからOpenAPI仕様書をダウンロードします。

eiaウェブサイト
APIキーの取得
このAPIを使うためにはAPIキーが必要ですので、ウェブサイトで登録してAPIキーを発行してもらいました。取得したAPIキーをエネルギーデータ取得エージェントに持たせることで、エージェントがAPIを利用できるようになります。
ツールの生成
OpenAPI仕様のファイルを読み込んでツールを生成します。このAPIではAPIキーを必要とするため、先にAuthScheme
とAuthCredential
を生成します。これはagent.py
で定義すれば大丈夫です。まずはツール作成のコード全体を示します。
with open(eia_openapi_path, "r", encoding="utf-8") as file: |
それでは各処理を個別に見ていきます。
認証情報作成の説明
token_to_scheme_credential
関数の各引数は次の通りです。name
ではAPIの仕様書によって定義されているAPIキーのパラメータ名を指定し、credential_value
でAPIキーを指定します。
token_type
:Literal["apikey", "oauth2Token"]
location
:Optional[Literal["header", "query", "cookie"]] = None
name
:Optional[str] = None
credential_value
:Optional[str] = None
ツール生成の説明
次にOpenAPIToolset
関数でツールを生成します。OpenAPI仕様書を文字列で読み込んで(下記の場合はdata
)、先ほど生成したAuthScheme
とAuthCredential
と合わせて引数に指定します。
これでのようにして作成したOpenAPIToolset
クラスのインスタンスがそのままツールとして利用することができます。
eia_api_tools = OpenAPIToolset( |
エージェントにツールを追加
作成したツールはAgent
のtools
としてそのまま使用できます。
具体的なコードは次の通りになります。インストラクションは長いので今回は省略します。動作確認をするだけであれば、description
の内容を指示として与えてもAPIを使用してくれると思います。API実行前にURIを明示してユーザーに確認してもらうようにするとデバッグが捗るかもしれません。
energy_data_agent = Agent( |
ツールの動作確認
マルチエージェント構成の確認
先ほど作成したエージェントを組み込んで、最初に説明したマルチエージェントを作成したら、adk web
で実行しましょう。
実行後にlocalhostに立ち上がった画面のEventで可視化されたマルチエージェントの構成を確認してみましょう。
このように一つ一つのAPIリクエストがツールとして構成されていることが分かります。

エージェントとツールの連携可視化
実行結果例
実行結果の例としてスクショを貼ります。このようにプロンプトによりAPIを使ってデータを取得できました。
今回のマルチエージェントでは、この後データの変動が大きい時期の関連ニュースをGoogle Search
で検索し、結果を統合してレポートを作成し、最後にレポートをメール送付しています。

エージェントとの会話画面
最後に
以上、ADKのToolsの機能の内、APIリクエストを作成する方法を紹介しました。APIリクエストを自分で実装することなく、OpenAPI仕様書をそのまま利用できるので、非常に短時間で、API仕様を理解してパラメータを合わせこむ必要もなくAPIリスエストを利用できるようになりました。
ADKではこの他にも様々なツールが用意されており、これらを活用することでLLMの枠を超えた様々な機能が実現できますので、色々と試していただけると嬉しいです。
改善点メモ
OpenAPI仕様書のdescription
にあまり詳細が書かれていないからか、API実行までに色々な質問が飛んできたり、APIパラメータを変えながら何度かリトライする状況がありました。OpenAPI仕様書のdesctiption
の情報補完して、さらに不要なAPIを削除すると、より使いやすいツールになるかもしれないです。
参考資料
- 米国エネルギー情報局のウェブサイト
- ここからOpenAPI仕様書とAPIキーを取得しました
- ADKのツールに関する記述
- ADKのツールやツールの種類について記述されています。
- ADKの認証に関する記述
- APIキーなど様々な方法でエージェントに認証情報を持たせる方法が記述されています