سازگاری با Anthropic
سازگاری با Anthropic
داتهوش مسیر بومی Anthropic Messages را هم ارائه میدهد: POST /anthropic/v1/messages با همان قالب درخواست، همان رویدادهای استریم و همان پوشش خطا. SDK رسمی Anthropic و ابزارهایی که روی آن ساخته شدهاند فقط به تغییر آدرس پایه و کلید نیاز دارند.
آدرس پایه و سرآیندها
| مقدار | جا |
|---|---|
| آدرس پایه | https://gateway.dothoosh.com/anthropic |
| احراز هویت | x-api-key: $DOTHOOSH_API_KEY |
| نسخهٔ پروتکل | anthropic-version: 2023-06-01 (الزامی) |
| ترکیب محلی | http://127.0.0.1:58110/anthropic |
SDK رسمی Anthropic خودش /v1/messages را به آدرس پایه اضافه میکند، پس آدرس پایه را بدون /v1/messages بدهید.
دو نکته که بیشترین خطای این مسیر را میسازند:
- `anthropic-version` الزامی و پینشده است. فقط مقدار 2023-06-01 پذیرفته میشود. هر مقدار دیگری، از جمله نسخههای جدیدتر، با unsupported_parameter و parameter: "anthropic-version" رد میشود.
- `Authorization` را نفرستید. این مسیر فقط x-api-key را میپذیرد؛ اگر هر دو را بفرستید، پاسخ api_key_malformed است (احراز هویت و امنیت کلید).
اولین درخواست
curl "https://gateway.dothoosh.com/anthropic/v1/messages" \
-H "x-api-key: $DOTHOOSH_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "سلام" }]
}'YOUR_MODEL باید مدلی از GET /v1/models باشد که قرارداد anthropic-messages برایش تأیید شده است. مدلها بین دو پروتکل مشترکاند اما تأیید هر پروتکل جداگانه است؛ اگر مدلی فقط برای chat completions تأیید شده باشد، از این مسیر سرو نمیشود.
قالب درخواست
model، max_tokens و messages الزامیاند. بقیهٔ فیلدهای شناختهشدهٔ پروتکل پذیرفته میشوند و هر فیلد ناشناخته با unsupported_parameter رد میشود؛ داتهوش فیلد اضافه را بیصدا دور نمیریزد.
| فیلد | الزام | نکته |
|---|---|---|
| model | الزامی | شناسهٔ دقیق از GET /v1/models |
| max_tokens | الزامی | در این پروتکل اختیاری نیست |
| messages | الزامی | دنبالهٔ نقشهای user و assistant |
| system | اختیاری | متن یا بلوکهای system |
| stream | اختیاری | true برای رویدادهای بومی Anthropic (استریم) |
| temperature، top_p، top_k، stop_sequences | اختیاری | با همان معنای پروتکل |
| tools، tool_choice | اختیاری | فقط اگر مسیر مدل آن را تأیید کرده باشد |
| thinking، output_config، metadata، service_tier | اختیاری | فقط در محدودهٔ تأییدشده |
سرآیند اختیاری anthropic-beta هم وجود دارد، اما هر توکن آن باید برای این مدل و این مسیر تأیید شده باشد. توکنی که تأیید نشده باشد به بالادست نمیرود و توکن بدشکل با unsupported_parameter و parameter: "anthropic-beta" رد میشود.
قالب پاسخ
پاسخ شکل بومی Anthropic را دارد: id، type: "message"، role، content بهصورت بلوکها، stop_reason و usage. شناسهٔ درخواست در سرآیند request-id و در بدنهٔ خطا برمیگردد و شکل req_… دارد.
قالب خطا
خطاها پوشش بومی Anthropic را دارند تا مدیریت خطای موجودتان کار کند:
{
"type": "error",
"error": { "type": "invalid_request_error", "message": "…" },
"request_id": "req_…"
}انواع خطای این پوشش شامل invalid_request_error، authentication_error، permission_error، not_found_error، rate_limit_error، billing_error، conflict_error، timeout_error، api_error و overloaded_error است. کد وضعیت هر سناریو ممکن است با مسیر OpenAI یکی نباشد؛ برای نمونه insufficient_available_balance روی این مسیر 400 است و روی /v1/* برابر 402. جدول کامل در خطاها و محدودیتها آمده است.
وضعیت فعلی سرویس
سرویس فعال است. اگر سامانه برای نگهداری موقتاً در دسترس نباشد، دامنهٔ عمومی روی /anthropic/* پاسخ کاتالوگشدهٔ maintenance_mode میدهد: 500 با type: "api_error" و سرآیند Request-Id: req_….
مطالب مرتبط
گام بعدی
Claude Code از طریق مسیر سازگار با Anthropic به داتهوش وصل میشود. کل کار دو متغیر محیطی و یک فرمان است.
هر دو مسیر داتهوش استریم را به شکل بومی خودشان ارائه میدهند: رویدادهای Server-Sent Events روی مسیر OpenAI و رویدادهای بومی Anthropic روی مسیر Anthropic. کدی که امروز با SDK خودتان استریم میگیرید، بدون تغییر کار میکند.
فهرست مدلهای داتهوش پویا است: با هر درخواست از خود سرویس میپرسید «الان چه چیزی برای من در دسترس است؟». هیچ فهرست ثابتی وجود ندارد که در مستندات بنویسیم و بعد از کد عقب بیفتد.