fa ▾
دریافت کلید API

Unrestricted ai: Troubleshooting Common Mistakes

توسعه‌دهندگان اغلب به دیواری برخورد می‌کنند وقتی به یک ارائه‌دهنده هوش مصنوعی بدون محدودیت تغییر می‌دهند زیرا فرضیات استاندارد درباره قالب‌بندی، محدودیت‌ها و رفتار پخش دیگر اعمال نمی‌شوند. این راهنما به شما کمک می‌کند تا رایج‌ترین خطاهای یکپارچه‌سازی را عیب‌یابی کنید تا مدل خود را بدون اعتبارات هدر رفته یا جریان‌های کاری شکسته مستقر کنید.

آخرین به‌روزرسانی

خلاصه

  1. پنجره زمینه شامل هم متن ورودی و هم خروجی است، بنابراین باید فضای کافی برای خروجی در نظر بگیرید تا از قطع شدن جلوگیری کنید.
  2. حالت JSON نیاز به پایبندی دقیق به طرحواره دارد، و مدل ممکن است متن اضافی بازگرداند اگر پرامپت مبهم باشد.
  3. پاسخ‌های جریان‌دار (Streaming) از طریق SSE نیاز دارد که توکن‌های ناقص را به صورت ایمن مدیریت کنید تا پارسر شما خراب نشود.
  4. محدودیت نرخ‌ها بر اساس کلید اعمال می‌شود، بنابراین الگوهای ترافیکی پراکنده نیاز به استراتژی‌های بازگشت نمایی دقیق دارند تا از خطاهای 429 جلوگیری شود.

۱. سقف پنجره زمینه

هر درخواست توکن‌های هم پرامپت و هم تکمیل تولید شده را در برابر محدودیت کل شما محاسبه می‌کند. اگر یک زمینه بزرگ ارسال کنید و درخواست یک پاسخ طولانی بدهید، قبل از اینکه مدل به پایان تولید متن برسد، به سقف محدودیت می‌رسید. مدل بدون سانسور ما از پنجره زمینه ۱۰۰,۰۰۰ توکنی پشتیبانی می‌کند، اما حداکثر خروجی به ازای هر درخواست به ۱۶,۰۰۰ توکن محدود است مگر اینکه خلاف آن را مشخص کنید. همیشه توکن‌های باقی‌مانده پس از پرامپت سیستم و تاریخچه مکالمه را محاسبه کنید تا مطمئن شوید مدل فضای کافی برای تکمیل فکر خود دارد. عدم توجه به این موضوع اغلب منجر به پاسخ‌های ناقص می‌شود که پارسرهای بعدی را گیج می‌کند.

from openai import OpenAI

client = OpenAI(base_url="https://api.chatgptunrestricted.cc/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)

۲. حالت JSON و قالب‌بندی دقیق

حالت JSON مدل را مجبور به خروجی JSON معتبر می‌کند، اما انطباق کامل با اسکما را در هر حالت مرزی تضمین نمی‌کند. وقتی فرمت پاسخ را روی json_object, مدل اعتبار نحوی را بر اجرای دقیق نوع ترجیح می‌دهد. اگر طرحواره شما بیش از حد پیچیده باشد، مدل ممکن است فیلدها را توهم‌زده کند یا اختیاری‌ها را حذف کند تا ساختار معتد نگه دارد. همیشه خروجی را در سمت خود اعتبارسنجی کنید قبل از اینکه آن را به عنوان یک نوع دقیق پارس کنید. این به ویژه برای مدل‌های uncensored صادق است که ممکن است آزادی‌های خلاقانه با محتوای داخل مقادیر JSON داشته باشند.

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.chatgptunrestricted.cc/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);

۳. استریم پاسخ‌های جزئی

