आपका JSON प्रतिक्रिया सत्यापन में क्यों विफल हो रहा है
जब मॉडल कोड ब्लॉक के बाहर संवादात्मक टेक्स्ट जोड़ता है तो JSON पार्सिंग विफल हो जाती है। Uncensored मॉडल प्राकृतिक भाषा प्रवाह को प्राथमिकता देते हैं, इसलिए वे अक्सर कच्चे डेटा के आगे या पीछे "यहाँ 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 से घटाएं। यदि आप रोलप्ले कर रहे हैं, तो सिस्टम प्रॉम्प्ट संक्षिप्त रखें। केवल हालिया संवाद टर्न्स को API अनुरोध में स्टोर करें। पुराने संदर्भ को सारांशित या ट्रंक किया जा सकता है। यह जनरेशन के बीच कठोर सीमा पर पहुंचने से रोकता है।
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 array. 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 जैसे निम्न मान आउटपुट को अधिक निर्धारित और केंद्रित बनाते हैं। NSFW रोलप्ले के लिए, उच्च तापमान अधिक विविध और तीव्र प्रतिक्रियाएं उत्पन्न करते हैं।
सही संतुलन खोजने के लिए विभिन्न मानों के साथ प्रयोग करें। बहुत उच्च तापमान असंगत या दोहराए जाने वाले टेक्स्ट का कारण बन सकता है। बहुत कम तापमान रोबोटिक या बेस्वाद संवाद का परिणाम हो सकता है। वांछित टोन और स्थिरता के आधार पर एडजस्ट करें। अनसेंसर्ड मॉडल उच्च रचनात्मकता सेटिंग्स के अच्छी तरह से प्रतिक्रिया देता है।
- रचनात्मक रोलप्ले के लिए 0.7-0.9 का उपयोग करें।
- तथ्यात्मक या कोडिंग कार्यों के लिए 0.2-0.5 का उपयोग करें।
- जैसे-जैसे आप समायोजन करते हैं, आउटपुट गुणवत्ता की निगरानी करें।
Top P और रोलप्ले जनरेशन में विविधता
Top P (nucleus sampling) मॉडल को संभाव्यता द्रव्यमान के शीर्श प्रतिशत पर विचार करने तक सीमित करता है। यह विविधता को नियंत्रित करने के लिए तापमान के साथ काम करता है। एक कम 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 चंक सटीक टोकन गणना प्रदान करता है। इसका उपयोग अपने स्थानीय बैलेंस या बिलिंग डैशबोर्ड को अपडेट करने के लिए करें। त्रुटियां और अस्वीकृतियां मुफ्त हैं, इसलिए आप केवल सफल पूर्णताओं के लिए भुगतान करते हैं। यह पे-एज़-यू-गो मॉडल सुनिश्चित करता है कि आप कभी अधिक न भुगतें।
- इनपुट टोकन की कीमत प्रति मिलियन $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 Bad Request, 401 Unauthorized, और 429 Too Many Requests शामिल हैं। एक 400 त्रुटि अक्सर खराब फॉर्मेट JSON या अमान्य पैरामीटर का अर्थ होती है। एक 401 त्रुटि एक गलत या समाप्त हो चुकी API कुंजी को दर्शाती है।
अपने अनुरोध हेडर्स और पेलोइड में सिंटैक्स त्रुटियों की जांच करें। सुनिश्चित करें कि आपकी API कुंजी सही और सक्रिय है। यदि आपको 429 त्रुटि मिलती है, तो प्रतीक्षा करें और एक्सपोनेंशियल बैकऑफ के साथ पुनः प्रयास करें। इन त्रुटियों को स्वचालित रूप से संभालने के लिए आधिकारिक OpenAI SDKs का उपयोग करें। वे स्पष्ट त्रुटि संदेश और रेट्राइज लॉजिक प्रदान करते हैं। यह विकास समय कम करता है और विश्वसनीयता सुधारता है।
- 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"}]
}'