HI ▾
NSFW Video Generator

बिना सेंसर API वयस्क वीडियो पाइपलाइन के लिए

NSFW वीडियो स्क्रिप्ट LLM API: केवल पाठ प्रवाह

एक NSFW वीडियो स्क्रिप्ट LLM API एक परियोजना के पाठ पक्ष को लिखता है: आउटलाइन, दृश्य सूची, संवाद और अन्य उपकरणों के लिए प्रॉम्प्ट। यह वीडियो नहीं बनाता है, और यह पृष्ठ दिखाता है कि यह कहाँ फिट बैठता है।

अपडेट किया गया

एक टर्मिनल से खाली फिल्म फ्रेमों में स्क्रिप्ट पेजों के प्रवाह की चित्रण, एक केवल-पाठ LLM वीडियो प्रवाह दिखाते हुए

मुख्य बिंदु

  1. API केवल पाठ है। यह स्क्रिप्ट, शॉट लिस्ट और प्रॉम्प्ट उत्पन्न करता है, कभी भी छवियाँ, ऑडियो या वीडियो नहीं।
  2. JSON मोड का उपयोग करें ताकि आपकी पाइपलाइन पार्स कर सके, एक सिस्टम प्रॉम्प्ट के साथ जो टोन और नियम सेट करता है।
  3. 100,000 टोकन की कॉन्टेक्स्ट विंडो आपको हर अनुरोध में पूरी कहानी बाइबल रखने देती है।
  4. पात्र वयस्क होने चाहिए, और नाबालिगों से जुड़ा यौन सामग्री कभी भी अनुमत नहीं है।

एक LLM वीडियो पाइपलाइन में क्या करता है

यदि आप एक nsfw वीडियो स्क्रिप्ट llm api प्रवाह बना रहे हैं, तो सबसे पहले श्रम विभाजन तय करना है। एक भाषा मॉडल लिखता है। एक अलग वीडियो मॉडल, या एक संपादक, या एक शूट, फुटेज बनाता है। यह सेवा केवल पहले भाग प्रदान करती है: एक ओपन-वेट टेक्स्ट मॉडल, जो कानूनी वय उपयोग के लिए बिना सेंसर उत्तर देने के लिए ट्यून्ड है, एक OpenAI-संगत एंडपॉइंट के पीछे। यह एक फ्रेम रेंडर नहीं करेगा, एक आवाज़ सिंथेसाइज़ नहीं करेगा या एक छवि नहीं बनाएगा, और यह एम्बेडिंग्स या फाइन-ट्यूनिंग प्रदान नहीं करता है।

यह वयस्क दर्शकों के लिए बनाए गए प्रोजेक्ट के आसपास के काम के अधिकांश हिस्से को कवर करता है, जैसे कि काल्पनिक साहित्य, रोलप्ले और कॉम्पैनियन-शैली की कहानी कहना। मॉडल एक ट्रीटमेंट तैयार कर सकता है, इसे दृश्यों में बांट सकता है, संवाद और नैरेशन लिख सकता है, शॉट-बाय-शॉट लिस्ट बना सकता है, और आपके द्वारा उपयोग किए जाने वाले किसी भी वीडियो टूल के लिए प्रॉम्प्ट तैयार कर सकता है। NSFW पाइपलाइन्स पेज बताता है कि यह टेक्स्ट चरण एक स्टैक के बाकी हिस्से से कैसे जुड़ता है।

एक नियम निश्चित है और हर अनुरोध पर लागू होता है: नाबालिगों से जुड़ा यौन सामग्री नहीं है। अपना सिस्टम प्रॉम्प्ट इस तरह से बनाएं कि हर किरदार एक वयस्क हो, और इसे प्रोजेक्ट की एक आवश्यकता मानें, कोई अंतिम विचार नहीं।

चार चरणों में एक पाइपलाइन