استریمینگ به شما امکان می‌دهد توکن‌ها را همان‌طور که تولید می‌شوند دریافت کنید که تاخیر ادراک‌شده برای پاسخ‌های بزرگ را کاهش می‌دهد. شما باید استریم رویدادهای ارسالی سرور (SSE) را به درستی مدیریت کنید تا از از دست رفتن داده یا خطاهای تجزیه جلوگیری کنید. هر قطعه حاوی یک توکن ناقص است و قطعه نهایی شامل کل استفاده از توکن برای درخواست می‌باشد. اگر اتصال را زودتر قطع کنید، داده‌های استفاده نهایی را از دست می‌دهید و ممکن است سرور را در وضعیت ناسازگار قرار دهید. همیشه مطمئن شوید که کلاینت شما می‌تواند کسرهای JSON ناقص را مدیریت کند اگر داده‌های ساختاریافته را استریم می‌کنید.

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)

۴. خطاهای انتخاب ابزار و فراخوانی تابع

فراخوانی تابع نیاز به تعریف‌های دقیق طرح‌واره دارد و اغلب اگر مدل نتواند ورودی کاربر را به یک ابزار خاص نگاشت کند، شکست می‌خورد. اگر مشخص کنید tool_choice, مدل ممکن است حتی زمانی که مناسب نیست، یک فراخوانی ابزار را مجبور کند، که منجر به آرگومان‌های خالی یا نامربوط می‌شود. تعاریف ابزار خود را ساده و به وضوح توصیف کنید. مدل از فرمت‌های استاندارد ابزار سازگار با OpenAI پشتیبانی می‌کند، بنابراین می‌توانید از SDKهای موجود استفاده کنید. با این حال، همیشه بررسی کنید که آرگومان‌های ارسال شده به ابزار دقیقاً با انواع مورد انتظار شما مطابقت داشته باشد.

curl https://api.chatgptunrestricted.cc/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Summarize the technical specs of the new GPU architecture"}]
  }'

۵. تنظیمات دما و خلاقیت

تنظیم دما (temperature) و top_p مستقیماً بر آزادی خلاق در خروجی‌های uncensored تأثیر می‌گذارد. top_p و همچنین برای کنترل نمونه‌برداری هسته (nucleus sampling) و بهبود بیشتر کیفیت خروجی.

from openai import OpenAI

client = OpenAI(base_url="https://api.chatgptunrestricted.cc/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)

۶. مدیریت پیکربندی‌های بزرگ

payloadهای بزرگ می‌توانند از محدودیت بدنه درخواست ۸ مگابایت فراتر روندند و باعث شوند تماس‌های API شما به‌صورت خاموش یا با خطای 413 شکست بخورند. اگر تاریخچه گفتگوهای طولانی ارسال می‌کنید، در نظر بگیرید که پیام‌های قدیمی‌تر را حذف یا قبل از ارسال خلاصه کنید. مدل می‌تواند ۱۰۰,۰۰۰ توکن را مدیریت کند، اما اندازه فیزیکی payload JSON نیز مهم است. مطمئن شوید کتابخانه کلاینت شما داده‌ها را به‌طور کارآمد فشرده یا قالب‌بندی می‌کند. همیشه طول محتوا را قبل از ارسال درخواست بررسی کنید تا از هدر رفت اعتبار در تلاش‌های ناموفق جلوگیری کنید.

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.chatgptunrestricted.cc/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);

۷. محدودیت نرخ و کاهش سرعت

محدودیت نرخ‌ها بر اساس کلید API اعمال می‌شود، با حداکثر ۳۰۰ درخواست در دقیقه و ۸ درخواست همزمان. اگر از این محدودیت‌ها تجاوز کنید، خطای 429 دریافت خواهید کرد. در کلاینت خود از بازگشت نمایی (exponential backoff) برای مدیریت تلاش‌های مجدد به صورت روان استفاده کنید. ترافیک ناگهانی می‌تواند به سرعت ظرفیت همزمانی شما را مستهلک کند، بنابراین در صورت امکان درخواست‌ها را در طول زمان توزیع کنید. پایش مصرف و تنظیمات همزمانی می‌تواند به شما کمک کند تا بدون قربانی کردن عملکرد، در محدوده مجاز بمانید. این موضوع برای حفظ تجربه کاربری روان در محیط‌های تولید حیاتی است.

