HI ▾
API कुंजी प्राप्त करें

बड़े मॉडल API एंडपॉइंट पैरामीटर विस्तृत विवरण: रिक्वेस्ट फ़ील्ड्स से रिस्पॉन्स फ़ील्ड्स तक

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

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

मुख्य बिंदु

  • messages system, user, assistant, tool चार भूमिकाओं से मिलकर बनते हैं। मॉडल के पास मेमोरी नहीं है, इतिहास आपको ही साथ रखना होगा।
  • temperature यादृच्छिकता को नियंत्रित करता है, top_p उम्मीदवार सीमा को। दोनों का प्रभाव समान है, आमतौर पर केवल एक को ही समायोजित करें।
  • finish_reason तय करता है कि आपको परिणाम को कैसे संभालना है: stop का अर्थ है सामान्य समाप्ति, length का अर्थ है ट्रंकेटेड, और tool_calls का अर्थ है कि आपको फ़ंक्शन कॉलिंग करनी है।
  • usage फ़ील्ड बिलिंग और बजट का एकमात्र विश्वसनीय स्रोत है, इसे हर बार पढ़ना चाहिए।

एक रिक्वेस्ट कैसा दिखता है

एंडपॉइंट URL है POST https://api.apidamoxing.com/v1/chat/completions, प्रमाणीकरण हेडर Authorization: Bearer <key> है, अनुरोध शरीर JSON है, जो OpenAI की चैट पूर्ति के संगत है। पहले एक पूर्ण अनुरोध देखें जिसमें सभी सामान्य फ़ील्ड्स शामिल हों:

curl https://api.apidamoxing.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "system", "content": "你是一位耐心的天文科普作者。"},
      {"role": "user", "content": "为什么月亮总是同一面朝向地球?"}
    ],
    "temperature": 0.7,
    "top_p": 0.9,
    "max_tokens": 400,
    "stop": ["###"]
  }'

ध्यान दें कि model केवल uncensored हो सकता है, क्योंकि सेवा में केवल एक ही मॉडल है, कोई विकल्प नहीं है। GET /v1/models से पुष्टि करें। नीचे प्रत्येक फ़ील्ड को अलग-अलग समझाया गया है।

पूरा लेख पढ़ने पर आपको पता चलेगा कि ये पैरामीटर तीन श्रेणियों में बांटे जा सकते हैं: 'क्या कहना है' (messages, tools), 'कैसे कहना है' (temperature, top_p), और 'कितना बोलना है, कब रुकना है' (max_tokens, stop, stream)। इस वर्गीकरण को याद रखें; भविष्य में जब कोई अज्ञात फ़ील्ड मिले, तो पहले तय करें कि वह किस श्रेणी में आता है, और अधिकांश मामलों में आप उसका प्रयोजन अनुमान लगा सकते हैं।

messages: इस संवाद का "रिकॉर्ड बुक"

messages एक सरणी है, जिसमें प्रत्येक तत्व में role और content होता है। इसे एक मीटिंग नोट्स की किताब की तरह कल्पना करें जिसमें हर पृष्ठ पर नोट लिखे गए हैं। मॉडल हर बार शुरुआत से फिर से पढ़ता है और अगला पृष्ठ लिखता है। यह याद नहीं रखता कि उसने पिछली बार क्या पढ़ा था, इसलिए मल्टी-टर्न संवाद के दौरान इतिहास को आपको पूर्ण रूप से प्रदान करना होगा।

roleकिसने लिखाउद्देश्य
systemआप (डेवलपर)पहचान, नियम, आउटपुट फॉर्मेट सेट करें, आमतौर पर सबसे पहले रखा जाता है
userअंतिम उपयोगकर्ताप्रश्न या निर्देश
assistantमॉडल (या आपका लिखा हुआ इतिहास)पिछला उत्तर, मल्टी-टर्न संदर्भ के लिए
toolआपका प्रोग्रामफ़ंक्शन कॉल का निष्पादन परिणाम, tool_call_id होना चाहिए

एक सामान्य तकनीक: यदि आप चाहते हैं कि मॉडल किसी विशेष टोन में लिखना जारी रखे, तो आप एक assistant संदेश बनाकर इतिहास में जोड़ सकते हैं। याद रखें कि प्रॉम्प्ट और आउटपुट का योग 100,000 टोकन से अधिक नहीं होना चाहिए; इतिहास जितना लंबा होगा, उतना ही अधिक स्थान लेगा।