एक स्क्रिप्ट वर्कफ़्लॉब तब सबसे अच्छा काम करता है जब हर कॉल एक ही काम करे और संरचित आउटपुट अगले चरण को दे। एक व्यावहारिक लेआउट इस प्रकार दिखता है:

  1. कथा बाइबिल। एक दस्तावेज जिसमें पात्र (सभी वयस्क), सेटिंग, टोन और बार-बार आने वाले विवरण शामिल हैं। इसे एक बार लिखें और हर कॉल के साथ भेजें।
  2. आउटलाइन। एक कॉल प्रीमिस को 8 से 15 बीट सारांशों में बदल देती है।
  3. दृश्य पटकथाएँ। एक बीट के लिए एक कॉल संवाद, एक्शन लाइन्स और नैरेशन उत्पन्न करती है, निरंतरता के लिए बाइबिल और पिछले दृश्य का उपयोग करती है।
  4. शॉट लिस्ट और प्रॉम्प्ट। हर सीन के लिए अंतिम कॉल JSON लौटाती है: शॉट्स, अवधि, कैमरा नोट्स और आपकी वीडियो टूल के लिए प्रॉम्प्ट स्ट्रिंग।

इसे इस तरह बांटने से आउटपुट छोटे रहते हैं, जिससे हर परिणाम की समीक्षा करना आसान होता है और यदि आपको यह पसंद न आए तो उसे फिर से जनरेट करना सस्ता पड़ता है। इसका मतलब यह भी है कि एक विफल कॉल केवल एक सीन का खर्च करती है, पूरी स्क्रिप्ट का नहीं।

एक सिस्टम प्रॉम्प्ट जो नियम निर्धारित करता है

सिस्टम प्रॉम्प्ट वह जगह है जहां टोन, फॉर्मेट और सीमाएं रहती हैं। एक बिना रिफ्यूजल व्यवहार वाला मॉडल भी निर्देशों का पालन करता है, इसलिए आपके प्रॉम्प्ट की गुणवत्ता स्क्रिप्ट की गुणवत्ता तय करती है। जॉनर, पॉइंट ऑफ व्यू और क्या छोड़ना है, इसके बारे में विशिष्ट रहें। यहाँ वयस्क दर्शकों के लिए लिखी गई फिक्शन के लिए एक शुरुआती बिंदु है, जो पेज के पेशेवर पक्ष पर रहने के लिए लिखा गया है:

SYSTEM = '''You are a screenwriter for adult-audience fiction videos.
All characters are adults aged 25 or older, and you state each age in the character sheet.
Write in present tense, third person, with short visual action lines.
Keep dialogue natural and under 25 words per line.
Build tension and character through setting, glances and subtext.
Never include minors in any role or reference.
Follow the story bible exactly; do not change names, ages or relationships.
When asked for JSON, return only the JSON object.'''

इसे प्रोजेक्ट के अनुसार समायोजित करें। एक नॉयर मिस्ट्री और एक रोमांस कॉमेडी को अलग निर्देशों की आवश्यकता होती है, और प्रॉम्प्ट के अंदर एक लाइन स्टाइल उदाहरण अक्सर एडजेक्टिव्स के पैराग्राफ की तुलना में मॉडल को बेहतर तरीके से निर्देशित करता है।

JSON मोड में सीन लिस्ट जनरेट करना

शॉट लिस्ट चरण के लिए आपको आउटपुट चाहिए जिससे कोड पढ़ सके। JSON मोड एक पार्सेबल ऑब्जेक्ट लागू करता है। response_format={"type": "json_object"} पास करें, प्रॉम्प्ट में कीज़ का नाम दें और तापमान कम रखें। यह उदाहरण इस साइट के बेस URL और मॉडल ID uncensored के साथ Python openai पैकेज का उपयोग करता है।

import json, os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.nsfwvideogenerator.cc/v1",
    api_key=os.environ["NOTRACK_API_KEY"],
)

SYSTEM = open("system_prompt.txt").read()
BIBLE = open("story_bible.txt").read()

