調査レポ4:AIがチームで動く!Google Antigravity SDKで「マルチエージェント」による自律タスク委譲を試してみた

Antigravity SDK入門 AI

前回の調査レポ3では、プログラムを終了しても過去のやり取りを忘れない「会話履歴の記憶・永続化機能」を検証しました。

今回は、Google Antigravity SDKの特に魅力的な機能のひとつである「マルチエージェント機能」について調べて試してみた内容をお届けします!

これまでは「1つのAIエージェントが自分で考えてツールを使う」という単体での動きを見てきましたが、今回のテーマは「得意分野の異なる複数のAIエージェント(リサーチ担当とライター担当)が連携してタスクを終わらせる」というマルチエージェントの仕組みです。難しい連携処理のコードを自前で書かなくても、SDKの機能を活用するだけでエージェント同士のバトンリレーによる自律的なタスク委譲が実現できます。

マルチエージェント機能とは?

マルチエージェントとは、得意分野の異なる複数のAIエージェントが連携して1つの大きな目標(ゴール)を達成する仕組みのことです。

人間の組織で言えば、1人の担当者がすべてをこなすのではなく、「リサーチ担当のAI」がデータを収集し、上がってきた報告を受け取った「ライター担当のAI」が最終成果物のレポートを完成させるというチームワークのイメージです。

  • タスクの分離と専門化
    調査や執筆など、処理を明確な役割ごとに専門のエージェントへ分割することで、AIの指示理解度が上がり精度の向上が期待できます。
  • コードの記述量を削減
    複雑なパイプライン処理を自前で組み上げることなく、各エージェントの設定(システム指示や所有ツール)を定義するだけで滑らかなバトンリレーが実現できます。

検証用Pythonサンプルコード(multi_agent_demo.py)

「リサーチ担当AI」がツールで情報を収集し、その結果を「ライター担当AI」へ渡して最終レポートを作成させる、2つのAIエージェントによるマルチエージェント連携サンプルプログラムを作成しました。

import os
import sys
import asyncio

# 1. 安全対策:python-dotenv ライブラリの検出と環境変数の読み込み
try:
    from dotenv import load_dotenv
    load_dotenv()
except ImportError:
    print("注意: python-dotenv がインストールされていません。環境変数から直にAPIキーを読み込みます。")

# 2. Google Antigravity SDK のインポート
try:
    from google.antigravity import Agent, LocalAgentConfig
except ImportError:
    print("エラー: google.antigravity パッケージが見つかりません。pip install google-antigravity で導入してください。", file=sys.stderr)
    sys.exit(1)

# 3. リサーチ担当エージェントが使用するツールの定義
def fetch_tech_trends(topic: str) -> str:
    """指定された技術トピックに関する最新動向データを取得するツール。

    Args:
        topic (str): 調査したい技術テーマ名 (例: 'AIエージェント')

    Returns:
        str: 取得された検索結果データ
    """
    return f"【検索結果】{topic}分野では、1.複数AIによるマルチエージェント連携 2.軽量モデル(SLM)の活用 が主要トレンドです。"

async def main():
    api_key = os.environ.get("GEMINI_API_KEY")
    if not api_key:
        print("エラー: GEMINI_API_KEY が設定されていません。.env ファイルを確認してください。", file=sys.stderr)
        return

    print("--- マルチエージェント(複数AI協調)の処理を開始します ---\n")
    user_prompt = "最新のAIエージェントのトレンドについて調査し、分かりやすいまとめを作成してください。"
    print(f"ユーザーの指示: {user_prompt}\n")

    # 4. 【エージェント1】リサーチ専門エージェント(調査担当AI)の設定
    research_config = LocalAgentConfig(
        system_instructions=(
            "あなたは技術調査専門のAIリサーチ担当です。"
            "ツール(fetch_tech_trends)を活用して事実データを収集し、ファイル作成を行わずに直接テキストで結果を出力してください。"
        ),
        tools=[fetch_tech_trends],
        model="gemini-3.1-flash-lite"
    )

    # 5. 【エージェント2】編集・ライター専門エージェント(仕上げ担当AI)の設定
    writer_config = LocalAgentConfig(
        system_instructions=(
            "あなたはIT専門のライターエージェントです。"
            "リサーチ担当から渡された調査結果を整理・装飾し、ファイル作成やアーティファクト出力は行わずに、"
            "直接見出しや太字を含む綺麗なテキスト形式で報告レポートを出力してください。"
        ),
        model="gemini-3.1-flash-lite"
    )

    # Step 1: リサーチ専門エージェントを起動して情報収集させる
    print("=== [1. リサーチ専門エージェントが調査を実行中...] ===")
    async with Agent(research_config) as research_agent:
        res_raw = await research_agent.chat(user_prompt)
        research_result = await res_raw.text()
        print(f"(リサーチ担当の出力結果):\n{research_result}\n")

    # Step 2: 収集された結果を編集専門エージェントへバトンタッチし、最終レポートを作成させる
    print("=== [2. 編集・ライター専門エージェントが仕上げを実行中...] ===")
    async with Agent(writer_config) as writer_agent:
        writer_prompt = f"以下のリサーチ結果を基に、読者向けの解説レポートを作成してください:\n\n{research_result}"
        res_final = await writer_agent.chat(writer_prompt)
        
        print("--- [最終的なマルチエージェント回答] ---")
        print(await res_final.text())