एक विशिष्ट उदाहरण लें। आपने एक ग्राहक सहायक बनाया है, system में लिखा है "केवल ऑर्डर से संबंधित प्रश्नों का उत्तर दें, उत्तर तीन वाक्यों से अधिक न हो"। उपयोगकर्ता पहले चरण में शिपिंग समय के बारे में पूछता है, दूसरे चरण में "तो वापसी के बारे में?" पूछता है। दूसरे अनुरोध में, messages में क्रमशः शामिल होने चाहिए: system, पहले चरण का user, पहले चरण का assistant उत्तर, दूसरे चरण का user। यदि कोई भी टुकड़ा गायब है, तो मॉडल नहीं जानता कि "तो" किसका संदर्भ है।

सैम्पलिंग पैरामीटर: "स्वतंत्रता की सीमा" को समायोजित करें

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

पैरामीटरउपमाइसे कैसे समझेंसामान्य मान
temperatureरचनात्मकता का स्तरकम मान अधिक संरचित और स्थिर आउटपुट देता है; उच्च मान अधिक विविध और रचनात्मक आउटपुट देता है0 से 1.2 तक; प्रश्न-उत्तर के लिए कम मान और रचनात्मक लेखन के लिए उच्च मान चुनें
top_pकेवल शीर्ष N परिणामों से चुनता हैसंचयी प्रायिकता p तक पहुंचने वाले उम्मीदवारों से चुनता है0.8 से 1.0 तक; डिफ़ॉल्ट मान अक्सर पर्याप्त होता है

दोनों ही 'कितनी यादृच्छिकता' को नियंत्रित करते हैं, केवल दृष्टिकोण अलग है। एक साथ दोनों को समायोजित करना प्रभाव को समझना मुश्किल बना देता है, इसलिए एक बार में केवल एक को बदलने की सलाह दी जाती है। ये मानक सैंपलिंग फ़ील्ड्स को मूल रूप से पास किया जाएगा, एंडपॉइंट स्वयं उन्हें नहीं बदलेगा।

एक और स्पष्ट संख्यात्मक उदाहरण से समझें: मान लीजिए कि मॉडल के लिए अगले सबसे संभावित तीन शब्दों की प्रायिकताएं क्रमशः 60%, 30% और 10% हैं। temperature को कम करने पर 60% वाले विकल्प की बढ़त और बढ़ जाती है, जिससे आउटपुट हर बार शीर्ष विकल्प चुनने जैसा दिखता है; इसे बढ़ाने पर तीनों के बीच का अंतर कम हो जाता है और कम संभावित शब्दों के चुने जाने की संभावना बढ़ जाती है। यदि top_p 0.9 सेट है, तो केवल वे शब्द बचते हैं जिनकी संचमी प्रायिकता 90% तक पहुंचती है, और तीसरा शब्द बाहर हो जाता है। ये संख्याएं केवल सिद्धांत समझाने के लिए मानी गई हैं, वास्तविक प्रायिकताएं नहीं हैं।

लंबाई और स्टॉप शर्तों को नियंत्रित करें: max_tokens, stop, stream

पैरामीटरकार्यमुख्य बातें
max_tokensइस बार अधिकतम कितने टोकन जनरेट करने हैं, इसकी सीमा तय करता हैडिफ़ॉल्ट 2048, अधिकतम 32,000; यह मान प्रॉम्प्ट के टोकन के साथ मिलकर 100,000 से अधिक नहीं होना चाहिए
stopनिर्दिष्ट स्ट्रिंग मिलने पर जनरेशन रोक देता हैसंगत स्ट्रिंग्स का एक सरल है, जो विभाजन और निश्चित-प्रारूप ट्रंकेशन के लिए उपयुक्त है
streamक्या आउटपुट स्ट्रीमिंग मोड में वापस किया जाएtrue सेट करने पर SSE के माध्यम से डेटा ब्लॉक भेजे जाते हैं; अंत में स्वचालित रूप से usage जानकारी वाला एक ब्लॉक जोड़ा जाता है