def shot_list(scene_text):
    resp = client.chat.completions.create(
        model="uncensored",
        messages=[
            {"role": "system", "content": SYSTEM},
            {"role": "user", "content": (
                "Story bible:\n" + BIBLE +
                "\n\nScene script:\n" + scene_text +
                "\n\nReturn a JSON object with key 'shots': a list of objects with "
                "'number', 'seconds', 'camera', 'action' and 'video_prompt'."
            )},
        ],
        response_format={"type": "json_object"},
        temperature=0.3,
        seed=7,
    )
    data = json.loads(resp.choices[0].message.content)
    return data["shots"]

for shot in shot_list(open("scene_03.txt").read()):
    print(shot["number"], shot["seconds"], shot["video_prompt"])

इसे आगे बढ़ाने से पहले परिणाम की जाँच करें। सुनिश्चित करें कि shots मौजूद है, seconds एक संख्या है, और प्रॉम्प्ट स्ट्रिंग्स खाली नहीं हैं। यदि पार्सिंग विफल होती है, तो एक बार पुनः प्रयास करें। विफल या अस्वीकृत अनुरोधों के लिए चार्ज नहीं किया जाता है, इसलिए एक त्रुटि वाले कॉल के लिए पुनः प्रयास करने में कोई अतिरिक्त लागत नहीं आती।

रचनात्मक टेक्स्ट के लिए मायने रखने वाले सेटिंग्स

विभिन्न चरणों के लिए अलग-अलग सेटिंग्स चाहिए, और API आमतौर पर निम्नलिखित पास करता है: temperature, top_p, stop, seed और फ्रीक्वेंसी व प्रेजेंस पेनल्टी।

  • रूपरेखाएँ और संवाद: विविधता के लिए तापमान 0.8 से 1.0। दो या तीन विariants जनरेट करें और एक चुनें।
  • शॉट लिस्ट: तापमान 0.2 से 0.3, साथ ही एक स्थिर seed ताकि उसी इनपुट का पुन: रन तुलनीय हो।
  • दोहराव: लंबे सीन कभी-कभी उसी वाक्यांश पर लूप हो जाते हैं। एक छोटी फ्रीक्वेंसी पेनल्टी, जैसे 0.3, मदद करती है।
  • लंबाई नियंत्रण: max_tokens वैकल्पिक है, लेकिन एक सीन के लिए 800 की कैप आउटपुट को सघन रखती है। "END SCENE" जैसे एक stop सीक्वेंस आपको एक मार्कर पर समाप्त करने देता है जिसे आप मॉडल से लिखने के लिए कहते हैं।
  • स्ट्रीमिंग: यदि एक लेखक आउटपुट को लाइव देख रहा है तो stream: true चालू करें। याद रखें कि एक स्ट्रीम अपना कॉन्करेंसी स्लॉट तब तक पकड़े रखता है जब तक यह समाप्त नहीं हो जाता।

क्विकस्टार्ट में प्रत्येक समर्थित पैरामीटर की सूची है, और एंडपॉइंट्स POST /v1/chat/completions और GET /v1/models हैं।

निरंतरता के लिए 100k कॉन्टेक्स्ट विंडो का उपयोग करना

निरंतरता जनरेटेड स्क्रिप्ट्स में आम विफलता है: एक नाम बदल जाता है, उम्र बदल जाती है, कोई प्रॉप गायब हो जाता है। कॉन्टेक्स्ट विंडो 100,000 टोकन का है, प्रॉम्प्ट और कंप्लीशन सहित, और यह इतना बड़ा है कि आप हर कॉल में पूरी स्टोरी बाइबिल, रूपरेखा और कई पूर्ण दृश्य डाल सकते हैं। इस स्केल के प्रोजेक्ट के लिए आपको रीट्रीवल सिस्टम की आवश्यकता नहीं है। तथ्यों को पेस्ट करें और मॉडल को हर बार उन्हें पढ़ने दें।