# 6. 非同期処理の起動トリガー
if __name__ == "__main__":
    asyncio.run(main())

プログラムコードの詳細解説

今回作成したマルチエージェントプログラムの仕組みについて解説します。

  • 1〜2. ライブラリ読み込みと安全対策
    from google.antigravity import Agent, LocalAgentConfig を使用してモジュールを読み込みます。dotenvGEMINI_API_KEY を安全に取得します。
  • 3. ツールの定義とDocstring
    リサーチエージェント専用のツール fetch_tech_trends を定義し、Docstringと型ヒントでAIへ仕様を伝えます。
  • 4〜5. 異なる専門性を持つ2つの LocalAgentConfig とテキスト出力指定
    research_config(ツールを所有する調査専門AI)と writer_config(文章装飾とレポート化に特化したライターAI)という、目的の異なる2つの設定を作成します。
    system_instructions 内に「ファイル作成やアーティファクト出力は行わずに直接テキストで出力する」旨を明記することで、AIが意図せずにファイル保存ツールを誤呼び出しして警告ログが発生する現象を防止しています。
  • Step 1 & Step 2. エージェント間のバトンリレー処理
    1つ目のエージェントが収集した生データ(research_result)を受け取り、2つ目のエージェントのプロンプトに組み込んで対話(chat())を実行することで、人間のチームのような自律連携が実現します。

プログラムの実行手順と動作確認

実際に手元の環境でプログラムを動かす手順です。

手順1. パッケージの準備とAPIキー設定

既にパッケージインストール等が完了していれば不要です。

# 仮想環境の有効化
source .venv/bin/activate

# パッケージのインストール
pip install google-antigravity python-dotenv

# APIキーの設定 (.env ファイルを作成)
echo "GEMINI_API_KEY=YOUR_GEMINI_API_KEY_HERE" > .env

手順2. プログラムの実行

% python3 multi_agent_demo.py
--- マルチエージェント(複数AI協調)の処理を開始します ---

ユーザーの指示: 最新のAIエージェントのトレンドについて調査し、分かりやすいまとめを作成してください。

=== [1. リサーチ専門エージェントが調査を実行中...] ===
(リサーチ担当の出力結果):
最新のAIエージェントに関する主なトレンドをまとめました。現在は、単一のモデルで複雑なタスクをこなすだけでなく、複数のモデルを最適に組み合わせ、かつ効率的に実行する方向へ進化しています。

### 1. マルチエージェントによる連携 (Multi-Agent Systems)
一つの巨大なモデルに全てを任せるのではなく、役割分担された複数のAIエージェントが連携してタスクを遂行するアーキテクチャが主流になりつつあります。
*   **専門化:** 「コーディング担当」「リサーチ担当」「レビュー担当」のように特定の専門性を持つエージェントを構成することで、複雑なワークフローを高精度に管理します。
*   **自律的協力:** 各エージェントが相互に情報をやり取りし、必要に応じて軌道修正を行いながらゴールを目指すため、人間が細かく指示を出さなくても複雑な案件が完了します。

### 2. 軽量モデル(SLM: Small Language Models)の活用
計算リソースとコストの最適化を目的として、用途に応じた小規模な言語モデルの利用が急速に広がっています。
*   **エッジ実行:** デバイス内(オンデバイス / ローカル環境)で動作可能な軽量モデルをエージェントに組み込むことで、プライバシーの保護や高速処理が可能になりました。
*   **コスト削減:** 全てのプロセスを高性能な大規模モデルで行うのではなく、単純な判断やルーチンワークはSLMに任せ、難しい推論が必要な時だけLLMを呼び出すハイブリッドなアプローチが増えています。

---
現在はこれらの技術を組み合わせ、**「より賢く、より速く、より安く」**タスクを完遂できるエージェントシステムの実装が加速しています。

=== [2. 編集・ライター専門エージェントが仕上げを実行中...] ===
--- [最終的なマルチエージェント回答] ---
# AIエージェントの進化:マルチエージェントと軽量モデルで実現する「賢く、速く、安い」自動化の最前線