max_tokens एक प्लेट के साइज जैसा है। यदि प्लेट छोटी है, तो भोजन पूरा होने से पहले ही उसे हटा लिया जाता है, और finish_reason length होगा। stop एक तय शर्त की तरह है; जब शर्त पूरी होती है, तो प्रक्रिया रुक जाती है। stream सामग्री नहीं बदलता, केवल डिलीवरी का तरीका बदलता है: 'सब कुछ तैयार होकर एक साथ आने' की जगह 'एक-एक करके आने' का अनुभव होता है, जिससे उपयोगकर्ता को प्रतिक्रिया तेज़ लगती है।

stop का एक बहुत उपयोगी उपयोग यह है: यदि आप मॉडल को 'प्रश्न: ... उत्तर: ...###' जैसे निश्चित फ़ॉर्मेट में आउटपुट देने को कहते हैं और ### को stop स्ट्रिंग सेट करते हैं, तो मॉडल उस डिलीमिटर तक ही जनरेट करेगा और रुक जाएगा। इससे टोकन बचते हैं और मॉडल के बाद में अनावश्यक बातें न कहने की संभावना कम हो जाती है। ध्यान रखें कि जब stop ट्रिगर होता है, तो finish_reason भी 'stop' ही आता है। यदि आपको अलग पहचानना है, तो आपको आउटपुट की सामग्री स्वयं चेक करनी होगी।

tools और tool_choice: मॉडल को 'कॉल' करने दें

मॉडल के पास रीयल-टाइम डेटा एक्सेस नहीं होता। function calling का तरीका यह है: आप पहले मॉडल को बताते हैं कि कौन से फ़ंक्शन उपलब्ध हैं। जब मॉडल को लगता है कि उसे डेटा चाहिए, तो वह सीधे जवाब देने के बजाय 'किसी फ़ंक्शन को कॉल करें, इसके पैरामीटर ... हैं' लौटाता है। आपका प्रोग्राम फ़ंक्शन चलाकर परिणाम वापस भेजता है, और मॉडल उसी आधार पर जवाब तैयार करता है। फ़ॉर्मेट OpenAI के समान है।

पैरामीटरमानविवरण
toolsफ़ंक्शन विवरण सरणीप्रत्येक में name, description और JSON Schema में parameters होते हैं
tool_choice"auto" / "none" / निर्दिष्ट फ़ंक्शनauto मॉडल पर छोड़ दिया जाता है, none फ़ंक्शन कॉलिंग को रोकता है, और निर्दिष्ट फ़ंक्शन मॉडल को उस फ़ंक्शन को कॉल करने के लिए मजबूर करता है
import json
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.apidamoxing.com/v1", api_key=os.environ["API_KEY"])

tools = [{
    "type": "function",
    "function": {
        "name": "get_tide_time",
        "description": "查询某港口今天的高潮时刻",
        "parameters": {
            "type": "object",
            "properties": {"port": {"type": "string", "description": "港口名称"}},
            "required": ["port"],
        },
    },
}]

messages = [{"role": "user", "content": "青岛今天几点涨潮?"}]
first = client.chat.completions.create(
    model="uncensored", messages=messages, tools=tools, tool_choice="auto"
)
msg = first.choices[0].message

if msg.tool_calls:
    call = msg.tool_calls[0]
    args = json.loads(call.function.arguments)
    result = {"port": args["port"], "high_tide": "14:20"}   # 这里换成你自己的查询
    messages.append(msg)
    messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result, ensure_ascii=False)})
    final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
    print(final.choices[0].message.content)
else:
    print(msg.content)

प्रक्रिया दो चरणों में होती है: पहले चरण में tool_calls प्राप्त करें, दूसरे चरण में role: tool के परिणाम को जोड़कर फिर से अनुरोध करें। description जितना अधिक विशिष्ट होगा, मॉडल उतनी ही बेहतर ढंग से जान पाएगा कि कब कॉल करना है। पैरामीटर एक JSON स्ट्रिंग है, इसे json.loads से पार्स करें और सत्यापित करें, सीधे भरोसा न करें।

प्रतिक्रिया फ़ील्ड्स: वापस आए 'रसीद' को समझें

एक सफल प्रतिक्रिया का स्वरूप कुछ इस प्रकार होता है, फ़ील्ड्स निश्चित होते हैं:

