Anthropic (adk-anthropic)

adk-anthropic क्रेट ADK-Rust के लिए एक समर्पित Anthropic API क्लाइंट है। यह स्ट्रीमिंग, विस्तारित चिंतन, प्रॉम्प्ट कैशिंग, उद्धरण, विज़न, PDF प्रोसेसिंग और टोकन मूल्य निर्धारण सहित, पूरे Anthropic Messages API सरफ़ेस तक सीधी पहुँच प्रदान करता है।

आर्किटेक्चर

adk-anthropic एक स्वतंत्र क्लाइंट क्रेट है, जिसे adk-model अपने Anthropic अडैप्टर के माध्यम से रैप करता है। आप इसका उपयोग निम्न-स्तरीय API एक्सेस के लिए सीधे, या एकीकृत Llm ट्रेट के लिए adk-model के माध्यम से कर सकते हैं।

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

समर्थित मॉडल

मॉडलAPI आईडीटिप्पणियाँ
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_url अंतर्निहित क्लाइंट तक adk-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_url Result लौटाता है क्योंकि क्लाइंट प्रत्येक अनुरोध में Anthropic API कुंजी संलग्न करता है। केवल https://, या स्थानीय विकास के लिए लूपबैक होस्ट वाला http:// (localhost, 127.0.0.1, [::1]), स्वीकार किया जाता है — अन्य सभी को कुंजी को बिना एन्क्रिप्शन के भेजने के बजाय सत्यापन त्रुटि के रूप में अस्वीकार कर दिया जाता है। यही नियम 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 — छवियों की समझ
Anthropic (adk-anthropic) - ADK-Rust दस्तावेज़ीकरण | ADK-Rust