Google Agent Development Kit (ADK)を使用したPythonベースのAIエージェント開発プロジェクトです。
このプロジェクトは、Google ADKを活用して、インテリジェントなAIエージェントを開発するためのテンプレートとベストプラクティスを提供します。しりとりゲームを例として、エージェントの設計、実装、テストの方法を示しています。
- 🤖 Google ADKを使用した高度なAIエージェント
- 🧪 包括的なテストスイート(ユニット、統合、E2Eテスト)
- 📝 完全な日本語ドキュメント
- 🔧 開発環境のセットアップが簡単
- 📊 コードカバレッジレポート
- 🎯 ベストプラクティスに基づいた設計
git clone https://github.com/charoro/agent_shiritori.git
cd agent_shiritoripython -m venv venv
source venv/bin/activate # Linux/Mac
# または
venv\Scripts\activate # Windowspip install -r requirements.txt
pip install -r requirements-dev.txt.envファイルを作成して、Google APIキーを設定します:
echo "GOOGLE_API_KEY=your_api_key_here" > .env
echo "GOOGLE_PROJECT_ID=your_project_id" >> .envpytest詳細なプロジェクト構造とファイルの説明は、AGENTS.mdを参照してください。
agent_shiritori/
├── src/ # ソースコード
│ ├── agents/ # エージェント実装
│ ├── models/ # データモデル
│ ├── services/ # 外部サービス連携
│ └── config/ # 設定管理
├── tests/ # テストコード
│ ├── unit/ # ユニットテスト
│ ├── integration/ # 統合テスト
│ └── e2e/ # E2Eテスト
└── examples/ # 使用例詳細な開発ガイドはAGENTS.mdを参照してください。以下は基本的なワークフローです:
from src.agents.base_agent import BaseAgent
class MyAgent(BaseAgent):
async def process(self, input_data):
# エージェントのロジックを実装
return {"result": "処理結果"}import pytest
from src.agents.my_agent import MyAgent
@pytest.mark.asyncio
async def test_my_agent():
agent = MyAgent(name="TestAgent")
result = await agent.process({"input": "test"})
assert result["result"] == "処理結果"このプロジェクトには、2つのAIエージェント(ノエルとフレア)がA2Aプロトコルを使って日本語のしりとりゲームを行うデモが含まれています。
python shiritori_game.py# 最大ターン数を30に設定
python shiritori_game.py --max-turns 30
# タイムアウトを15秒に設定
python shiritori_game.py --timeout 15.0
# エージェント名をカスタマイズ
python shiritori_game.py --agent1-name "太郎" --agent2-name "花子"
# すべてのオプションを組み合わせ
python shiritori_game.py --max-turns 50 --timeout 20.0 --agent1-name "Alice" --agent2-name "Bob".envファイルで設定を管理することもできます:
# .envファイルに追加
SHIRITORI_MAX_TURNS=30
SHIRITORI_TIMEOUT=15.0
AGENT1_NAME=太郎
AGENT2_NAME=花子
SAVE_GAME_LOG=true # ゲームログをJSONファイルに保存- ノエルが最初の単語を発言します
- フレアがその単語の最後の文字で始まる単語を返します
- 交互に単語を発言し続けます
- 以下の場合にゲームが終了します:
- 「ん」で終わる単語を言った場合(負け)
- 3分以内に応答できなかった場合(負け)
- 既に使用済みの単語を使った場合(負け)
- 最大ターン数に達した場合(引き分け)
# すべてのテストを実行
pytest
# カバレッジレポート付きで実行
pytest --cov=src --cov-report=html
# 特定のテストのみ実行
pytest tests/unit/
# 詳細な出力で実行
pytest -v# コードフォーマット
black src/ tests/
# リント
flake8 src/ tests/
# 型チェック
mypy src/- AGENTS.md - 開発ガイドとベストプラクティス
docs/architecture.md- アーキテクチャ設計(作成予定)docs/api_reference.md- APIリファレンス(作成予定)
- Python 3.10以上
- Google Cloud アカウント
- Google API Key
MIT License
プルリクエストを歓迎します。大きな変更の場合は、まずIssueを開いて変更内容を議論してください。
問題や質問がある場合は、Issueを作成してください。
開発者: charoro
- 2026-02-10: プロジェクト初期セットアップ