मुख्य बिंदु
- OpenCode का उपयोग शुरू करने से पहले curl के साथ एंडपॉइंट की जांच करें, ताकि यह पता चल सके कि विफलता कॉन्फ़िगरेशन में है या API में।
- एक कस्टम प्रोवाइडर के लिए तीन चीज़ें चाहिए: बेस URL, API कुंजी और एक मॉडल ID, जो यहाँ uncensored है।
- कॉन्टेक्स्ट लिमिट को 100,000 टोकन पर सेट करें ताकि एजेंट वास्तविक विंडो के आसपास योजना बना सके।
- स्ट्रीमिंग और टूल कॉलिंग समर्थित हैं, जो एक एजेंट लूप के लिए आवश्यक है।
शुरू करने से पहले आपको क्या चाहिए
OpenCode एक ओपन-सोर्स कोडिंग एजेंट है जो आपके टर्मिनल में चलता है। यह कई मॉडल प्रोवाइडर्स से बात कर सकता है, और यह आपको अपनी कस्टम प्रोवाइडर जोड़ने देता है यदि एंडपॉइंट OpenAI चैट फॉर्मेट का पालन करता है। यह API ऐसा ही है, इसलिए सेटअप करने के लिए कुछ फ़ील्ड भरने की आवश्यकता है।
सबसे पहले ये तीन मान एकत्र करें:
- बेस URL:
https://api.kimicode.top/v1 - मॉडल ID:
uncensored - API कुंजी: API कुंजी पेज पर एक बनाएं। नए खातों में एक क्लिक के साथ $0.50 का ट्रायल क्रेडिट दावा किया जा सकता है, जो नीचे दिए गए परीक्षणों के लिए पर्याप्त है। ट्रायल कुंजी 2 समानांतर अनुरोधों और प्रति मिनट 60 अनुरोधों की अनुमति देती है।
कुंजी को फ़ाइलों में पेस्ट करने के बजाय एक एनवायरनमेंट वेरिएबल में रखें जिसे आप कम्माइट करते हैं:
export KIMICODE_API_KEY="your-key-here"चरण 1: curl के साथ एंडपॉइंट का परीक्षण करें
किसी भी टूल को कॉन्फ़िगर करने से पहले यह करें। यदि curl काम करता है और OpenCode नहीं, तो आपको पता चलता है कि समस्या कॉन्फ़िगरेशन में है। यदि curl विफल हो जाता है, तो आप कुंजी या URL को एक बार ठीक करते हैं, दो जगहों पर नहीं।
curl https://api.kimicode.top/v1/chat/completions \
-H "Authorization: Bearer $KIMICODE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Say hello in five words."}],
"max_tokens": 40
}'
आपको एक JSON ऑब्जेक्ट मिलना चाहिए जिसमें choices एरे और एक usage ब्लॉक हो। 401 का अर्थ है कि कुंजी गलत है या Bearer प्रीफ़िक्स गायब है। 404 का अर्थ आमतौर पर यह है कि URL में टाइपो है या इसमें पहले से /chat/completions मौजूद है।
एक कोडिंग एजेंट अपने उत्तर स्ट्रीम करता है और टूल्स का उपयोग करता है, इसलिए इन दोनों की जांच भी करें:
curl -N https://api.kimicode.top/v1/chat/completions \
-H "Authorization: Bearer $KIMICODE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"stream": true,
"messages": [{"role": "user", "content": "Count from one to five."}]
}'
आपको data: लाइनों की एक श्रृंखला देखनी चाहिए, जिनमें छोटा JSON डेल्टा होता है, जो उपयोग आंकड़ों और एक अंतिम मार्कर के साथ समाप्त होता है। -N फ़्लैग curl के बफ़रिंग को बंद कर देता है ताकि चंक आने पर तुरंत दिखाई दें।
चरण 2: OpenCode में एक कस्टम प्रोवाइडर जोड़ें
OpenCode opencode.json JSON कॉन्फ़िगरेशन फ़ाइल को आपके प्रोजेक्ट फ़ोल्डर या इसके ग्लोबल कॉन्फ़िगरेशन डायरेक्टरी से पढ़ता है। कस्टम OpenAI-शैली वाले प्रोवाइडर्स को AI SDK के OpenAI कम्पैटिबल पैकेज, एक बेस URL और मॉडलों की सूची के साथ घोषित किया जाता है। नीचे दिया गया लेआउट लेखन के समय OpenCode की सार्वजनिक दस्तावेज़ीकरण का पालन करता है। फ़ील्ड के नाम रिलीज़ के बीच बदल सकते हैं, इसलिए यदि कुछ अस्वीकार कर दिया जाता है तो इसे वर्तमान OpenCode दस्तावेज़ों के प्रोवाइडर सेक्शन से तुलना करें।
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"kimicode": {
"npm": "@ai-sdk/openai-compatible",
"name": "Kimicode API",
"options": {
"baseURL": "https://api.kimicode.top/v1",
"apiKey": "{env:KIMICODE_API_KEY}"
},
"models": {
"uncensored": {
"name": "Uncensored",
"limit": {
"context": 100000,
"output": 8192
}
}
}
}
},
"model": "kimicode/uncensored"
}
models के तहत कुंजी सर्वर को भेजे जाने वाली सटीक मॉडल ID है, इसलिए इसे uncensored लिखा जाना चाहिए। अंतिम पंक्ति प्रोवाइडर और मॉडल को डिफ़ॉल्ट के रूप में चुनती है, जिसे प्रोवाइडर नाम, एक स्लैश और फिर मॉडल ID के रूप में लिखा गया है।
{env:KIMICODE_API_KEY} फॉर्म OpenCode को आपके शेल से वेरिएबल पढ़ने के लिए कहता है। यदि आपका संस्करण अपने लॉगिन कमांड के माध्यम से क्रेडेंशियल संभालता है, तो उस मार्ग का उपयोग करें और कुंजी को फ़ाइल से बाहर रखें। किसी भी स्थिति में, असली कुंजी को कम्माइट न करें।
प्रोजेक्ट कॉन्फ़िगरेशन या ग्लोबल कॉन्फ़िगरेशन
आप प्रोवाइडर ब्लॉक को दो जगहों पर रख सकते हैं। प्रोजेक्ट रूट में एक फ़ाइल केवल उस रिपॉजिटरी पर लागू होती है, जो एक सेटअप साझा करने वाली टीम के लिए उपयुक्त है। आपके यूजर कॉन्फ़िगरेशन डायरेक्टरी में एक फ़ाइल हर जगह लागू होती है, जो एक व्यक्तिगत डिफ़ॉल्ट के लिए उपयुक्त है। जहाँ दोनों मौजूद हैं, वहाँ प्रोजेक्ट फ़ाइल ग्लोबल फ़ाइल को जोड़ती है या ओवरराइड करती है।
प्रोवाइडर परिभाषा के लिए ग्लोबल फ़ाइल को प्राथमिकता दें और कुंजी के लिए एनवायरनमेंट वेरिएबल। फिर हर रिपॉजिटरी एंडपॉइंट का उपयोग कर सकती है, और आपका स्रोत कोड के पास कोई गोपनीय डेटा नहीं रहता है। यदि एक प्रोजेक्ट में कई लोग काम करते हैं, तो केवल प्रोवाइडर ब्लॉक को कम्माइट करें बिना कुंजी के, और प्रत्येक व्यक्ति को अपना वेरिएबल सेट करने दें। इससे कुंजी को रोटेट करना भी सरल हो जाता है: वेरिएबल बदलें, टर्मिनल रीस्टार्ट करें, और कॉन्फ़िगरेशन फ़ाइल अपरिवर्तित रहती है।
चरण 3: मॉडल चुनें और एक टास्क चलाएं
एक प्रोजेक्ट फ़ोल्डर में OpenCode शुरू करें और इसका मॉडल पिकर खोलें। आपकी कस्टम प्रोवाइडर सूची में आपके द्वारा सेट किए गए डिस्प्ले नाम के साथ दिखाई देनी चाहिए। इसे चुनें, और फिर एजेंट को एक छोटा, जाँचने योग्य कार्य दें जैसे कि किसी फ़ंक्शन को समझाना या एक छोटी फ़ाइल के लिए यूनिट टेस्ट लिखना।
शुरुआत छोटी मात्रा में करें, दो कारणों से। पहला, आप देख सकते हैं कि फ़ंक्शन कॉलिंग काम कर रही है या नहीं: जब OpenCode मॉडल से किसी फ़ाइल को पढ़ने या संपादित करने को कहता है, तो वह फ़ंक्शन कॉलिंग इंटरफ़ेस के माध्यम से ऐसा करता है। दूसरा, एक कोडिंग एजेंट हर टर्न पर बहुत सारा टेक्स्ट भेजता है, जिसमें फ़ाइल की सामग्री और इतिहास शामिल होता है, इसलिए एक लंबी सत्र में टोकन तेज़ी से खत्म हो जाते हैं। अगला खंड इसकी संख्यात्मक गणना प्रस्तुत करता है।
यदि मॉडल दिखाई नहीं देता, तो जांचें कि फ़ाइल वैध JSON है, यह सुनिश्चित करें कि वह फ़ाइल उस स्थान पर है जहाँ OpenCode कॉन्फ़िगरेशन ढूंढता है, और यह सुनिश्चित करें कि प्रदाता का नाम model फ़ील्ड में आपके द्वारा टाइप किए गए नाम से मेल खाता है।
फ़ंक्शन कॉलिंग और JSON मोड का सीधे परीक्षण
OpenCode फ़ाइलों को पढ़ने, कमांड चलाने और कोड संपादित करने के लिए फ़ंक्शन कॉलिंग पर निर्भर करता है, इसलिए एजेंट को विफलता का दोषी ठहराने से पहले यह पुष्टि करना उचित है कि एंडपॉइंट टूल परिभाषा को संभाल सकता है या नहीं। इस अनुरोध में एक टूल प्रदान किया गया है और एक ऐसा प्रश्न पूछा गया है जिसके लिए उसकी आवश्यकता है।
curl https://api.kimicode.top/v1/chat/completions \
-H "Authorization: Bearer $KIMICODE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "What is in the file notes.txt?"}],
"tools": [{
"type": "function",
"function": {
"name": "read_file",
"description": "Read a text file by path",
"parameters": {
"type": "object",
"properties": {"path": {"type": "string"}},
"required": ["path"]
}
}
}],
"tool_choice": "auto"
}'
एक अच्छे प्रतिक्रिया में tool_calls एंट्री होती है जिसमें read_file का नाम होता है और एक JSON तर्क स्ट्रिंग होती है। एजेंट टूल चलाता है, फिर परिणाम को role को tool सेट करके एक संदेश के रूप में वापस भेजता है, और मॉडल वहीं से आगे बढ़ता है। यदि आपको केवल सादा टेक्स्ट दिखता है, तो एक अधिक सीधा प्रॉम्प्ट आज़माएं, क्योंकि मॉडल टूल कॉल करने का निर्णय लेता है या नहीं, यह उसकी व्यवहार का हिस्सा है।
JSON मोड एक अलग स्विच है। "response_format": {"type": "json_object"} जोड़ने से वैध JSON आउटपुट माँगा जाता है, और यह मददगार होता है जब किसी अन्य स्क्रिप्ट को वापस आने वाले डेटा को पार्स करना हो। अपने प्रॉम्प्ट में JSON का उल्लेख भी करें, ताकि मॉडल को यह पता चले कि आप किस आकार की उम्मीद कर रहे हैं।
कॉन्टेक्स्ट साइज़ और सत्र की लागत
कॉन्टेक्स्ट विंडो 100,000 टोकन की है, जिसमें प्रॉम्प्ट और कम्प्लीशन दोनों शामिल हैं। limit.context को 100000 पर सेट करने से एजेंट को असली सीमा का पता चल जाता है, ताकि वह सर्वर के अनुरोध को अस्वीकार करने से पहले इतिहास को काट या सारांशित कर सके। कम्प्लीशन शेष जगह का उपयोग कर सकता है, और max_tokens वैकल्पिक है।
बिलिंग $0.15 प्रति 1M इनपुट टोकन और $0.50 प्रति 1M आउटपुट टोकन है। एजेंट इनपुट-भारी होते हैं, क्योंकि हर टर्न पर संवाद फिर से भेजा जाता है। यहाँ एक मध्यम सत्र के लिए एक उदाहरण दिया गया है:
- 40 टर्न, प्रत्येक में लगभग 30,000 इनपुट टोकन भेजे गए: 1,200,000 इनपुट टोकन, जो 1.2 x $0.15 = $0.18 है।
- प्रत्येक टर्न में लगभग 800 आउटपुट टोकन लौटाए जाते हैं: 32,000 आउटपुट टोकन, जो 0.032 x $0.50 = $0.016 है।
- कुल: $0.196, यानी पूरी सत्र के लिए लगभग बीस सेंट।
आपके अंक अलग होंगे। प्रतिक्रियाओं में usage मान पढ़ें, या X-Balance-USD हेडर देखें, जो प्रत्येक प्रतिक्रिया पर आपकी शेष राशि दर्शाता है। क्रेडिट प्रीपेड है और समाप्त नहीं होता, और विफल या अस्वीकृत अनुरोधों के लिए चार्ज नहीं किया जाता है। विवरण मूल्य निर्धारण पृष्ठ पर हैं।
कोडिंग एजेंट के लिए ईमानदार अपेक्षाएँ
यह एक सामान्य टेक्स्ट मॉडल है जिसे कानूनी वयस्क उपयोग के लिए बिना सामग्री अस्वीकृति के उत्तर देने के लिए ट्यून्ड किया गया है। यह कोड के लिए विशेष रूप से बनाया गया मॉडल नहीं है, और यह पृष्ठ कोई बेंचमार्क दावा नहीं करता है। कि क्या यह आपकी रिपॉजिटरी में भरोसेमंद संपादन करता है, यह आपकी अपनी टास्क पर टेस्ट करना चाहिए, वर्जन कंट्रोल चालू रखते हुए, कुछ भी महत्वपूर्ण देने से पहले।
यह एजेंट को आवश्यक बुनियादी ढांचा प्रदान करता है: स्ट्रीमिंग tool_calls के साथ फ़ंक्शन कॉलिंग, role: "tool" संदेशों के रूप में भेजे गए टूल परिणाम, और response_format के माध्यम से JSON मोड। यह केवल टेक्स्ट है, बिना किसी छवि के, इसलिए स्क्रीनशॉट जोड़ने वाले फीचर काम नहीं करेंगे।
एजेंट्स के लिए दो सीमाएँ महत्वपूर्ण हैं। एक पूर्ण कुंजी 8 समानांतर अनुरोध और प्रति मिनट 300 अनुरोध की अनुमति देती है। वे सब-एजेंट या समानांतर टूल रन जो एक साथ कई कॉल फायर करते हैं, वे कन्करेंसी कैप पर पहुँच सकते हैं, और एक स्ट्रीमिंग अनुरोध स्ट्रीम समाप्त होने तक अपनी स्लॉट बनाए रखता है। जब ऐसा होता है, तो आपको HTTP 429 मिलता है concurrency कोड के साथ। rate_limited का मतलब प्रति मिनट बहुत सारे अनुरोध हैं। अस्थायी ओवरलोड पर आपको Retry-After: 5 के साथ 429 भी मिल सकता है। समानांतरता कम करें या प्रतीक्षा करें और पुनः प्रयास करें।
ट्रबलशूटिंग
| लक्षण | संभावित कारण | समाधान |
|---|---|---|
| 401 अनअथोराइज्ड | खाली या गलत कुंजी; शेल में एनवायरनमेंट वेरिएबल सेट नहीं है जिसने OpenCode लॉन्च किया था | उसी टर्मिनल में echo $KIMICODE_API_KEY चलाएँ, फिर OpenCode को रीस्टार्ट करें |
| 404 Not Found | बेस URL में /chat/completions शामिल है या /v1 अनुपस्थित है | सटीक रूप से https://api.kimicode.top/v1 का उपयोग करें |
| मॉडल नहीं मिला | मॉडल कुंजी uncensored से भिन्न है | models में कुंजी को GET /v1/models द्वारा लौटाए गए ID से मिलाएँ |
concurrency के साथ 429 | एक साथ बहुत सारे अनुरोध | कम समानांतर टूल कॉल करें, या स्ट्रीम के खत्म होने का प्रतीक्षा करें |
| अनुरोध बहुत बड़ा है | बॉडी 8 MB से अधिक है या इतिहास विंडो सीमा के करीब है | एक नई सत्र शुरू करें या इतिहास का सारांश दें |
इसमें जो कुछ भी शामिल नहीं है, उसके लिए दस्तावेज़ पृष्ठ में पूर्ण अनुरोध संदर्भ है, और संयोजन गाइड अन्य OpenAI-शैली के क्लाइंट के दृष्टिकोण से उसी एंडपॉइंट को कवर करता है।
