nikkie-ftnextの日記

イベントレポートや読書メモを発信

Agent Development Kit で Cloud Trace にトレースしながら、エージェントを動かす

はじめに

七尾百合子さん、お誕生日 143日目 おめでとうございます! nikkieです。

Agent Development Kit (ADK) のObservabilityのドキュメントに沿って手を動かしました。

目次

「Agent Observability with Cloud Trace」

google.github.io

ADKで構築したエージェントのトレースを、Google Cloudのサービス「Cloud Trace」に記録します。
といっても大掛かりな準備は必要なく

これだけです。

% GOOGLE_CLOUD_PROJECT=<プロジェクト名> uvx --from google-adk adk web --trace_to_cloud

サンプルの YouTube Shorts エージェントを動かす

AgentToolを使ったバージョンを動かします。

モデルの指定を最新化しました

「write me a script on how to build AI agents」

Cloud Trace

Web UIのTraceの情報ですね(左のメニューからEventsタブ)

Cloud Traceには無料枠があります。
このブログの内容は無料の範囲で試せるでしょう。
https://cloud.google.com/stackdriver/pricing?hl=ja

毎月の無料割り当て量
請求先アカウントあたり最初の 250 万スパン

opentelemetry-exporter-gcp-trace

--trace_to_cloudオプションの指定だけでCloud Traceが有効になるのは、Googleが実装してくれているからです。
使われているパッケージが、opentelemetry-exporter-gcp-trace1

https://pypi.org/project/opentelemetry-exporter-gcp-trace/

実装抜粋
https://github.com/google/adk-python/blob/v1.9.0/src/google/adk/cli/fast_api.py#L200-L203

from opentelemetry.sdk.trace import export
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter

def register_processors(provider: TracerProvider) -> None:
    processor = export.BatchSpanProcessor(
        CloudTraceSpanExporter(project_id=project_id)
    )
    provider.add_span_processor(processor)

extra_fast_api_args.update(
    register_processors=register_processors,
)

これで、gcp.vertex.agent.llm_requestgcp.vertex.agent.llm_responseを含めてトレースされているという理解です(もっと知るにはexporterの実装が積ん読

宿題事項

gcp.vertex.agent.llm_requestgcp.vertex.agent.llm_responseテキスト全体を見る方法はあるのかな?
Cloud Traceの「Details」では何百文字かで切れている印象

もっというとLLMへのプロンプト全体をトレースする方法はあるのでしょうか?
LLM APIの呼び出しについて、全てを手に取るように把握したいんです!
google-genaiではできていたのですが、果たして

終わりに

ADKのドキュメントに見つけた--trace_to_cloudオプションで、簡単にCloud Traceにトレースを記録できました。
この簡単さ、LangSmithみたいですね。

私がほしいトレースはデフォルトのものよりももう少し詳しいものなので、素振りの余地を残しています