curl https://api.chatgptunrestricted.cc/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Summarize the technical specs of the new GPU architecture"}]
  }'

۸. عدم تطابق در شمارش توکن‌ها

توکنایزرهای مختلف ممکن است توکن‌ها را به صورت متفاوتی بشمارند که منجر به تفاوت‌هایی بین شمارش محلی شما و شمارش API می‌شود. همیشه از همان توکنایزری که با مدل مطابقت دارد برای حسابداری دقیق استفاده کنید. API بر اساس توکن‌های واقعی پردازش شده هزینه دریافت می‌کند، بنابراین درک این تفاوت به شما کمک می‌کند هزینه‌ها را به دقت پیش‌بینی کنید. اگر نوسانات قابل توجهی مشاهده کردید، پیاده‌سازی توکنایزر خود را بررسی کنید. این امر به ویژه هنگام ادغام با کتابخانه‌های شخص ثالث که ممکن است از استراتژی‌های توکنایز متفاوتی استفاده کنند، مهم است.

from openai import OpenAI

client = OpenAI(base_url="https://api.chatgptunrestricted.cc/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)

سوالات متداول

مزیت اصلی استفاده از یک مدل AI غیرمحدود در مقایسه با ارائه‌های استاندارد چیست؟

یک مدل هوش مصنوعی بدون محدودیت معمولاً از موضوعات بزرگسالان، خلاقانه یا بحث‌برانگیز قانونی خودداری نمی‌کند و آزادی بیشتری برای موارد استفاده خاص فراهم می‌کند. این امکان را به توسعه‌دهندگان می‌دهد تا محتوا را بدون محدودیت‌های فیلترهای ایمنی شرکتی تولید کنند که آن را برای کاربردهای خاص یا جسورانه ایده‌آل می‌سازد.

چگونه خطاهای تجزیه JSON را هنگام استفاده از حالت جریان مدیریت کنم؟

استریمینگ داده‌های جزئی را ارسال می‌کند، بنابراین باید قطعات را تا زمانی که استریم کامل شود بافر کنید یا اگر کلاینت شما از آن پشتیبانی می‌کند، به صورت افزایشی تجزیه کنید. همیشه ساختار JSON نهایی را قبل از استفاده در برنامه خود اعتبارسنجی کنید. اگر خطایی رخ داد، خروجی مدل را برای هر متنی که ممکن است سینتکس JSON را خراب کند بررسی کنید.

آیا می‌توانم از این API برای فراخوانی تابع (function calling) با ابزارهای موجود استفاده کنم؟

بله، API از فراخوانی تابع سازگار با OpenAI استاندارد پشتیبانی می‌کند. می‌توانید ابزارها را در درخواست خود تعریف کنید و مدل تلاش خواهد کرد آن‌ها را فراخوانی کند اگر زمینه آن را پیشنهاد دهد. مطمئن شوید که طرح‌های ابزار شما واضح هستند و با انواع استدلال مورد انتظار مطابقت دارند.

اگر از محدودیت خروجی 16,000 توکن عبور کنم چه اتفاقی می‌افتد؟

اگر برای تکمیل بیش از 16,000 توکن درخواست دهید، مدل تولید را در آن محدودیت متوقف می‌کند. برای دریافت پاسخ‌های طولانی‌تر، ممکن است نیاز باشد استراتژی‌ای برای ادامه تولید در درخواست‌های بعدی پیاده‌سازی کنید یا پرامپت خود را مختصرتر کنید.

کلید API خود را باز کنید

ثبت‌نام کنید، کلید را بردارید و کلاینت خود را به URL پایه جدید متصل کنید. همین کاری است که باید انجام دهید.

دریافت کلید API