URL پایه و احراز هویت
اتصال به openai compatible API با بهروزرسانی پیکربندی کلاینت خود برای اشاره به https://api.openaicompatibleapiendpoints.com/v1. به یک کلید API معتبر ارسال شده در Authorization هدر به عنوان یک توکن Bearer. این پیکربندی با SDKهای رسمی OpenAI و هر کتابخانه کلاینت سازگار کار میکند. به پیکربندی دروازه پیچیده نیاز نیست.
curl https://api.openaicompatibleapiendpoints.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Return 500 status code"}]
}'هر درخواست باید کلید منحصربهفرد شما را شامل شود. اگر کلید موجود نباشد یا نامعتبر باشد، سرور بلافاصله خطای 401 را برمیگرداند. این تضمین میکند که تماسهای شما به LLM بدون سانسور صحیح بدون تأخیرهای مسیریابی برسد.
نقطه پایانی تکمیل چت
پیامها را به POST /v1/chat/completions اندپوینت برای دریافت پاسخهای متنی از uncensored مدل. این نقطه پایانی نوبتهای مکالمه استاندارد را مدیریت کرده و از پنجره زمینه ۱۰۰,۰۰۰ توکنی پشتیبانی میکند. میتوانید حداکثر خروجی را ۱۶,۰۰۰ توکن در هر درخواست تنظیم کنید. مدل بدون رد شدن محتوا برای موضوعات بزرگسالان قانونی پاسخ میدهد.
from openai import OpenAI
client = OpenAI(base_url="https://api.openaicompatibleapiendpoints.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)از استاندارد messages فرمت آرایه. API فیلدهای اضافی که نمیشناسد را نادیده میگیرد که مهاجرت را آسان میکند. شما فقط برای توکنهایی که توسط مدل مصرف میشوند پرداخت میکنید.
پاسخهای استریم
فعالسازی تحویل توکن بلادرنگ با تنظیم stream: true در درخواست شما. سرور سریالی از رویدادهای ارسالی سرور (SSE) را تا تکمیل پاسخ ارسال میکند. آمار مصرف توکن در قطعه نهایی استریم ظاهر میشود. این موضوع تأخیر ادراکشده برای کاربران منتظر پاسخهای طولانی را کاهش میدهد.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)توکنهای ورودی را در سمت کلاینت بافر کنید تا متن کامل را بازسازی کنید. خطاها در حین استریم نادر هستند اما باید با بررسی رویداد نهایی برای کد خطا مدیریت شوند. جریان به طور خودکار زمانی متوقف میشود که محدودیت زمینه یا حداکثر توکنها به دست آید.
حالت JSON و ابزارها
خروجی ساختاریافته را با تنظیم response_format به {"type": "json_object"}. این امر تضمین میکند که مدل JSON معتبر را به جای متن مارکداون بازگرداند. همچنین میتوانید از tools پارامتر را برای فراخوانی تابع تنظیم کنید. API از tool_choice برای کنترل دقیق بر توابعی که مدل فراخوانی میکند.
استفاده temperature و top_p برای تنظیم تصادفی بودن. تنظیم seed برای نتایج تکرارپذیر هنگام رفع اشکال. این پارامترها دقیقاً همانطور که در یکپارچهسازیهای استاندارد سازگار با OpenAI انتظار میرود، کار میکنند.
مدیریت خطا و محدودیتها
خطاهای HTTP استاندارد را برای مدیریت شکستهای سمت کلاینت بهخوبی مدیریت کنید. وضعیت 401 به معنای نامعتبر بودن کلید API شماست. وضعیت 402 نشاندهنده تمام شدن اعتبار پیشپرداخت شماست. خطای 429 نشان میدهد که از محدودیت 300 درخواست در دقیقه فراتر رفتهاید.
هر کلید اجازه هشت درخواست همزمان را میدهد. بدنه درخواست به ۸ مگابایت محدود است. بازپرداختها برای اعتبار استفاده شده صادر نمیشوند، اما خطاها در طول پردازش رایگان هستند. همیشه بررسی کنید error object در پاسخ JSON برای جزئیات.
پنجره زمینه و جزئیات مدل
این مدل پنجره زمینه ۱۰۰,۰۰۰ توکنی را برای مجموع ورودی و خروجی پشتیبانی میکند. این امکان حفظ زمینه عمیق برای اسناد طولانی یا مکالمات گسترده را فراهم میکند. حداکثر خروجی پیشفرض ۲,۰۴۸ توکن است اگر آن را مشخص نکنید max_tokens. میتوانید این مقدار را تا ۱۶,۰۰۰ توکن در هر درخواست افزایش دهید.
مدل GPT، Claude یا هیچ مدل فروشنده دیگری نیست. یک مدل وزنباز است که برای پاسخهای بدون سانسور تنظیم شده است. دادهای از پرامپتهای شما برای آموزش استفاده نمیشود. این برای دادههای اختصاصی شما حریم خصوصی را تضمین میکند.
Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openaicompatibleapiendpoints.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);