कॉन्टेक्स्ट विंडो मुफ़्त नहीं है, लेकिन सस्ता है। मान लीजिए कि आपकी बाइबिल और आउटलाइन मिलकर 20,000 टोकन की है और आप 50 सीन लिखते हैं, जहाँ हर कॉल में लगभग 600 टोकन रिटर्न होते हैं:

  • इनपुट: 50 x 20,000 = 1,000,000 टोकन x $0.15 प्रति 1M = $0.15
  • आउटपुट: 50 x 600 = 30,000 टोकन x $0.50 प्रति 1M = $0.015
  • कुल: 50 सीन के लिए $0.165

उसी 50 सीन पर एक शॉट-लिस्ट पास जोड़ें, जिसमें इनपुट 3,000 टोकन और आउटपुट 500 टोकन हो: इनपुट 150,000 टोकन का खर्च $0.0225 है और आउटपुट 25,000 टोकन का खर्च $0.0125 है, यानी अतिरिक्त $0.035। पूरा स्क्रिप्ट और शॉट लिस्ट लगभग $0.20 का आएगा, जो उस $0.50 के ट्रायल क्रेडिट से कम है जिसे आप API कुंजी पेज से क्लेम कर सकते हैं।

ध्यान रखें कि विंडो में प्रॉम्प्ट और जवाब दोनों को स्थान मिलना चाहिए। एक 20,000 टोकन की बाइबिल पर्याप्त जगह छोड़ती है, लेकिन एक 95,000 टोकन का प्रॉम्प्ट कम्प्लीशन के लिए कम जगह छोड़ता है।

आउटपुट की समीक्षा और सुधार

प्रत्येक जनरेटेड दृश्य को एक फर्स्ट ड्राफ्ट की तरह मानें। तीन जाँचें अधिकांश समस्याओं को वीडियो टूल तक पहुँचने से पहले पकड़ लेती हैं। पहला, एक कंसिस्टेंसी पास चलाएँ: पूर्ण स्क्रिप्ट को स्टोरी बाइबिल के साथ वापस भेजें और मॉडल से किसी भी जगह का नाम, उम्र, स्थान या टाइमलाइन में अंतर की सूची बनाने को कहें। कम तापमान के साथ एक दूसरी कॉल सस्ती होती है और अक्सर उन विचलनों को खोज लेती है जो आपकी आँखों से छूट गए। दूसरा, संवाद को ज़ोर से पढ़ें। लाइनें जो स्क्रीन पर ठीक लगती हैं, बोलते समय अजीब लग सकती हैं, और एक वॉइस-ओवर एक्टर या टेक्स्ट-टू-स्पीच टूल उन्हें तुरंत उजागर कर देगा। तीसरा, जाँचें कि शॉट की अवधि उस लंबाई के बराबर है जिसे आपने योजना बनाया था। मॉडल अंकगणित में ढीले होते हैं, इसलिए seconds फ़ील्ड्स को कोड में जोड़ें, मॉडल द्वारा लिखे गए कुल योग पर भरोसा न करें।

जब एक सीन लक्ष्य को छूता नहीं है, तो पूरे सिस्टम प्रॉम्प्ट को बदलने का विरोध करें। यूजर मेसेज में एक करेक्टिव इंस्ट्रक्शन जोड़ें, जैसे "छोटी एक्शन लाइनें" या "ज्यादा संवाद, कम डिस्क्रिप्शन", और केवल उसी सीन को रीजनरेट करें। बाइबिल और सिस्टम प्रॉम्प्ट को स्थिर रखते हुए एक समय में एक इंस्ट्रक्शन बदलने से यह स्पष्ट होता है कि किस बदलाव से मदद मिली। seed पैरामीटर यहाँ उपयोगी है, क्योंकि एक फिक्स्ड सीड के साथ छोटे प्रॉम्प्ट एडिट से एडिट के प्रभाव को अलग किया जा सकता है।

