【調査レポ5】Google Antigravity SDKの核!Agent と LocalAgentConfig の設定パラメータを調査

Antigravity SDK入門 AI

これまでの調査レポ1(環境構築)、レポ2(Tool Use)、レポ3(会話記憶)、レポ4(マルチエージェント)を通じて、Google Antigravity SDKを使った自作AIエージェントの開発手順を体験してきました。

今回は設定リファレンスとして、これまで毎回コードに登場してきたSDKのクラスである「Agent」「LocalAgentConfig」のパラメータ、そして毎回使っている「async / await(非同期処理)」の仕組みについて深く掘り下げていきます!

「どのような設定項目が用意されているのか」「実用的なツールはどう作成すればいいのか」を整理することで、より本格的なエージェント開発が進められるようになります。

Agent と LocalAgentConfig の基本構造

Google Antigravity SDK では、エージェントの挙動を定義する「設計図(LocalAgentConfig)」と、実際にAIと対話して処理を実行する「実行体(Agent)」の役割が明確に分離されています。

  • LocalAgentConfig(設計図)
    「どのような役割か」「どんなツールを使えるか」「どのAIモデルを使うか」「どのスキルの知識を読み込むか」といった設定情報を1つのオブジェクトにまとめます。
  • Agent(実行体)
    設定オブジェクト(LocalAgentConfig)を読み込み、非同期コンテキストマネージャー(async with Agent(config) as agent:)を通じてAIとの通信やツール呼び出しを安全に制御します。

LocalAgentConfig の設定パラメータ一覧

SDKのクラス定義(inspect.signature(LocalAgentConfig))に基づく設定パラメータの一覧です。よく使う基本設定と、システム開発で活用されるパラメータに分類して整理しました。

1. 基本・主要設定パラメータ

  • system_instructions(型:文字列 str 等)
    AIの役割・キャラクター・回答制約を指示する文章。(登場:調査レポ1・4)
  • tools(型:関数リスト list)
    AIが自律的に選択して呼び出せる複数ツールの配列。実際の演算処理などを行うPython関数を登録できます。(登場:調査レポ2・5)
  • model / models(型:文字列 str / リスト list)
    使用するGeminiモデル名(gemini-3.1-flash-lite など)またはフォールバック用の複数モデルリスト。(登場:調査レポ4)
  • save_dir(型:パス文字列 str)
    会話履歴データを自動保存するフォルダパス。(登場:調査レポ3)
  • conversation_id(型:識別文字列 str)
    過去の対話履歴を復元・継続するための識別ID。(登場:調査レポ3)
  • skills_paths(型:パスのリスト list)
    外部のナレッジやプロンプト手順書が入ったディレクトリのパス(例: ["./my_skills"])を読み込む機能。(詳細後述)

2. 高度な応用・システム制御設定パラメータ

  • response_schema(型:辞書 dict / Pydanticモデル / str)
    AIの出力を特定のJSONフォーマットや型構造に固定する設定。
  • subagents(型:設定リスト list)
    親エージェントの設定内に配下のサブエージェント設定を一括埋め込みし、自動タスク委譲させる設定。
  • hooks / policies(型:リスト list / ポリシー制御)
    エージェントの開始時やツール実行前後にPythonコードを割り込ませるフックおよび安全ポリシー設定。
  • capabilities(型:CapabilitiesConfig)
    エージェントの権限やアクセス機能制限を設定するパラメータ。
  • triggers(型:リスト list)
    特定のイベントや条件発生時にエージェントを自動起動させるトリガー設定。
  • mcp_servers(型:リスト list)
    MCP(Model Context Protocol)サーバーとの外部通信接続設定。
  • workspaces / app_data_dir(型:リスト list / パス文字列)
    操作を許可するファイル領域やアプリケーション専用データ領域の指定。
  • api_key / vertex / project / location(型:環境認証パラメータ)
    Gemini APIキーや Google Cloud(Vertex AI)環境の個別認証パラメータ設定。

response_schema(構造化データ出力)や subagents(自動サブエージェント委譲)、hooks(イベントフック)などのパラメータについては、今後の調査レポシリーズで動作検証をしたいと思っています!

主要パラメータを網羅した実用Pythonコード(agent_config_demo.py)

日常開発で主に使用する主要設定パラメータ(system_instructions, tools, model など)を組み込んだ実践的なサンプルコードです。ツール側でダミー値を返すのではなく、Pythonの標準ライブラリ(datetime)を使った実際の「現在日時取得」や、「割引額・節約額の演算処理」を行います。

import os
import sys
import asyncio
from datetime import datetime

# 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. 【実用ツール1】実際のシステム日時・現在時刻を取得する関数
def get_current_datetime() -> str:
    """現在の実際の年月日、時刻、曜日を取得するツール。

    Returns:
        str: フォーマットされた現在日時テキスト (例: '2026年07月28日 09時20分 (火曜日)')
    """
    now = datetime.now()
    weekdays = ["月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"]
    weekday_str = weekdays[now.weekday()]
    return now.strftime(f"%Y年%m月%d日 %H時%M分 ({weekday_str})")