{
  "id": "chatcmpl-xxxx",
  "object": "chat.completion",
  "model": "uncensored",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "因为潮汐锁定……"},
      "finish_reason": "stop"
    }
  ],
  "usage": {"prompt_tokens": 38, "completion_tokens": 212, "total_tokens": 250}
}
फ़ील्डअर्थ
choicesपरिणामों का सरल, आमतौर पर इसमें केवल एक आइटम होता है; मुख्य सामग्री choices[0].message.content में होती है
finish_reasonसमाप्ति का कारण: 'stop' सामान्य समाप्ति; 'length' का अर्थ है कि max_tokens की सीमा पर पहुँचकर आउटपुट काट दिया गया; 'tool_calls' का अर्थ है कि मॉडल ने फ़ंक्शन कॉल की मांग की
usage.prompt_tokensइनपुट में खपत हुए टोकन
usage.completion_tokensआउटपुट में खपत हुए टोकन
usage.total_tokensदोनों का योग

कोड में पहले finish_reason देखें: यदि यह length है तो उपयोगकर्ता को सूचित करें कि सामग्री काट दी गई है या स्वचालित रूप से जारी रखें; यदि यह tool_calls है तो फ़ंक्शन निष्पादन शाखा पर जाएं। usage का उद्देश्य टोकन और बिलिंग वाले लेख में बजट विधि के रूप में अधिक विस्तार से बताया गया है।

कुछ सबसे आम पैरामीटर गलतफहमियाँ

  • max_tokens को 'इनपुट लिमिट' समझ लेना। यह केवल आउटपुट पर लागू होता है, इनपुट आप ही नियंत्रित करते हैं।
  • यह मान लेना कि मॉडल पिछले अनुरोध को याद रखता है। हर अनुरोध स्वतंत्र होता है, इतिहास स्वयं भेजें।
  • temperature को 0 सेट करने पर यह मान लेना कि हर बार आउटपुट बिल्कुल समान आएगा। यह अधिक स्थिर होगा, लेकिन शब्द-दर-शब्द समानता की गारंटी नहीं है।
  • स्ट्रीमिंग मोड में सीधे choices[0].message पढ़ लेना। स्ट्रीमिंग ब्लॉक्स में फ़ील्ड 'delta' होता है, आपको इसे स्वयं जोड़ना होगा।
  • tool कॉल के बाद assistant मैसेज (जिसमें tool_calls होता है) को जोड़ना भूल जाना, जिससे दूसरे चरण में त्रुटि आती है।

错误码含义和重试策略可在文档中查看。想看一个把这些参数串起来的完整例子,参考聊天机器人搭建一篇。

अक्सर पूछे जाने वाले प्रश्न

क्या मैं एक साथ temperature और top_p सेट कर सकता हूँ?

हाँ, लेकिन प्रभाव को अलग-अलग समझना कठिन होता है। अधिकांश मामलों में केवल temperature बदलना पर्याप्त होता है; जब उम्मीदवारों की सीमा को सटीक रूप से नियंत्रित करना हो, तब top_p बदलें।

finish_reason 'length' आने पर क्या करें?

इसका अर्थ है कि आउटपुट max_tokens की सीमा पर पहुँच गया है और काट दिया गया है। आप max_tokens को बढ़ा सकते हैं (अधिकतम 32,000 तक), या मॉडल को भागों में जनरेट करने को कह सकते हैं।

क्या tools का फ़ॉर्मेट OpenAI जैसा ही है?

हाँ, OpenAI फ़ॉर्मेट के tools और tool_choice का उपयोग करें। प्रतिक्रिया में tool_calls की संरचना भी समान ही होती है।

स्ट्रीमिंग प्रतिक्रिया में usage (उपयोग) कैसे प्राप्त करें?

stream को सक्षम करने पर, अंत में स्वचालित रूप से usage जानकारी वाला एक डेटा ब्लॉक जोड़ा जाता है। उसे पढ़ें, किसी अतिरिक्त पैरामीटर की आवश्यकता नहीं है।

कुंजी प्राप्त करने के लिए केवल फ़ॉर्म भरें

खाता बनाएँ, कुंजी कॉपी करें, Base URL बदलें। कॉन्फ़िगरेशन इतना ही सरल है।

API कुंजी प्राप्त करें