ADK エージェント用の LiteLLM モデルコネクター¶
ADKでサポートPython v0.1.0
LiteLLM は、モデルとモデルホスティングサービスのための 変換レイヤーとして機能する Python ライブラリで、100 以上の LLM に対して 標準化された OpenAI 互換インターフェースを提供します。 ADK は LiteLLM を介して、OpenAI、Anthropic(非 Vertex AI)、Cohere など多数の プロバイダーの幅広い LLM にアクセスできます。 Open-source モデルをローカルで実行したり、セルフホストして運用制御・コスト最適化・ プライバシー保護・オフライン利用へ活用できます。
LiteLLM ライブラリを使うことで、リモートまたはローカルでホストされた AI モデルに接続できます。
- リモートモデルホスト:
LiteLlmラッパークラスを使用し、LlmAgentのmodelパラメータとして設定します。 - ローカルモデルホスト: ローカルモデルサーバーを参照するように設定された
LiteLlmラッパークラスを使用します。ローカルホスティング例は Ollama や vLLM のドキュメントを参照してください。
LiteLLM の Windows 文字エンコーディング
ADK エージェントを Windows で LiteLLM と一緒に使う場合、UnicodeDecodeError が発生する可能性があります。
これは LiteLLM が cp1252 など既定の Windows エンコーディングで
キャッシュファイルを読み込もうとすることが原因です。PYTHONUTF8 環境変数を 1 に設定すると、
Python のすべてのファイル I/O が UTF-8 で処理され、エラーを防げます。
例(PowerShell):
セットアップ¶
- LiteLLM のインストール:
-
プロバイダー API キーの設定: 使用するプロバイダーの API キーを環境変数として設定します。
-
OpenAI の例:
-
Anthropic(非 Vertex AI)の例:
-
その他のプロバイダーについては LiteLLM Providers ドキュメント に従って適切な環境変数名を確認してください。*
-
実装例¶
from google.adk.agents import LlmAgent
from google.adk.models.lite_llm import LiteLlm
# --- Example Agent using OpenAI's GPT-4o ---
# (Requires OPENAI_API_KEY)
agent_openai = LlmAgent(
model=LiteLlm(model="openai/gpt-4o"), # LiteLLM model string format
name="openai_agent",
instruction="You are a helpful assistant powered by GPT-4o.",
# ... other agent parameters
)
# --- Example Agent using Anthropic's Claude Haiku (non-Vertex) ---
# (Requires ANTHROPIC_API_KEY)
agent_claude_direct = LlmAgent(
model=LiteLlm(model="anthropic/claude-3-haiku-20240307"),
name="claude_direct_agent",
instruction="You are an assistant powered by Claude Haiku.",
# ... other agent parameters
)
## Anthropic 思考ブロック (Anthropic thinking blocks)
<div class="language-support-tag">
<span class="lst-supported">ADKでサポート</span><span class="lst-python">Python v1.28.0</span>
</div>
`LiteLlm` コネクタを介して Anthropic Claude モデル(Claude 3.7 Sonnet など)を使用する場合、ADK は「思考ブロック(thinking blocks)」と呼ばれる Anthropic の構造化された推論機能をサポートします。ADK は自動的に `thinking_blocks` とその署名(signature)を抽出します。
Anthropic は、マルチターン会話においてこれらの署名を送り返すことを要求します。そうしないと、最初のターン以降の思考がサイレントにドロップされます。ADK は各送信要求において署名付きの `thinking_blocks` を再構築するため、カスタムの状態管理を行わなくても、ツール呼び出しやマルチターン対話全体で Claude の推論が維持されます。