# 3. 【実用ツール2】割引計算を実際に計算処理する関数
def calculate_discount(original_price: int, discount_rate: float) -> str:
    """商品の元値と割引率から、割引後の最終価格と節約金額を実際に計算するツール。

    Args:
        original_price (int): 元の価格(円)
        discount_rate (float): 割引率(%表記。例: 20%割引の場合は 20)

    Returns:
        str: 割引計算結果テキスト
    """
    discount_amount = int(original_price * (discount_rate / 100))
    final_price = original_price - discount_amount
    return f"元値: {original_price:,}円 / 割引率: {discount_rate}% ➔ 割引後の価格: {final_price:,}円 (節約額: {discount_amount:,}円)"

# 4. 非同期メイン関数(async def)
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("--- 実用ツール&LocalAgentConfig 詳細デモを開始します ---\n")

    # 5. LocalAgentConfig の設定(実用ツールの配列登録・モデル・スキルの指定)
    config = LocalAgentConfig(
        system_instructions=(
            "あなたは優秀な計算・日時案内アシスタントです。"
            "必要に応じて登録ツール(get_current_datetime, calculate_discount)を活用し、"
            "ファイル作成を行わずに直接テキストで分かりやすく回答してください。"
        ),
        tools=[get_current_datetime, calculate_discount],  # 実用関数を配列で登録
        model="gemini-3.1-flash-lite",
        # skills_paths=["./my_skills"]  # 外部スキルフォルダを読み込む場合は配列指定
    )

    # 6. ユーザーからの質問
    user_prompt = "現在の時刻を教えてください。また、15,800円の服が 15% 割引になっている場合、いくらになりますか?"
    print(f"ユーザーの指示: {user_prompt}\n")

    # 7. Agent の非同期制御 (async with & await)
    async with Agent(config) as agent:
        response = await agent.chat(user_prompt)
        print("--- [AIからの回答] ---")
        print(await response.text())

# 8. Python非同期イベントループの起動トリガー
if __name__ == "__main__":
    asyncio.run(main())

なぜ必要? async と await(非同期処理)の仕組み解説

コード内に毎回登場する async defawait は、Pythonで「非同期処理(Async I/O)」を行うための構文です。Antigravity SDK でこれが必須となっている理由と仕組みについて解説します。

① 同期処理と非同期処理の違い

普通のPythonコード(同期処理)では、インターネット経由でAI APIを呼び出している間、プログラム全体が停止(ブロック)してしまいます。これに対し非同期処理(async/await)を使うと、「AIからの返答を通信待ちしている間も、画面の描画や他の処理を止めることなく効率的に並行処理できる」という大きなメリットが得られます。

② 各キーワードの役割

  • async def main():
    「この関数の中では時間の懸かる通信処理などを非同期で扱います」と宣言する記述です。
  • await agent.chat(prompt):
    「AIとの通信結果が返ってくるまで、ここで一旦処理を待機します」と明示する記述です。await を付け忘れると、結果を受け取る前にプログラムが先走ってエラーになるため注意が必要です。
  • async with Agent(config) as agent:
    通信の開始から終了までの接続(セッション)を安全に確保し、処理が終わったら自動的に通信リソースを解放してくれます。
  • asyncio.run(main()):
    Pythonの非同期イベントループを起動し、async def main() を安全にスタートさせるトリガーです。

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

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

手順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 agent_config_demo.py
--- 実用ツール&LocalAgentConfig 詳細デモを開始します ---

ユーザーの指示: 現在の時刻を教えてください。また、15,800円の服が 15% 割引になっている場合、いくらになりますか?

--- [AIからの回答] ---
現在は **2026年07月28日 10時14分 (火曜日)** です。

15,800円の服が15%割引になった場合、価格は以下の通りです。

*   **割引後の価格:** 13,430円(2,370円お得です)

AIが質問を分析し、「日時取得ツール」と「割引計算ツール」の2つを自律的に呼び出して、正確な計算結果と現在時刻を返していることが確認できます!

開発時の注意点

エージェントの設定パラメータを扱う際、特に注意したいポイントです。

① 指示文(system_instructions)と Docstring の役割分担

system_instructions には「全体の性格や回答フォーマットの制約」を書き、各ツールの具体的な使い方や引数の説明は関数の「Docstring」に記述するのが推奨されます。役割を分けることでAIの混乱を防ぐことができます。

② 開発・テスト時のモデル選定(レート制限対策)

model パラメータに大型モデルを指定して連続テストを行うと、APIのレート制限(RPM制限)にすぐに到達する場合があります。開発・検証段階では gemini-3.1-flash-lite などの軽量・高速モデルを指定して開発を進めるのが効果的です。

③ アーティファクト保存先のパス制限(invalid artifact path)

AIが自発的にファイルを作成しようとした際、所定外のパスを指定して警告ログが出力されるケースがあります。テキストで結果を受け取りたい場合は、system_instructions 内に「ファイル作成を行わずに直接テキストで回答してください」と明記しておくことをお勧めします。

まとめ

今回は、Google Antigravity SDKの核心である「Agent」と「LocalAgentConfig」の設定パラメータ、そして async/await の非同期処理の仕組みについて調査しました。

日常の開発では主要パラメータを押さえておけば十分機能しますが、今後取り上げる予定の「構造化データ出力」や「完全自動サブエージェント委譲」、「ライフサイクルフック」といった高度な設定を組み合わせることで、さらに強力なシステムを構築できます。ぜひ本記事の設定一覧を参考に、自作AIエージェント開発に挑戦してみてください!

コメント

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