پرش به محتوای اصلی

سازگاری با 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 را دارند تا مدیریت خطای موجودتان کار کند:

json
{
  "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_….

مطالب مرتبط

گام بعدی