現在のAI界隈において、AIエージェントのあり方が劇的な変革期を迎えています。かつてのように「一つの巨大なAIモデルに何でもさせる」という手法から、複数のモデルを最適に組み合わせ、効率を極限まで高めるアーキテクチャへとトレンドは移行しました。

本レポートでは、現在進行形で進むAIエージェントの主要トレンドについて解説します。

### 1. マルチエージェントによる連携 (Multi-Agent Systems)

現代のAIエージェントシステムでは、単機運用からチーム編成への転換が加速しています。一つの大規模なモデルにすべての責任を負わせるのではなく、人間のような「組織」を構築するアプローチが主流です。

*   **専門分化による高精度化**
    「コーディング」「市場調査」「リサーチ」「品質レビュー」など、エージェントごとに特定の専門性を持たせます。各エージェントがその道のエキスパートとして振る舞うことで、複雑なワークフローでも従来とは比較にならない高精度なアウトプットを実現します。
*   **自律的な協調体制**
    エージェント同士が相互に情報を共有し、進捗に応じて自律的に軌道修正を行います。人間がプロセスの間に立って細かく指示を出さずとも、設定されたゴールに向かってチームとしてタスクを遂行していく「自律的ガバナンス」が大きな強みです。

### 2. 軽量モデル (SLM) の活用による最適化

計算リソースの肥大化という課題に対し、SLM(Small Language Models:小規模言語モデル)を柔軟に組み込む動きも急速に広がっています。

*   **エッジ実行とプライバシー保護**
    軽量モデルをデバイス内(オンデバイス/ローカル環境)に組み込むことで、インターネットを介さない高速処理や、高いプライバシー保護を実現しています。AIの動作をより身近なデバイスへと浸透させる重要な鍵となっています。
*   **コスト効率重視のハイブリッドアプローチ**
    すべてのプロセスに高性能かつ高コストな大規模モデル(LLM)を投入するのではなく、単純な判断や定型業務はSLMに任せ、高度な推論が必要な局面のみLLMを呼び出す「適材適所」の分散処理が定着しています。これにより、パフォーマンスを維持しながら大幅な運用コスト削減が可能になりました。

### おわりに

現在のAIエージェント開発は、これらの技術を統合し、**「より賢く、より速く、より安く」**タスクを完遂するシステムを目指すフェーズに入っています。AIは単なる「賢い回答者」から、自律的にチームを組み、リソースを最適化しながら目標に向かって走る「実務的なパートナー」へと進化を遂げているのです。

1つ目のリサーチAIが検索ツールを自律的に呼び出して生の検索結果を取得し、2つ目のライターAIがそのデータを受け取ってプロの見やすい見出し・装飾付きレポートへ仕上げるという、「チーム連携」が確認できます!

開発時の注意点

マルチエージェント構成を実装する際の注意点です。

① ファイル保存機能(アーティファクト)の誤呼び出し対策

AIエージェントが気を利かせて「レポートをファイルとして保存しよう」と自発的に書き込みツールを呼び出そうとした際、保存先のパス制限(invalid artifact path)によって警告ログ(WARNING:root:System step error...)が出力される場合があります。パス制限とは、AIエージェントがパソコン内のあらゆる場所(デスクトップ、ルートディレクトリ、システムフォルダ等)に自由にファイルを書き込めてしまうと、既存の重要ファイルを上書きしてしまう事故やセキュリティ上のリスクを防止するためのものです。結果をファイルではなく直接テキストとして受け取りたい場合は、システム指示(system_instructions)内に「ファイル作成を行わずに直接テキストで回答してください」と明記しておくことをお勧めします。

② 役割(system_instructions)の明確化

各エージェントの system_instructions に「あなたは〜担当です。〜の出力を〜してください」と役割を明確に指示することが重要です。役割が被っていると、エージェント間で同じ処理を重複して行なってしまう原因になります。

③ APIリクエスト数とトークン消費の増加

複数エージェントを連続して起動するため、単一エージェントよりもAPI呼び出し回数が増加します。テスト時は gemini-x.x-flash-lite などの軽量・高速モデルを指定して開発することをお勧めします。

まとめ

今回は、Google Antigravity SDKを使った「マルチエージェント(複数AI協調)構成」のプログラムを検証しました。

「調査」と「執筆」のようにエージェントの専門性を分けることで、1つのエージェントにすべてを任せるよりも高品質な成果物が得られることが分かりました。皆さんもぜひ目的別のAIエージェントチームを組んで自動化に挑戦してみてください!

コメント

タイトルとURLをコピーしました