सीमाएँ, ईमानदारी और अगले कदम

बनाने से पहले कुछ साधारण प्रतिबंध। मॉडल केवल टेक्स्ट है, इसलिए हर वीडियो, इमेज और वॉइस ट्रैक को अन्य टूल्स से आना होगा। यह एक ओपन-वेट मॉडल है जो एक स्वतंत्र प्रदाता द्वारा चलाया जाता है, और यह किसी बड़े विक्रेता की आधिकारिक API नहीं है। गुणवत्ता प्रॉम्प्ट के साथ बदलती है, इसलिए हर स्क्रिप्ट पर एक व्यक्ति द्वारा एक समीक्षा चरण की योजना बनाएं; आउटपुट को एक ड्राफ्ट मानें।

थ्रूपुट के मामले में, एक पूर्ण कुंजी 8 समानांतर अनुरोध और प्रति मिनट 300 की अनुमति देती है, जबकि ट्रायल कुंजी 2 और 60 की अनुमति देती है। यदि आप दृश्यों को समानांतर में लिखते हैं, तो अपने वर्कर पूल को उसी अनुसार सेट करें। rate_limited या concurrency के साथ 429 का अर्थ है धीमा करें; Retry-After: 5 हेडर के साथ एक अनुरोध का अर्थ है कि सेवा अस्थायी रूप से ओवरलोड है, इसलिए पाँच सेकंड प्रतीक्षित करें और पुनः प्रयास करें। प्रॉम्प्ट को प्रशिक्षण के लिए उपयोग नहीं किया जाता है।

भुगतान क्रेडिट $20 के टॉप-अप से शुरू होता है, $500 तक कोई भी पूर्ण राशि, $50 से +5%, $100 से +10% और $200 से +15% बोनस के साथ। भुगतान केवल क्रिप्टो के माध्यम से होता है, TRC20 पर USDT या Base पर USDC, और क्रेडिट कभी समाप्त नहीं होता है। वर्तमान शर्तें मूल्य निर्धारण पृष्ठ पर उपलब्ध हैं। ऊपर दिए गए प्रोजेक्ट के लिए, $20 दर्जनों पूर्ण स्क्रिप्टों को कवर करता है।

प्रश्न और उत्तर

क्या API वीडियो स्वयं उत्पन्न कर सकता है?

नहीं। यह एक केवल-पात्र LLM API है। यह स्क्रिप्ट, दृश्य सूची और प्रॉम्प्ट लिखता है, और आप किसी भी वीडियो बनाने के लिए एक अलग टूल का उपयोग करते हैं।

क्या कोई सामग्री सीमा से बाहर है?

हाँ। नाबालिगों से जुड़ी यौन सामग्री कभी भी अनुमति नहीं है। मॉडल कानूनी वयस्क उपयोग के लिए है, और आपके प्रोजेक्ट में सभी कैरेक्टर वयस्क होने चाहिए।

मुझे पार्स करने योग्य शॉट लिस्ट कैसे मिले?

response_format को json_object पर सेट करें, अपने प्रॉम्प्ट में कुंजियों को नाम दें, तापमान को लगभग 0.3 तक कम करें और json.loads का उपयोग करके परिणाम की सत्यापित करें।

एक पूर्ण स्क्रिप्ट का खर्च कितना है?

20,000 टोकन की स्टोरी बाइबल और लगभग 600 टोकन के 50 दृश्यों (प्रत्येक) का उपयोग करते हुए, लेखन पास की लागत लगभग $0.165 है, $0.15 प्रति 1M इनपुट टोकन और $0.50 प्रति 1M आउटपुट टोकन पर।

आपकी कुंजी प्राप्त करने के लिए बस एक फॉर्म भरना बाकी है

एक खाता बनाएँ, कुंजी कॉपी करें, और बेस URL बदलें। यही संपूर्ण सेटअप है।