DeepSeek Harness सेटअप: API Key, Base URL और मॉडल
DeepSeek Harness को BetterToken से जोड़ें। headless प्रोफ़ाइल में API Key और Base URL सेट करें, प्रोटोकॉल चुनें और फ़ाइल पढ़ने की जाँच करें।
headless प्रोफ़ाइल में कस्टम प्रोवाइडर जोड़कर DeepSeek Harness (dsh) को BetterToken से कनेक्ट करें। macOS पर परीक्षण में @deepseek-ai/dsh@0.2.1-rc.2 ने इन सभी संयोजनों में टेक्स्ट अनुरोध और फ़ाइल पढ़ने वाले टूल कॉल 3 में से 3 बार पूरे किए: GPT मॉडल के साथ Chat Completions, GPT मॉडल के साथ Responses, Claude मॉडल के साथ Anthropic Messages और GPT मॉडल के साथ Anthropic Messages।
मुख्य सेटिंग्स
| फ़ील्ड | मान |
|---|---|
| API Key | BetterToken API Key, जिसे apiKeyEnv में दिए गए नाम वाले एनवायरनमेंट वेरिएबल से पढ़ा जाता है |
| Base URL | https://bettertoken.ai/v1 — Chat Completions / Responses |
| Anthropic Messages के लिए Base URL | https://bettertoken.ai, बिना /v1 के |
| मॉडल | YOUR_MODEL_ID |
| कॉन्फ़िगरेशन फ़ाइल | $DSH_HOME/profiles/headless/cordis.patch.yml (DSH_HOME का डिफ़ॉल्ट ~/.dsh है) |
आवश्यकताएं
- Node.js 24.9 या नया संस्करण, जैसा कि आधिकारिक rc.2 अपग्रेड निर्देशों में आवश्यक है
- BetterToken API Key: रजिस्टर करें और प्राप्त करें
- model plaza से कॉपी किया गया Model ID
इंस्टॉल करें
बिना ग्लोबल इंस्टॉल किए यहाँ परीक्षण किया गया संस्करण चलाएँ:
npx @deepseek-ai/dsh@0.2.1-rc.2 --helpपरीक्षण के समय npm का latest टैग 0.2.1-rc.2 पर था। यह रिलीज़ कैंडिडेट है। next जैसे दूसरे टैग का परीक्षण नहीं किया गया।
मैन्युअल सेटअप
YOUR_API_KEY की जगह अपनी API Key डालकर उसे एनवायरनमेंट वेरिएबल में एक्सपोर्ट करें:
export BETTERTOKEN_API_KEY="YOUR_API_KEY"~/.dsh/profiles/headless/cordis.patch.yml बनाएँ। इस फ़ाइल में Cordis पैच की सूची होती है। दोनों जगह YOUR_MODEL_ID को एक ही सटीक Model ID से बदलें:
Chat Completions
- id: llm-pi-ai config: providers: bettertoken: api: openai-completions baseURL: https://bettertoken.ai/v1 apiKeyEnv: BETTERTOKEN_API_KEY retryPolicy: mode: normal maxRetries: 2 models: - id: YOUR_MODEL_ID- id: agent-default-model config: provider: bettertoken model: YOUR_MODEL_IDResponses
- id: llm-pi-ai config: providers: bettertoken: api: openai-responses baseURL: https://bettertoken.ai/v1 apiKeyEnv: BETTERTOKEN_API_KEY retryPolicy: mode: normal maxRetries: 2 models: - id: YOUR_MODEL_ID- id: agent-default-model config: provider: bettertoken model: YOUR_MODEL_IDAnthropic Messages
- id: llm-pi-ai config: providers: bettertoken: api: anthropic-messages baseURL: https://bettertoken.ai apiKeyEnv: BETTERTOKEN_API_KEY retryPolicy: mode: normal maxRetries: 2 models: - id: YOUR_MODEL_ID- id: agent-default-model config: provider: bettertoken model: YOUR_MODEL_IDapiKeyEnv में एनवायरनमेंट वेरिएबल का नाम दें, API Key या ${...} एक्सप्रेशन नहीं। कस्टम प्रोवाइडर के लिए api, baseURL और models में कम से कम एक एंट्री आवश्यक है; हर एंट्री में केवल मॉडल का id अनिवार्य है। यदि llm-pi-ai पहले से कॉन्फ़िगर है, तो जिन प्रोवाइडर को रखना चाहते हैं उन्हें उसी config में कॉपी करें, क्योंकि नई एंट्री मौजूदा एंट्री को बदल देती है।
कस्टम प्रोवाइडर के लिए api फ़ील्ड में केवल openai-completions, openai-responses और anthropic-messages स्वीकार किए जाते हैं। Anthropic का Base URL साइट का रूट है, क्योंकि क्लाइंट खुद /v1/messages जोड़ता है।
मॉडल को अनुरोध भेजे बिना सिंटैक्स जाँचने के लिए npx @deepseek-ai/dsh@0.2.1-rc.2 --profile headless --dump-config चलाएँ।
कनेक्शन सत्यापित करें
उसी टर्मिनल में यह कमांड चलाएँ:
npx @deepseek-ai/dsh@0.2.1-rc.2 --profile headless --json "Reply with only: OK"--json हर पंक्ति में एक JSON इवेंट प्रिंट करता है। जाँचें कि एग्ज़िट कोड 0 हो, turn_end.reason सामान्य समाप्ति दिखाए और आखिरी final इवेंट के text का मान OK हो। असफल रन में भी खाली final इवेंट आ सकता है, इसलिए केवल इवेंट की मौजूदगी पर भरोसा न करें।
फ़ाइल एक्सेस जाँचने के लिए खाली डायरेक्टरी में sample.txt बनाएँ। उसी डायरेक्टरी से वही कमांड इस प्रॉम्प्ट के साथ चलाएँ: Read sample.txt using a tool. Reply with only its exact contents.। पुष्टि करें कि आउटपुट में tool_call, फ़ाइल के टेक्स्ट वाला tool_result और उसी से मेल खाता final टेक्स्ट हो।
मॉडल बदलें
दोनों जगह YOUR_MODEL_ID को किसी दूसरे सटीक Model ID से बदलें। यदि नया मॉडल अलग प्रोटोकॉल इस्तेमाल करता है, जैसे Anthropic Messages के ज़रिए Claude मॉडल, तो api और baseURL दोनों बदलें। गेटवे से लौटने वाले मॉडल देखने के लिए DeepSeek Harness के वेब इंटरफ़ेस में कस्टम प्रोवाइडर के साथ Fetch available models इस्तेमाल करें। परीक्षण में उसी मॉडल खोज सेवा ने तीनों प्रोटोकॉल के लिए BetterToken की मॉडल सूची लौटाई।
सामान्य त्रुटियां
| समस्या | क्या जाँचें |
|---|---|
MISSING_CREDENTIAL, एग्ज़िट कोड 1 और डैशबोर्ड में कोई अनुरोध नहीं | प्रोसेस को apiKeyEnv में दिए गए नाम वाला वेरिएबल नहीं मिला। dsh शुरू करने वाले टर्मिनल में उसे एक्सपोर्ट करें और नाम की वर्तनी जाँचें। यह जाँच स्थानीय रूप से होती है। |
वेब इंटरफ़ेस में सेव की गई Key को headless प्रोफ़ाइल इस्तेमाल नहीं करती | headless प्रोफ़ाइल केवल इस क्रम में क्रेडेंशियल पढ़ती है: लॉन्च एनवायरनमेंट, मौजूदा डायरेक्टरी की .env, फिर DSH_HOME की .env। |
404 और अनुरोध पाथ के अंत में /v1/v1/messages | Anthropic की baseURL के अंत में /v1 है। https://bettertoken.ai इस्तेमाल करें। |
| मॉडल नहीं मिला | model plaza से Model ID दोबारा कॉपी करें और दोनों जगह वही मान दें। |
| विफलता के बाद कई बार दोबारा प्रयास | retryPolicy न देने पर अडैप्टर डिफ़ॉल्ट रूप से 5 बार दोबारा प्रयास करता है। उदाहरणों की तरह maxRetries स्पष्ट रूप से सेट करें। |
| Node.js संस्करण की त्रुटि | Node.js 24.9 या नया संस्करण इस्तेमाल करें। |
संबंधित दस्तावेज़
तकनीकी विवरण
परीक्षण में तीनों api मानों के लिए वास्तविक अनुरोध पाथ /v1/chat/completions, /v1/responses और /v1/messages थे। dsh कॉन्फ़िगर किए गए प्रोवाइडर और मॉडल से सेशन का शीर्षक बनाने का अनुरोध भी अपने आप भेजता है, इसलिए एक काम से कई अनुरोध बन सकते हैं। क्लाइंट ने डिफ़ॉल्ट आउटपुट सीमाएँ जोड़ीं, जैसे मुख्य अनुरोध पर 32768 टोकन; ये कॉन्फ़िगरेशन में सेट नहीं थीं।
मॉडल एंट्री में input और contextWindow फ़ील्ड क्लाइंट के लिए घोषित जानकारी हैं। वे गेटवे की सीमाएँ न तो पूछती हैं, न प्रमाणित करती हैं। इमेज इनपुट का परीक्षण नहीं किया गया। परीक्षण केवल macOS पर हुआ।

