Open24

Google ADK

Takashi KawachiTakashi Kawachi

まずは https://google.github.io/adk-docs/get-started/ に沿って手馴し。

% pip install google-adk

% pip show google-adk
Name: google-adk
Version: 0.4.0
Summary: Agent Development Kit
Home-page:
Author:
Author-email: Google LLC <googleapis-packages@google.com>
License:
Location: /Users/kawachi/gitworks/adk-quickstart/.venv/lib/python3.9/site-packages
Requires: google-cloud-storage, opentelemetry-sdk, click, google-cloud-secret-manager, sqlalchemy, PyYAML, pydantic, google-api-python-client, opentelemetry-exporter-gcp-trace, graphviz, tzlocal, python-dotenv, google-cloud-aiplatform, fastapi, google-genai, google-cloud-speech, opentelemetry-api, authlib, uvicorn
Required-by:
Takashi KawachiTakashi Kawachi

入力欄でかな漢字変換の確定でフォームが送信されてしまう。海外産あるある。

Takashi KawachiTakashi Kawachi

model を変えると音声でやり取りもできる。自然な話し声(英語)。

日本語でも受け答えしてくれた。不自然だが。私がわかっていないだけで英語も実は不自然なのかも?

    model="gemini-2.0-flash-live-001",
    # model="gemini-2.0-flash",
Takashi KawachiTakashi Kawachi

https://google.github.io/adk-docs/get-started/quickstart-streaming/#4.-try-it-adk-web の例。

from google.adk.tools import built_in_google_search  # Import the tool

from google.adk.tools import google_search  # Import the tool

でないと動かなかった。

Takashi KawachiTakashi Kawachi

FastAPI から呼び出す例も載ってる。

websocket で接続がきたら

  1. session 作って
  2. runner 作って
  3. run_live() で イベント読み込み側と書き込みキューを作成

あとは websocket で受け取ったら書き込んで、読み込んで返す感じ。

Takashi KawachiTakashi Kawachi

Q. ADK の built in tool には何があるのか?

Takashi KawachiTakashi Kawachi

Limitation 結構きつい。

  • root agent から複数の built-in tool を使えない。 google_search と built_in_code_execution を同時に使うとかはできない。
  • sub agents の中で built-in tool を使えない。

agent_tool の例にあるように、 sub_agents ではなく tools として sub agent を使ってあげれば、複数の built in tool を使い分けることはできそう。

Takashi KawachiTakashi Kawachi

agent → sub agent as a tool → tool という呼び出しにになったときに、sub agent の動きは adk web の console からトレースできない様子。
うーむ。

Takashi KawachiTakashi Kawachi

https://google.github.io/adk-docs/get-started/testing/ ローカルでの動作確認。

API アクセスをローカルで試す方法が書かれているようだ。

Takashi KawachiTakashi Kawachi

先程の google_search_agent を呼び出してみる。

できる。

% curl -X POST http://0.0.0.0:8000/apps/google_search_agent/users/u_123/sessions/s_123 \
  -H "Content-Type: application/json" \         
  -d '{"state": {"key1": "value1", "key2": 42}}'
{"id":"s_123","app_name":"google_search_agent","user_id":"u_123","state":{"state":{"key1":"value1","key2":42}},"events":[],"last_update_time":1746316715.234047}%                                                                                         
% curl -X POST http://0.0.0.0:8000/run \
-H "Content-Type: application/json" \
-d '{
"app_name": "google_search_agent",
"user_id": "u_123",
"session_id": "s_123",
"new_message": {
    "role": "user",
    "parts": [{
    "text": "ここ1週間で出た注目すべきソフトウェア開発系のツールをまとめて"
    }]
}
}'
[{"content":{"parts":[{"text":"どのようなツールに興味がありますか?例えば、特定のプログラミング言語、フレームワーク、あるいは開発プロセス(テスト、デプロイなど)に関係するツールに絞って調べることができます。もし特に希望がなければ、一般的なソフトウェア開発で役立ちそうなものを探します。\n\n"},{"text":" ここ1週間で発表された注目すべきソフトウェア開発ツールをまとめました。\n\n*   **AI テスティングツール:** NTTデータ オートモビリジェンス研究所は、車載ソフトウェア開発の効率化と品質向上に寄与するAIテスティングツール「ZIPC MLTEST Test Viewpoint」をリリースしました。これは、AIを活用してテスト項目やテスト観点を自動抽出し、テストプロセスの高速化と品質向上に貢献するものです。\n\n*   **JetBrains AIアシスタント:** JetBrainsは、AIアシスタントと新しいコーディングエージェントJunieをIDEに統合し、無料枠付きのシングルサブスクリプションモデルで提供を開始しました。\n\n*   **Android Studio向けGemini AIツール:** Googleは、Android Studioにエンタープライズ向けの新しいGemini AIツールを導入し、プライバシー、セキュリティ、管理のニーズに対応します。\n\n*   **AIデバッグツール:** Microsoft Researchは、AIコーディングツールをトレーニングするための新しい環境「debug-gym」を発表しました。\n\n*   **Vision Proサポート:** Appleは、GodotゲームエンジンへのVision Proヘッドセットの公式サポートを開始しました。\n\n*   **SnykのDASTソリューション:** Snykは、AIを活用したソフトウェア開発向けに設計された新しい動的アプリケーションセキュリティテスト(DAST)ソリューションを発表しました。\n\n*   **GitHub Copilotの拡張機能:** GitHub Copilotは、Microsoftとサードパーティのパートナーによって開発された拡張機能をプライベートプレビューとして提供開始しました。これにより、開発者はGitHub Copilot Chat内で直接、Azure、Docker、Sentryなどのサービスを利用できるようになります。\n\nこれらのツールは、AIを活用して開発プロセスを効率化したり、セキュリティを強化したり、新しいプラットフォームへの対応を支援したりするなど、さまざまな目的で使用できます。\n"}],"role":"model",<略>"invocation_id":"e-23553136-db7d-4d17-94a5-f2684d0ea90e","author":"basic_search_agent","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{}},"id":"EEUSqboL","timestamp":1746316788.521107}]%  
Takashi KawachiTakashi Kawachi

検索は google_search built in tool でいいとして、ページの内容を読み込めるようにしたいな。

JS とかを考えると https://github.com/apify/crawlee とかがいいんだろうか。

普通に playwright MCP server でもいいか。
以前試したときは大きなページを読み込むと LLM が context window 溢れを起こしてしまうようだったので、なにか工夫が必要か。

Takashi KawachiTakashi Kawachi

arun() の config で markdown_generator を渡すことで、雑音を取り除けそうだが、既存のサンプルが思ったように動かないな。。

fit_html が空文字になっている。