API ِ هوش مصنوعیِ سازگار با OpenAI: اتصالِ برنامهٔ شما بدونِ تغییرِ کد

API ِ هوش مصنوعیِ سازگار با OpenAI: اتصالِ برنامهٔ شما بدونِ تغییرِ کد

تیم وب‌سرویس هوش مصنوعی

پروتکلِ Chat Completions ِ OpenAI عملاً زبانِ مشترکِ ابزارهای هوش مصنوعی شده است: SDK ِ رسمی برای پایتون و Node.js، و بسیاری از نرم‌افزارها با گزینهٔ «OpenAI-compatible». API ِ AI WebService همین پروتکل است. (برای تفاوتِ API و وب‌سرویس به‌طورِ کلی، این مقاله را ببینید.)

اتصال در دو خط

from openai import OpenAI
client = OpenAI(base_url="https://ai.webservice.ir/v1", api_key="sk-awc-...")

r = client.chat.completions.create(messages=[{"role": "user", "content": "Explain this nginx error: 502 Bad Gateway"}])
print(r.choices[0].message.content)

بدونِ فیلدِ model، مدلِ پیش‌فرض به کار می‌رود؛ فهرستِ مدل‌ها را از GET /v1/models بگیرید.

نشانی‌ها

  • POST /v1/chat/completions — تولیدِ پاسخ، معمولی یا جریانی؛
  • GET /v1/models — فهرستِ مدل‌ها؛
  • GET /v1/files/{conversation_id} — فایل‌هایی که اجرا ساخته؛
  • GET /api/hello — بررسیِ سلامت، بی‌کلید.

سه تفاوت که باید بدانید

  1. کلید ابزار دارد: هر کلید همان توانِ پنل را دارد؛ فایل می‌خواند و می‌نویسد و دستور اجرا می‌کند. پس پاسخ می‌تواند حاصلِ یک کارِ واقعی باشد، نه فقط متن. کلید را مثلِ رمز نگه دارید (کلیدِ API ِ امن).
  2. conversation_id: افزودهٔ ما به پروتکل. با یک شناسهٔ ثابت، گفتگو بینِ فراخوانی‌ها زنده می‌ماند و لازم نیست تاریخچه را دوباره بفرستید؛ ادامهٔ گفتگو حدودِ یک‌چهارمِ شروعِ دوباره هزینه دارد.
  3. زمانِ پاسخ چند ثانیه است: هر فراخوانی یک اجرای کامل است. برای کارهای پس‌زمینه و دسته‌ای عالی است، ولی آن را زیرِ دکمه‌ای نگذارید که کاربر منتظرِ جوابِ فوری‌اش است؛ نتیجه‌ها را از پیش بسازید و ذخیره کنید.

پاسخِ جریانی

با "stream": true پاسخ به شکلِ استانداردِ SSE می‌آید و با data: [DONE] تمام می‌شود. خطای وسطِ جریان به‌صورتِ متن و با finish_reason: "error" می‌آید؛ آن را بررسی کنید تا خطا را به‌جای پاسخ ذخیره نکنید.

کدهای خطا

  • ۴۰۱: کلید نیامده، اشتباه یا منقضی است.
  • ۴۰۲: اعتبار تمام شده یا سقفِ خرجِ کلید پر شده.
  • ۴۰۳: آی‌پیِ فرستنده برای این کلید مجاز نیست.
  • ۵۰۳: صف در مهلتِ مقرر خالی نشد؛ با فاصله دوباره بفرستید.

متنِ خطا در کلیدِ detail ِ بدنهٔ پاسخ است.

پرسش‌های کوتاه

با کتابخانهٔ PHP یا Node.js هم کار می‌کند؟

بله؛ هر کتابخانه یا ابزاری که پروتکلِ Chat Completions را بلد است، فقط با عوض‌کردنِ آدرسِ پایه و کلید.

پاسخ فارسی می‌آید؟

زبانِ پاسخ همان زبانِ درخواست است؛ برای پاسخِ فارسی لازم نیست چیزی اضافه کنید.

جمع‌بندی

API ِ AI WebService استانداردِ OpenAI است و برنامهٔ شما را بی‌تغییرِ کد وصل می‌کند. راهنمای کامل با نمونه‌کد cURL، Python، Node.js و PHP: راهنمای API.