Anthropic(adk-anthropic)

adk-anthropic crate は、ADK-Rust 専用の Anthropic API クライアントです。ストリーミング、拡張思考、プロンプトキャッシュ、引用、ビジョン、PDF 処理、トークン料金など、Anthropic Messages API の全機能に直接アクセスできます。

アーキテクチャ

adk-anthropic は、Anthropic アダプターを介して adk-model をラップするスタンドアロンのクライアント crate です。低レベルの API アクセスには直接使用でき、統一された Llm トレイトを使用する場合は adk-model を介して利用できます。

┌─────────────┐     ┌───────────────┐     ┌──────────────┐
│  Your Code  │────▶│   adk-model   │────▶│adk-anthropic │────▶ Anthropic API
│             │     │ (Llm trait)   │     │ (HTTP client)│
└─────────────┘     └───────────────┘     └──────────────┘

サポートされているモデル

モデルAPI ID注意事項
Claude Sonnet 5claude-sonnet-5速度と知性のバランスに優れたデフォルト、1Mコンテキスト
Claude Opus 5claude-opus-5フラッグシップの性能、1Mコンテキスト
Claude Fable 5claude-fable-5プレミアムなクリエイティブおよび長文作業、1M コンテキスト
Claude Haiku 4.5claude-haiku-4-5コスト効率に優れた前世代、200K コンテキスト

セットアップ

APIキーを設定します:

export ANTHROPIC_API_KEY=sk-ant-...

直接クライアントの使用

use adk_anthropic::{Anthropic, MessageCreateParams, Model};

let client = Anthropic::new(None)?; // reads ANTHROPIC_API_KEY
let params = MessageCreateParams::simple("Hello!", Model::claude_sonnet_5());
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-5"))?;

カスタムベースURL(ゲートウェイ、プロキシ、互換エンドポイント)

企業プロキシまたは Messages-API互換ゲートウェイを経由するために、別のエンドポイントをクライアントに指定します。ルートURLを /v1/サフィックスなしで 指定してください。サフィックスは自動的に追加されます。AnthropicConfig::with_base_urladk-modelを経由して基盤となるクライアントに渡されます:

use adk_model::anthropic::{AnthropicClient, AnthropicConfig};

let model = AnthropicClient::new(
    AnthropicConfig::new(api_key, "claude-sonnet-5")
        .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_urlResultを返します。これは、クライアントがすべてのリクエストに Anthropic のAPIキーを付加するためです。受け入れられるのはhttps://のみ、またはローカル開発用にループバックホスト(localhost127.0.0.1[::1])を指定したhttp://のみです。それ以外は、キーを平文で密かに送信するのではなく、検証エラーとして拒否されます。同じルールがAnthropicConfig::with_base_urlにも適用され、AnthropicClient::newが基盤となるクライアントを構築する際に検証されます。

主な機能

適応型思考

Opus 4.7 は 適応型思考のみ をサポートします。budget_tokensは拒否されます。

use adk_anthropic::{
    EffortLevel, KnownModel, MessageCreateParams, Model, OutputConfig, ThinkingConfig,
};

// 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 5: balanced default for agentic workloads
let mut params = MessageCreateParams::simple("Solve this...", Model::claude_sonnet_5())
    .with_thinking(ThinkingConfig::adaptive());
params.output_config = Some(OutputConfig::with_effort(EffortLevel::High));

プロンプトキャッシュ

use adk_anthropic::{CacheControlEphemeral, MessageCreateParams, Model};

let mut params = MessageCreateParams::simple("Question", Model::claude_sonnet_5())
    .with_system("Large system prompt...");
params.cache_control = Some(CacheControlEphemeral::new());

構造化出力

use adk_anthropic::{MessageCreateParams, Model, OutputConfig, OutputFormat};

let mut params = MessageCreateParams::simple("Extract data", Model::claude_sonnet_5());
params.output_config = Some(OutputConfig::new(OutputFormat::json_schema(schema)));

トークン料金

use adk_anthropic::pricing::{ModelPricing, estimate_cost};

let cost = estimate_cost(ModelPricing::SONNET_5, &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 — 画像理解