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 5 | claude-sonnet-5 | डिफ़ॉल्ट गति/बुद्धिमत्ता संतुलन, 1M संदर्भ |
| Claude Opus 5 | claude-opus-5 | प्रमुख क्षमता, 1M संदर्भ |
| Claude Fable 5 | claude-fable-5 | प्रीमियम रचनात्मक और दीर्घ-रूप कार्य, 1M संदर्भ |
| Claude Haiku 4.5 | claude-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— छवियों की समझ