मुख्य बिंदु
- $0.50 का ट्रायल क्रेडिट सैकड़ों छोटे रोलप्ले टर्न के लिए पर्याप्त है, 7 दिनों के लिए मान्य, कोई भुगतान आवश्यक नहीं।
- कोई भी फ्रंट एंड जो एक OpenAI-कम्पैटिबल एंडपॉइंट स्वीकार करता है, काम करता है: बेस URL, कुंजी और मॉडल
uncensoredसेट करें। - लागत चैट इतिहास की लंबाई द्वारा निर्धारित होती है, न कि जवाब की लंबाई द्वारा। पुराने टर्न को काटें या सारांश दें।
- केवल कानूनी वयस्कों के लिए कथा और रोलप्ले। नाबालिगों से जुड़ा कुछ भी नहीं, कभी भी।
यहाँ मुफ़्त का अर्थ क्या है
इस सेवा पर कोई अनलिमिटेड फ्री चैट नहीं है, और इसे शुरू में ही कह देना बेहतर है। आपको मिलता है एक ट्रायल बैलेंस: जब आप Google, या ईमेल और पासवर्ड से साइन इन करते हैं, तो आप $0.50 ट्रायल क्रेडिट API कुंजी पेज पर एक क्लिक से क्लेम कर सकते हैं। यह प्रति व्यक्ति एक बार मिलता है, यह 7 दिनों के लिए मान्य है, और इसके लिए भुगतान की आवश्यकता नहीं है। ट्रायल कुंजी 2 समानांतर अनुरोध और प्रति मिनट 60 अनुरोध के साथ चलती है, जो एक व्यक्ति के चैट करने के लिए काफी है।
यह छोटा लग सकता है, लेकिन टोकन सस्ते हैं। इनपुट की लागत 1M टोकन प्रति $0.15 है और आउटपुट की लागत 1M टोकन प्रति $0.50 है। 8,000-टोकन वाले प्रॉम्प्ट और 300-टोकन वाले जवाब वाले एक सामान्य रोलप्ले टर्न की लागत $0.00135 आती है, इसलिए $0.50 से लगभग 370 टर्न चलते हैं। कई लोगों के लिए यह एक पूरी शाम या कई छोटी कहानियाँ होती हैं, जो किसी भी पैसे खर्च करने से पहले यह तय करने के लिए पर्याप्त होती हैं कि सेटअप उनका काम आता है या नहीं।
जब ट्रायल समाप्त हो जाता है, तो आप $20 से शुरू करके किसी भी पूर्ण राशि में, $500 तक टॉप-अप करते हैं। क्रेडिट कभी समाप्त नहीं होता, विफल या अस्वीकृत अनुरोधों के लिए चार्ज नहीं किया जाता है, और रद्द करने के लिए कोई सब्सक्रिप्शन नहीं है। यह साइट केवल क्रिप्टो लेता है: TRC20 पर USDT या Base पर USDC।
एक फ्रंट-एंड चुनें
API केवल HTTP के माध्यम से टेक्स्ट ही संभालता है। आपको अभी भी कुछ ऐसा चाहिए जो आपके किरदारों, चैट इतिहास और प्रॉम्प्ट टेम्पलेट को संभाले। तीन सामान्य विकल्प:
- SillyTavern. किरदार चैट के लिए बनाया गया एक लोकल वेब ऐप, जिसमें लोरबुक्स, पर्सोना और प्रीसेट्स हैं। यह आपको एक OpenAI-कम्पैटिबल एंडपॉइंट जोड़ने देता है, जो कि बिल्कुल वही है जो यह API है।
- एक अन्य चैट क्लाइंट जो एक कस्टम OpenAI-संगत URL के लिए फ़ील्ड्स प्रदर्शित करता है। कस्टम एंडपॉइंट, प्रॉक्सी या OpenAI-संगत नामक सेटिंग्स खोजें।
- आपकी अपनी स्क्रिप्ट। पायथन की पचास पंक्तियाँ आपको मेमोरी, प्रॉम्प्ट और लागत पर पूर्ण नियंत्रण देती हैं। यह यह देखने का सबसे आसान तरीका भी है कि आप वास्तव में क्या भेज रहे हैं।
यदि आप एक ऐप बना रहे हैं और केवल चैट नहीं कर रहे हैं, तो समान कॉल्स किसी भी OpenAI SDK से काम करती हैं। डॉक्स में दिए गए क्विकस्टार्ट में एंडपॉइंट, हेडर्स और लिमिट्स एक ही जगह सूचीबद्ध हैं।
SillyTavern को पांच चरणों में कनेक्ट करें
- एक खाता बनाएं, API कुंजी पेज खोलें, ट्रायल क्रेडिट क्लेम करें और अपनी कुंजी कॉपी करें।
- SillyTavern में, प्लग आइकन (API कनेक्शन) खोलें और API प्रकार को Chat Completion पर सेट करें।
- Custom (OpenAI-compatible) नाम के स्रोत को चुनें।
https://api.uncensoredvideo.cc/v1को कस्टम एंडपॉइंट फ़ील्ड में पेस्ट करें, अपनी कुंजी को कुंजी फ़ील्ड में डालें, और मॉडल ID के रूप मेंuncensoredटाइप करें।- Connect दबाएं। एक ग्रीन स्टेटस का मतलब है कि
GET /v1/modelsअनुरोध या टेस्ट मैसेज सफल रहा है।
मेनू लेबल्स SillyTavern के संस्करणों के बीच बदल जाते हैं, इसलिए सटीक शब्दावली के बजाय विचार से मेल खाएं। ऐप को दोष देने से पहले, टर्मिनल से कुंजी का परीक्षण करें:
curl https://api.uncensoredvideo.cc/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","messages":[{"role":"user","content":"Reply with the word ready."}]}'यदि curl काम करता है और ऐप नहीं, तो समस्या ऐप के फील्ड्स में है: एक गायब /v1, कुंजी में स्ट्रे स्पेस, या गलत मॉडल नाम।
या एक छोटी चैट लूप लिखें
स्क्रिप्ट रोलप्ले की लागत सीखने का एक अच्छा तरीका है, क्योंकि आप हर टर्न पर टोकन उपयोग प्रिंट कर सकते हैं। यह एक पर्सोना प्रॉम्प्ट रखता है, इतिहास को आखिरी 20 संदेशों तक ट्रिम करता है और जवाब को स्ट्रीम करता है।
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredvideo.cc/v1",
api_key=os.environ["API_KEY"],
)
system = (
"You are Mara, a dry-witted smuggler pilot in a space-opera story. "
"Stay in character, write in third person, keep replies under 150 words."
)
history = []
while True:
user = input("> ")
history.append({"role": "user", "content": user})
messages = [{"role": "system", "content": system}] + history[-20:]
stream = client.chat.completions.create(
model="uncensored",
messages=messages,
temperature=0.9,
top_p=0.95,
max_tokens=300,
stream=True,
stream_options={"include_usage": True},
)
reply = ""
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
piece = chunk.choices[0].delta.content
reply += piece
print(piece, end="", flush=True)
if chunk.usage:
print("\n[tokens in/out: %d/%d]" % (chunk.usage.prompt_tokens, chunk.usage.completion_tokens))
history.append({"role": "assistant", "content": reply})उपयोग वाली पंक्ति पर नज़र रखें। कुछ दर्जन टर्न के बाद आप देखेंगे कि इनपुट गिनती बढ़ रही है जबकि आउटपुट स्थिर रहता है। यह वह संख्या है जिसे आप प्रबंधित करना चाहेंगे।
एक किरदार प्रॉम्प्ट लिखें जो टिका रहे
अधिकांश रोलप्ले समस्याएं पहले प्रॉम्प्ट में शुरू होती हैं, न कि मॉडल में। एक अच्छा किरदार प्रॉम्प्ट छोटा और विशिष्ट होता है। किरदार का नाम दें, एक या दो वाक्यों में एक आवाज़ दें, सेटिंग का वर्णन करें, और बताएं कि जवाब कितने लंबे होने चाहिए। फिर रुक जाएं। हर अतिरिक्त नियम हर टर्न पर भुगतान किए जाने वाले एक टोकन है, और "करें और न करें" की एक लंबी सूची एक स्पष्ट उदाहरण की तुलना में कम अच्छी तरह से अनुसरण की जाती है।
एक ही पायलट का वर्णन करने के दो तरीकों की तुलना करें। पहला कहता है कि वह साहसी, मज़ाकिया, वफादार और बुद्धिमान है। यह मॉडल को कुछ भी नहीं बताता जिस पर वह कार्य कर सके। दूसरा कहता है कि वह पहले मज़ाक से और बाद में सच से जवाब देती है, जब तक दो बार न पूछा जाए तब तक अपने अतीत की व्याख्या नहीं करती है, और जब एक जहाज का हिस्सा टूट जाता है तो हल्की गाली देती है। दूसरा मॉडल को दोहराने के लिए आदतें देता है, और आदतें ही वह हैं जो पाठक व्यक्तित्व के रूप में अनुभव करते हैं।
तीन या चार लाइनों का एक छोटा उदाहरण एक्सचेंज जोड़ें। मॉडल लय बहुत अच्छी तरह कॉपी करते हैं, इसलिए एक उदाहरण एक अलग नियम के बिना लंबाई, टेंस और पॉइंट ऑफ व्यू को ठीक करता है। यदि आप दूसरे व्यक्ति में लिखते हैं, तो उसे दिखाएं। यदि आप इटैलिक में नैरेशन चाहते हैं, तो उसे भी दिखाएं। उदाहरण को सिस्टम प्रॉम्प्ट या इतिहास के पहले संदेशों में डालें।
अंत में, तय करें कि अन्य किरदारों का नियंत्रण किसके पास है। यदि आप चाहते हैं कि मॉडल एक पूरी कास्ट को निभाए, तो ऐसा कहें। यदि आप चाहते हैं कि यह केवल एक भूमिका निभाए, तो कहें कि इसे आपके किरदार के शब्दों या कार्यों को कभी नहीं लिखना चाहिए। आपके किरदार के नाम पर एक स्टॉप सीक्वेंस इसे API स्तर पर समर्थन देता है।
एक रोलप्ले टर्न की लागत क्या है
प्रत्येक अनुरोध सिस्टम प्रॉम्प्ट, किरदार का विवरण और इतिहास फिर से भेजता है, इसलिए चैट जितनी लंबी होती जाती है, इनपुट टोकन बढ़ते जाते हैं। यहाँ एक 300-टोकन जवाब के लिए अंकगणित है, जिसकी अपनी लागत 300 x $0.50 / 1,000,000 = $0.00015 आती है:
| प्रॉम्प्ट का आकार | इनपुट लागत | प्रति टर्न लागत | प्रति 100 टर्न | $0.50 में टर्न |
|---|---|---|---|---|
| 4,000 टोकन | $0.0006 | $0.00075 | $0.075 | लगभग 666 |
| 8,000 टोकन | $0.0012 | $0.00135 | $0.135 | लगभग 370 |
| 20,000 टोकन | $0.0030 | $0.00315 | $0.315 | लगभग 158 |
| 50,000 टोकन | $0.0075 | $0.00765 | $0.765 | लगभग 65 |
गणना सरल है। समान संख्या में टर्न्स के लिए, 8,000 टोकन का प्रॉम्प्ट 5.7 गुना सस्ता पड़ता है 50,000 टोकन वाले प्रॉम्प्ट की तुलना में। 8,000 टोकन के स्तर पर, $20 का टॉप-अप लगभग 14,800 टर्न्स के लिए पर्याप्त है। बड़े टॉप-अप पर बोनस मिलता है: $50 से +5%, $100 से +10% और $200 से +15%, इसलिए $100 पर आपको $110 का क्रेडिट मिलता है। पूर्ण तालिका के लिए मूल्य निर्धारण पृष्ठ देखें।
लंबी कहानियों को सस्ता और सुसंगत रखें
कॉन्टेक्स्ट विंडो 100,000 टोकन की है, जिसमें प्रॉम्प्ट और जवाब दोनों शामिल हैं, इसलिए आप बहुत कुछ लोड कर सकते हैं। लेकिन आपको ऐसा करने की बहुत जरूरत नहीं है। लंबे प्रॉम्प्ट महंगे पड़ते हैं और मॉडल को भटकने के लिए अधिक पाठ देते हैं। कुछ आदतें मदद करती हैं:
- सारांश बनाएं, फिर हटाएं। हर 20 टर्न्स पर, मॉडल से अब तक की कहानी का 150 शब्दों का सारांश मांगें, इसे सिस्टम प्रॉम्प्ट में रखें, और पुराने संदेशों को हटा दें।
- कैरेक्टर शीट छोटी रखें। नियमों का एक पेज जिसे मॉडल नजरअंदाज करता है, वह वह पेज है जिसके लिए आपको हर टर्न पर भुगतान करना पड़ता है।
- जवाब की सीमा तय करें।
max_tokensवैकल्पिक है, लेकिन एक सीमा अनियंत्रित जवाबों को रोकती है और गति को नियंत्रित रखती है। - सैंपलिंग को ट्यून करें। 0.8 से 1.0 के आसपास तापमान (temperature) कथाओं के लिए उपयुक्त है। यदि मॉडल वाक्यांशों को दोहराता है, तो उपस्थिति या आवृत्ति दंड (penalty) को थोड़ा बढ़ाएं। ये मान पास किए जाते हैं।
stopसीक्वेंस का उपयोग करें ताकि मॉडल आपके किरदार की लाइनें आपके लिए न लिखे, उदाहरण के लिए आपके किरदार के नाम के बाद एक कोलन।
फिक्स्ड सीड्स (fixed seeds) भी पास किए जाते हैं, जो मदद करते हैं जब आप एक दृश्य को दोबारा चलाना चाहते हैं और दो प्रॉम्प्ट संस्करणों की तुलना करना चाहते हैं।
सामान्य समस्याएं और त्वरित समाधान
ये वे मुद्दे हैं जो लोग लंबी चैट्स में सबसे अधिक बार सामना करते हैं, उस सेटिंग के साथ जो आमतौर पर मदद करती है।
- मॉडल आपके लिए बोल रहा है। सिस्टम प्रॉम्प्ट में एक लाइन जोड़ें, और अपने कैरेक्टर के नाम पर एक स्टॉप सीक्वेंस जोड़ें।
- जवाब हर टर्न पर लंबे होते जा रहे हैं। मॉडल पिछले जवाबों की लंबाई की नकल कर रहा है।
max_tokensकम करें, एक लंबे जवाब को हाथ से संपादित करके छोटा करें, और पैटर्न रीसेट हो जाएगा। - दोहराए गए वाक्यांश। तापमान को थोड़ा बढ़ाएं, एक छोटा उपस्थिति या आवृत्ति दंड जोड़ें, और अपने संदेशों में विविधता लाएं। मॉडल वही प्रतिबिंबित करता है जो वह देखता है।
- भूले हुए विवरण। उन तथ्यों को रखें जिन्हें बरकरार रखना है, जैसे नाम, चोटें और वादे, प्रॉम्प्ट के ऊपरी हिस्से में एक छोटे पिन किए गए नोट में, और कहानी बदलने पर इसे अपडेट करें।
- सपाट टोन। एक मजबूत आवाज का उदाहरण दें। टोन उदाहरणों से आती है, विशेषणों से कहीं ज्यादा।
जब कुछ अजीब होता है, तो आपकी स्क्रिप्ट जो संदेश भेजती है, उनकी पूरी सूची प्रिंट करें। दस बार में से नौ बार कारण प्रॉम्प्ट में ही दिखाई देता है: कोई बचा हुआ निर्देश, कोई दोहराया गया सारांश, या कोई ऐसा इतिहास जिसे काटा नहीं गया था।
सीमाएं और त्रुटियां जिनका आप सामना कर सकते हैं
एक पूर्ण कुंजी 8 समानांतर अनुरोध और प्रति मिनट 300 अनुरोध की अनुमति देती है, ट्रायल कुंजी 2 और 60 की। यदि आप सीमा पार करते हैं, तो API HTTP 429 लौटाता है। त्रुटि कोड rate_limited का अर्थ है प्रति मिनट बहुत सारे अनुरोध, और concurrency का अर्थ है एक साथ बहुत सारे। 429 के साथ एक Retry-After: 5 हेडर अस्थायी ओवरलोड का संकेत देता है, इसलिए पाँच सेकंड प्रतीक्षा करें और पुनः प्रयास करें।
एक बारीकी अक्सर लोगों को उलझा देती है: स्ट्रीम किया गया अनुरोध अपने कॉन्करेंसी स्लॉट को स्ट्रीम समाप्त होने तक पकड़े रखता है। यदि आप ट्रायल कुंजी पर तेजी से तीन बार रीजेनरेट पर क्लिक करते हैं, तो तीसरा प्रयास concurrency के साथ विफल हो सकता है। स्ट्रीम के समाप्त होने की प्रतीक्षा करें या क्लाइंट को एक छोटे विराम के बाद पुनः प्रयास करने दें। हर रिस्पॉन्स में X-Balance-USD भी होता है, इसलिए आपकी स्क्रिप्ट हर टर्न के बाद शेष बैलेंस प्रिंट कर सकता है।
एक नियम जो नहीं बदलता: मॉडल को कानूनी वयस्क उपयोग के लिए बिना सामग्री अस्वीकृति के उत्तर देने के लिए ट्यून्ड किया गया है, और यह नाबालिगों से जुड़ी यौन सामग्री नहीं लिखेगा। अपनी कहानियों को उस सीमा के भीतर रखें। प्रॉम्प्ट को प्रशिक्षण के लिए उपयोग नहीं किया जाता है।
