لماذا يفشل التحقق من صحة استجابة JSON الخاصة بك
يفشل تحليل JSON عندما يلحق النموذج نصًا محادثيًا خارج كتلة الكود. تعطي النماذج غير الخاضعة للرقابة الأولوية لسلاسة اللغة الطبيعية، لذا غالبًا ما تضيف "إليك JSON" قبل أو بعد البيانات الخام. هذا يكسر المفسرات الصارمة التي تتوقع الكائن فقط.
استخدم ال response_format المعامل مضبوط على {"type": "json_object"}. يفرض هذا على النموذج إخراج JSON صالح فقط. يلغي الحاجة إلى نصوص برمجية لتنظيف البيانات باستخدام التعبيرات المنتظمة (regex) في كودك. ومع ذلك، لاحظ أن هذا يستهلك رموزاً أكثر لكل طلب لأن النموذج مقيد.
- تعيين
response_formatإلىjson_objectفي حمولة الطلب الخاصة بك. - تأكد من أن مطالبة النظام تطلب صراحةً مخرجات بتنسيق JSON.
- عالج الفواصل الذيلية أو أخطاء الصياغة البسيطة بسلاسة إذا أخطأ النموذج.
from openai import OpenAI
client = OpenAI(base_url="https://api.abliteratedllmonline.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)
معالجة حدود نافذة السياق بشكل صحيح
تحتوي نافذة السياق على 100,000 رمز إجمالاً، مما يجمع بين الإدخال والإخراج. إذا أرسلت تاريخ محادثة طويلاً، فيجب عليك تقليل طول الإخراج الأقصى. يبلغ الحد الأقصى الافتراضي للإخراج 2,048 رمزاً ما لم تحدد خلاف ذلك.
احسب الرموز المتبقية عن طريق طرح حجم الإدخال من 100,000. إذا كنت تقوم بدور تمثيلي، فاجعل مطالبة النظام موجزة. احفظ فترات المحادثة الأخيرة فقط في طلب واجهة برمجة التطبيقات. يمكن تلخيص السياق الأقدم أو اقتطاعه. يمنع هذا الوصول إلى الحد الأقصى الصارم أثناء التوليد.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.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);
أخطاء استدعاء الوظائف مع النماذج غير الخاضعة للرقابة
يفشل استدعاء الوظائف عندما يتجاهل النموذج تعريفات الأدوات أو يعيد حججًا غير صالحة. قد تعطي النماذج غير الخاضعة للرقابة الأولوية للاستجابات الإبداعية على الاستخدام الدقيق للأدوات. قد تتوهم معلمات لا توجد في مخططك.
عرّف أدواتك بوضوح في tools مصفوفة. استخدم tool_choice لإجبار سلوك محدد. إذا رفض النموذج استدعاء أداة، ففحص تعليمات النظام الخاصة بك للتعليمات المتضاربة. تأكد من أن أسماء الأدوات ووصفها غير غامضة. اختبر باستخدام استعلامات بسيطة أولاً للتحقق من التكامل.
- وفّر أسماء الأدوات ووصفها بوضوح.
- استخدام
tool_choiceللتحكم في الاستدعاء. - تحقق من الحجج مقابل المخطط الخاص بك قبل التنفيذ.
curl https://api.abliteratedllmonline.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
}'
انقطاعات البثّ ومعالجة أحداث الإرسال الموجهة (SSE)
قد يفقد التدفق عبر أحداث الحدث الخادم (SSE) بعض الرموز إذا انقطع اتصال العميل أو حدثت مشكلة في الشبكة. يحتوي الشريحة الأخيرة على إحصائيات استخدام الرموز. يجب عليك تحليل هذه الشريحة للحصول على عدد الرموز المدخلة والمخرجة.
تنفيذ عميل 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)
إعدادات درجة الحرارة المؤثرة على مخرجات NSFW
تحكم درجة الحرارة في عشوائية مخرجات النموذج. تزيد القيم الأعلى مثل 0.8 أو 0.9 من الإبداع وعدم التوقع. تجعل القيم الأقل مثل 0.2 المخرجات أكثر حتمية وتركيزاً. بالنسبة للتمثيل الأدبي غير المقيد، تنتج درجات الحرارة الأعلى استجابات أكثر تنوعاً وشدة.
تجربة مع قيم مختلفة للعثور على التوازن المناسب. قد تؤدي درجة الحرارة المرتفعة جدًا إلى نص غير متماسك أو متكرر. قد تؤدي درجة الحرارة المنخفضة جدًا إلى حوار آلي أو مملة. اضبط بناءً على النبرة والاتساق المطلوبين. يستجيب النموذج غير الخاضع للرقابة جيدًا لإعدادات الإبداع الأعلى.
- استخدم 0.7-0.9 للعب الأدبي الإبداعي.
- استخدم 0.2-0.5 للمهام الواقعية أو البرمجية.
- راقب جودة الإخراج أثناء التعديل.
Top P والتنوع في توليد الأدوار
يحد Top P (عينة النواة) النموذج للنظر فقط في النسبة المئوية الأعلى من كتلة الاحتمال. يعمل مع درجة الحرارة للتحكم في التنوع. يجعل قيمة Top P المنخفضة المخرجات أكثر قابلية للتنبؤ. تسمح القيمة العالية باختيار كلمات أكثر تنوعاً.
ادمج Top P مع درجة الحرارة للحصول على تحكم دقيق. على سبيل المثال، يمكن أن تنتج درجة حرارة عالية مع Top P منخفض نصاً إبداعياً ولكن مركزاً. هذا مفيد للحفاظ على صوت الشخصية مع السماح بالأفعال التلقائية. جرب مجموعات مختلفة لتناسب أسلوب السرد الخاص بك.
from openai import OpenAI
client = OpenAI(base_url="https://api.abliteratedllmonline.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)
فهم حدود وتكلفة الرموز
يؤثر استهلاك الرموز مباشرة على رصيدك المدفوع مسبقًا. تتقاضى واجهة برمجة التطبيقات 0.15 دولار لكل مليون رمز إدخال و0.50 دولار لكل مليون رمز إخراج. رموز الإخراج أكثر تكلفة لأنها تمثل عمل النموذج. لا يغير التدفق التكلفة؛ تدفع مقابل جميع الرموز المولدة.
راقب استهلاك الرمز المميز لتجنب الرسوم غير المتوقعة. يوفر الجزء الأخير من تدفق SSE عدد الرموز المميزّة بدقة. استخدم هذا لتحديث رصيدك المحلي أو لوحة الفوترة. الأخطاء والرفضات مجانية، لذا تدفع فقط مقابل الإكمالات الناجحة. يضمن نموذج الدفع حسب الاستخدام ألا تدفع أكثر من اللازم.
- ت kostet Input tokens $0.15 لكل مليون.
- تكلف رموز الإخراج 0.50 دولار لكل مليون.
- الرفض والأخطاء مجانيان.
استبدال مفتاح API وحدود معدل الطلب
يسمح كل حساب بمفتاح API نشط واحد فقط. إذا قمت بإعادة توليد مفتاحك، يصبح المفتاح القديم غير صالح على الفور. يضمن هذا الأمان ولكن يتطلب منك تحديث عملائك على الفور. يتم تعيين حدود المعدل بـ 300 طلب في الدقيقة و8 طلبات متزامنة لكل مفتاح.
تجاوز هذه الحدود يؤدي إلى أخطاء HTTP 429. نفذ تراجعاً أسياً في منطق إعادة المحاولة. راقب حجم طلباتك للبقاء ضمن الحدود. إذا كنت بحاجة إلى معدل نقل أعلى، ففكر في تقسيم حمل العمل الخاص بك عبر حسابات متعددة أو تحسين أحجام طلباتك. يُظهر المفتاح فوراً عند التسجيل، لذا احتفظ به بأمان.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.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);
استكشاف أخطاء HTTP الشائعة
تشير أخطاء HTTP إلى مشكلات في طلبك أو استجابة الخادم. تشمل الأخطاء الشائعة 400 طلب غير صالح، و401 غير مصرح، و429 طلبات كثيرة جداً. غالباً ما يعني الخطأ 400 وجود JSON غير صحيح أو معلمات غير صالحة. يشير الخطأ 401 إلى مفتاح API غير صحيح أو منتهي الصلاحية.
تحقق من رؤوس الطلب والحمولة الخاصة بك بحثاً عن أخطاء في التركيب. تحقق من صحة مفتاح API الخاص بك ونشاطه. إذا تلقيت خطأ 429، انتظر وأعد المحاولة باستخدام استرداد أسي. استخدم مكتبات SDK الرسمية لـ OpenAI للتعامل مع هذه الأخطاء تلقائياً. فهي توفر رسائل خطأ واضحة ومنطق إعادة المحاولة. هذا يقلل من وقت التطوير ويحسن الموثوقية.
- 400: تحقق من صيغة JSON والمعاملات.
- 401: تحقق من صلاحية مفتاح API.
- 429: نفذ منطق إعادة المحاولة مع التراجع.
curl https://api.abliteratedllmonline.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
}'