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

سازگاری با OpenAI

سازگاری با OpenAI

دات‌هوش روی /v1/* همان قرارداد OpenAI را می‌پذیرد: همان مسیرها، همان سرآیندها و همان شکل پاسخ. برای مهاجرت، فقط آدرس پایه و کلید را عوض کنید.

آدرس پایه و احراز هویت

مقدارجا
آدرس پایهhttps://gateway.dothoosh.com/v1
احراز هویتAuthorization: Bearer $DOTHOOSH_API_KEY
ترکیب محلیhttp://127.0.0.1:58110/v1
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://gateway.dothoosh.com/v1",
    api_key=os.environ["DOTHOOSH_API_KEY"],
)

مسیرهای موجود

مسیرمتدوضعیت
/v1/chat/completionsPOSTفعال، غیراستریم و استریم
/v1/responsesPOSTفعال، غیراستریم و استریم
/v1/modelsGETفعال، فهرست پویا برای همین key
/v1/images/generationsPOSTغیرفعال. با unsupported_capability رد می‌شود

تولید تصویر عمداً خاموش است، نه از روی غفلت: تا وقتی مخزن رسانه، قلاب ایمنی محتوا و چرخهٔ حذف آن آماده نشده، روشن‌کردن آن وعدهٔ نگهداری داده را نقض می‌کند. تا آن زمان هر فراخوانی /v1/images/generations با کد unsupported_capability رد می‌شود، حتی اگر کلید معتبر باشد.

انتخاب مدل

شناسهٔ مدل را در کد ثابت نکنید. با همان key فهرست را بپرسید:

bash
curl "https://gateway.dothoosh.com/v1/models" \
  -H "Authorization: Bearer $DOTHOOSH_API_KEY"

شناسه‌ها دقیق هستند. دات‌هوش زیر بار خطا نسخهٔ دیگری از همان مدل یا «نزدیک‌ترین مدل موجود» را جای آن نمی‌گذارد؛ اگر مدل دقیق در دسترس نباشد خطا می‌گیرید، نه پاسخ یک مدل دیگر. اگر همان مدل روی چند مسیر باشد، تلاش دوباره فقط بین همان مسیرها انجام می‌شود (مسیردهی و تلاش مجدد).

قالب درخواست

فقط model و messages الزامی‌اند. بقیهٔ فیلدها فقط وقتی پذیرفته می‌شوند که این مدل و این مسیر آن‌ها را تأیید کرده باشند:

فیلدنکته
modelشناسهٔ دقیق از GET /v1/models
messagesنقش‌های system، user، assistant، developer و tool
max_completion_tokensسقف توکن خروجی؛ نام درست همین است
streamtrue برای پاسخ تدریجی (استریم)
temperature، top_p، stop، nبا بازه‌های استاندارد OpenAI
tools، tool_choiceفقط اگر مسیر مدل tool calling را تأیید کرده باشد
response_formatفقط برای مدل‌هایی که خروجی ساخت‌یافتهٔ آن‌ها تأیید شده است

قالب پاسخ

پاسخ غیراستریم شکل استاندارد chat.completion را دارد و usage را همیشه برمی‌گرداند. یک افزونهٔ دات‌هوش هم وجود دارد: reasoning_content روی پیام دستیار، فقط برای مدل‌هایی که متن استدلال تولید می‌کنند. این فیلد را در درخواست بعدی برنگردانید.

json
{
  "id": "chatcmpl_…",
  "object": "chat.completion",
  "model": "YOUR_MODEL",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "…" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 42, "completion_tokens": 118, "total_tokens": 160 }
}

چه چیزی پشتیبانی نمی‌شود

  • مسیرهایی که در جدول بالا نیستند. embeddings، audio، fine-tuning و assistants/files از این gateway عبور نمی‌کنند (not proxied) و مسیری برای آن‌ها وجود ندارد.
  • پارامترهای مخصوص یک ارائه‌دهنده که برای این مسیر تأیید نشده‌اند: به‌جای عبور بی‌صدا، unsupported_parameter می‌گیرید.
  • قابلیتی که مسیر این مدل آن را اعلام نکرده است (برای نمونه tools روی مدلی که تأیید نشده): unsupported_capability.

این سخت‌گیری عمدی است: پارامتری که بی‌صدا نادیده گرفته شود، نتیجه‌ای می‌دهد که نمی‌توانید به آن تکیه کنید.

وضعیت فعلی سرویس

سرویس فعال است. اگر سامانه برای نگه‌داری موقتاً در دسترس نباشد، دامنهٔ عمومی روی /v1/* پاسخ کاتالوگ‌شدهٔ maintenance_mode می‌دهد: 503 با type: "provider_error"، سرآیند X-Request-Id و Retry-After: 120. جزئیات در شروع سریع آمده است.

مطالب مرتبط

گام بعدی