Anthropic (adk-anthropic)
adk-anthropic crate は、ADK-Rust 向けの専用 Anthropic API クライアントです。ストリーミング、拡張思考、プロンプトキャッシング、引用、ビジョン、PDF 処理、トークン価格設定を含む、Anthropic Messages API の完全な機能面に直接アクセスできます。
アーキテクチャ
adk-anthropic は、Anthropic アダプター経由で adk-model をラップする独立したクライアント crate です。低レベルの API アクセスには直接使用でき、または統一された Llm trait のために adk-model を通して使用できます。
┌─────────────┐ ┌───────────────┐ ┌──────────────┐
│ Your Code │────▶│ adk-model │────▶│adk-anthropic │────▶ Anthropic API
│ │ │ (Llm trait) │ │ (HTTP client)│
└─────────────┘ └───────────────┘ └──────────────┘
サポートされるモデル
| モデル | API ID | 注記 |
|---|---|---|
| Claude Opus 4.7 | claude-opus-4-7 | 最も高性能な GA モデル、1M コンテキスト、128K 出力、adaptive thinking のみ |
| Claude Opus 4.6 | claude-opus-4-6 | 以前のフラッグシップ、1M コンテキスト、128K 出力 |
| Claude Sonnet 4.6 | claude-sonnet-4-6 | 速度と知能のバランスが最良、1Mコンテキスト |
| Claude Haiku 4.5 | claude-haiku-4-5 | 最速、200Kコンテキスト |
| Claude Opus 4.5 | claude-opus-4-5 | 前世代 |
| Claude Sonnet 4.5 | claude-sonnet-4-5 | 前世代 |
| Claude Sonnet 4 | claude-sonnet-4-0 | レガシー(2026年6月に終了予定) |
| Claude Opus 4 | claude-opus-4-0 | レガシー(2026年6月に終了予定) |
セットアップ
API キーを設定してください:
export ANTHROPIC_API_KEY=sk-ant-...
直接のクライアント利用
use adk_anthropic::{Anthropic, KnownModel, MessageCreateParams};
let client = Anthropic::new(None)?; // reads ANTHROPIC_API_KEY
let params = MessageCreateParams::simple("Hello!", KnownModel::ClaudeSonnet46);
let response = client.send(params).await?;
adk-model 経由
use adk_model::anthropic::{AnthropicClient, AnthropicConfig};
let api_key = std::env::var("ANTHROPIC_API_KEY")?;
let model = AnthropicClient::new(AnthropicConfig::new(api_key, "claude-sonnet-4-6"))?;
カスタムのベース URL(ゲートウェイ、プロキシ、互換エンドポイント)
クライアントを別のエンドポイントに向けて、企業のプロキシや Messages-API 互換ゲートウェイ経由でルーティングします。ルート URL を /v1/ サフィックス なしで 指定してください。これは自動的に付加されます。AnthropicConfig::with_base_url のフローは adk-model を通じて基盤のクライアントへ渡されます:
use adk_model::anthropic::{AnthropicClient, AnthropicConfig};
let model = AnthropicClient::new(
AnthropicConfig::new(api_key, "claude-sonnet-4-6")
.with_base_url("https://gateway.internal/anthropic"),
)?;
または、低レベルのクライアントに直接設定し、base_url() で有効なエンドポイントを読み取ります:
use adk_anthropic::Anthropic;
let client = Anthropic::new(Some(api_key))?
.with_base_url("https://api.minimax.io/anthropic".to_string())?;
assert_eq!(client.base_url(), "https://api.minimax.io/anthropic");
未設定の場合、クライアントは Anthropic の公開 API(https://api.anthropic.com)を使用します。
with_base_url が Result を返すのは、クライアントが Anthropic の API キーをすべてのリクエストに付与するためです。受け付けられるのは https://、またはローカル開発用のループバックホスト(localhost、127.0.0.1、[::1])を使った http:// のみです。それ以外は、キーを平文で静かに送信するのではなく、検証エラーとして拒否されます。同じルールは AnthropicConfig::with_base_url にも適用され、AnthropicClient::new が基盤のクライアントを構築するときに検証されます。
主な機能
適応的思考(4.6+ モデル)
Opus 4.7 は 適応的思考のみ をサポートします — budget_tokens は拒否されます。
use adk_anthropic::{ThinkingConfig, OutputConfig, EffortLevel};
// Opus 4.7: use xhigh effort (recommended for coding/agentic)
let mut params = MessageCreateParams::simple("Solve this...", KnownModel::ClaudeOpus47)
.with_thinking(ThinkingConfig::adaptive());
params.output_config = Some(OutputConfig::with_effort(EffortLevel::XHigh));
// Sonnet 4.6: any effort level works
let mut params = MessageCreateParams::simple("Solve this...", KnownModel::ClaudeSonnet46)
.with_thinking(ThinkingConfig::adaptive());
params.output_config = Some(OutputConfig::with_effort(EffortLevel::High));
プロンプトキャッシュ
use adk_anthropic::CacheControlEphemeral;
let mut params = MessageCreateParams::simple("Question", KnownModel::ClaudeSonnet46)
.with_system("Large system prompt...");
params.cache_control = Some(CacheControlEphemeral::new());
構造化出力
use adk_anthropic::{OutputConfig, OutputFormat};
let mut params = MessageCreateParams::simple("Extract data", KnownModel::ClaudeSonnet46);
params.output_config = Some(OutputConfig::new(OutputFormat::json_schema(schema)));
トークン価格設定
use adk_anthropic::pricing::{ModelPricing, estimate_cost};
let cost = estimate_cost(ModelPricing::SONNET_46, &response.usage);
println!("${:.6}", cost.total());
例
cargo run -p adk-anthropic --example <name> で実行:
basic— 非ストリーミングのチャットstreaming— SSE ストリーミングthinking— 適応的 + 予算付き思考tools— ツール呼び出しstructured_output— JSON スキーマcaching— コスト付きの複数ターンキャッシュcontext_editing— ツール/思考のクリア(ベータ)compaction— サーバー側の圧縮token_counting— 送信前のトークン推定stop_reasons— すべての停止理由の処理fast_mode— 高速推論(ベータ)citations— ドキュメント引用pdf_processing— PDF 分析vision— 画像理解