एकाइ 1 / 11

LLM API आधारभूत कुराहरू: अनुरोध, प्रतिक्रिया, र सन्देश भूमिकाहरू

लाभ:

  • LLM API अनुरोधको आधारभूत संरचना वर्णन गर्न सक्छ (अन्तबिन्दु, मोडेल, सन्देशहरू, max_tokens)
  • प्रणाली, प्रयोगकर्ता र सहायक भूमिकाहरू र राज्यविहीन कुराकानी इतिहास बीचको भिन्नता बुझ्छ
  • फर्काइएको प्रतिक्रियाको क्षेत्रहरू (सामग्री ब्लकहरू, रोक_कारण, प्रयोग) पढ्न र व्याख्या गर्न सक्छ

अघिल्लो मोड्युलहरूमा, हामीले च्याट विन्डोबाट कृत्रिम बुद्धिमत्ता प्रयोग गर्यौं। तर यदि तपाईं आफ्नो उत्पादन, स्वचालन वा कार्यप्रवाहमा एआई इम्बेड गर्न चाहनुहुन्छ भने, च्याट इन्टरफेसले यसलाई काट्दैन; तपाईले मोडेललाई प्रोग्रामेटिक रूपमा जडान गर्न आवश्यक छ, त्यो हो, कोड वा स्वचालन उपकरणको साथ। यस पुलको नाम एपीआई (एप्लिकेशन प्रोग्रामिङ इन्टरफेस, दुई सफ्टवेयरलाई निश्चित नियमहरूसँग कुरा गर्न अनुमति दिने सम्झौता) हो। जब तपाइँ यो एकाइ समाप्त गर्नुहुन्छ, तपाइँले थाहा पाउनुहुनेछ कि LLM (ठूलो भाषा मोडेल) API अनुरोध के गठन हुन्छ, सन्देश भूमिकाले के गर्छ, र प्रतिक्रिया कसरी पढ्ने। यो त्यो आधार हो जसमा बाँकी मोड्युल निर्माण गरिनेछ।

API ले कसरी काम गर्छ?

API मा आधारभूत प्रवाह यो हो: तपाइँ एक निश्चित ढाँचामा अनुरोध पठाउनुहुन्छ; सर्भरले विशिष्ट ढाँचामा प्रतिक्रिया फर्काउँछ। LLMs मा, यो सामान्यतया एक HTTP कल (HTTP: वेबमा अनुरोध-प्रतिक्रिया बोक्ने मानक प्रोटोकल) एकल ठेगानामा (अन्तबिन्दु, तपाईंको अनुरोध ह्यान्डल गर्ने सर्भरमा निश्चित ठेगाना) हो। उदाहरणका लागि, सन्देश एपीआईमा, सबै अनुरोधहरू एउटै ठेगानामा जान्छन् र JSON (जाभास्क्रिप्ट वस्तु नोटेशन - पाठ ढाँचामा कुञ्जी/मान जोडीहरू समावेश हुन्छन् जुन मानव र मेशिनहरू दुवैले पढ्न सक्छन्) को रूपमा शरीरमा राखिन्छ।

अनुरोधमा, तपाइँ कम्तिमा यी तीन चीजहरू निर्दिष्ट गर्नुहुन्छ:

  • मोडेल: तपाईले कुन मोडेल प्रयोग गर्नुहुनेछ (जस्तै छिटो र सस्तो मोडेल वा शक्तिशाली मोडेल)।
  • max_tokens: मोडेलले उत्पादन गर्न सक्ने टोकनहरूको अधिकतम संख्या (पाठ प्रशोधन गरिएको सबैभन्दा सानो एकाइ, जुन अर्को एकाइमा विस्तृत रूपमा प्रशोधन गरिनेछ)। अर्थात् आउटपुट सीमा।
  • सन्देशहरू: सन्देशहरूको सूची जसले कुराकानी बनाउँछ।

चरणबद्ध रूपमा: अनुरोध कसरी सेट अप गर्ने

  1. अन्तिम बिन्दु र प्रमाणहरू तयार गर्नुहोस्। तपाईंले हेडरमा भएको अनुरोधमा आफ्नो API कुञ्जी (तपाईंको पहिचान प्रमाणित गर्ने गोप्य स्ट्रिङ) थप्नुहुन्छ। तपाईंले कोडमा कुञ्जी इम्बेड गर्नुहुन्न; हामी एकाइ 9 मा सुरक्षित भण्डारण कभर गर्नेछौं।
  2. मोडेल र आउटपुट सीमा चयन गर्नुहोस्। हल्का मोडेल + साधारण कार्यको लागि सानो अधिकतम_टोकन्स; शक्तिशाली मोडेल + जटिल कार्यको लागि ठूलो सीमा।
  3. सन्देश सूची सेट अप गर्नुहोस्। List the system instruction, user message, and past rounds (if any).
  4. अनुरोध पठाउनुहोस् र प्रतिक्रिया पार्स गर्नुहोस्। फर्काइएको JSON बाट पाठ सामग्री पढ्नुहोस्, कारण रोक्नुहोस्, र टोकन प्रयोग गर्नुहोस्।

सन्देश भूमिकाहरू: प्रणाली, प्रयोगकर्ता, सहायक

वार्तालापमा क्रमबद्ध रूपमा व्यवस्थित गरिएका सन्देशहरू हुन्छन्, र प्रत्येक सन्देशको भूमिका हुन्छ। मोडेलले त्यो पाठलाई कसरी व्यवहार गर्छ भन्ने भूमिकाले निर्धारण गर्छ।

भूमिका

कसले लेख्छ

उद्देश्य

प्रणाली

विकासकर्ता / अपरेटर

स्थायी निर्देशनहरू, व्यक्तित्व र नियमहरू जुन सम्पूर्ण कुराकानीमा लागू हुन्छ

प्रयोगकर्ता

अन्त प्रयोगकर्ता

प्रयोगकर्ताको हालको प्रश्न वा इनपुट

सहायक

मोडेल

मोडेल द्वारा उत्पादित प्रतिक्रिया (र अघिल्लो प्रतिक्रियाहरू)

प्रणाली भूमिका धेरै प्रदायकहरूमा अनुरोध निकायमा एक अलग प्रणाली क्षेत्रको रूपमा उपलब्ध छ; प्रयोगकर्ता र सहायक सन्देश सूचीमा क्रमिक रूपमा सूचीबद्ध छन्। Critical point: the system instruction is the high-level instruction, the user message is the request to be answered at that moment.

{ "model": "claude-opus-4-8", "max_tokens": 1024, "system": "तपाई एक कर्पोरेट समर्थन सहायक हुनुहुन्छ। छोटो, औपचारिक र प्रमाणित प्रतिक्रिया दिनुहोस्। तपाईलाई निश्चित नभएको जानकारी नबनाउनुहोस्।", "messages": [ { "role": "user", "How to start my content"? } ]}

बोली राज्यविहीन छ

यहाँ सबैभन्दा सामान्य गलत धारणा छ: LLM API कलहरू राज्यविहीन छन् — सर्भरले दुई अनुरोधहरू बीच कुनै मेमोरी राख्दैन। मोडेलले तपाइँको अघिल्लो अनुरोधलाई याद गर्दैन। यदि तपाइँ बहु-राउन्ड च्याट सेटअप गर्दै हुनुहुन्छ भने, तपाइँले प्रत्येक नयाँ अनुरोधको साथ विगतका राउन्डहरू पुन: पठाउन आवश्यक छ। मोडेलको "मेमोरी" मा तपाईंले पठाउनुभएको सन्देशहरूको सूची समावेश हुन्छ।

{ "model": "claude-opus-4-8", "max_tokens": 512, "messages": [ { "role": "user", "content": "नमस्ते, मेरो नाम डेनिज हो।" }, { "role": "सहायक", "content": "नमस्ते डेनिज, म तपाईलाई कसरी मद्दत गर्न सक्छु?" }, { "role": "user", "content": "मैले भर्खर मेरो नाम भनें, के तिमीलाई याद छ?" } ]}

तेस्रो सन्देशको सही जवाफ दिनु तपाईंले अघिल्ला दुवै सन्देशहरू पठाउनुमा निर्भर गर्दछ। यदि तपाईंले यसलाई पठाउनुभएन भने, मोडेलले "समुद्र" थाहा पाउनेछैन र गलत जवाफ दिनेछ। यसले लागतलाई सीधै असर गर्छ: वार्तालाप जति लामो हुन्छ, सूची त्यति ठूलो हुन्छ, प्रत्येक अनुरोधले थप टोकनहरू खपत गर्छ।

सुझाव: लामो कुराकानीमा, पुरा इतिहास पठाउनुको सट्टा पुराना राउन्डहरू (सारांश + अन्तिम केही राउन्डहरू) सार्दा लागत घट्छ र सन्दर्भ विन्डो सुरक्षित हुन्छ। हामी यसलाई एकाइ 6 र 11 मा गहिरो गर्नेछौं।

उत्तर पढ्नुहोस्

जब मोडेलले प्रतिक्रिया फर्काउँछ, तपाईंले एक संरचित वस्तु प्राप्त गर्नुहुन्छ, सादा पाठ होइन। विशिष्ट क्षेत्रहरू:

{ "id": "msg_01ABC...", "model": "claude-opus-4-8", "role": "सहायक", "content": [ { "type": "text", "text": "रिटर्न सुरु गर्न, आफ्नो खातामा 'My Orders' पृष्ठमा जानुहोस्..." } ], "stop_reason:" "stop_reason:" "इनपुट_टोकन्स": ४७, "आउटपुट_टोकन्स": ८८ }}

  • सामग्री: प्रतिक्रिया आफै; यो सामग्री ब्लकहरूको सूची हो। पाठ ब्लकको पाठ क्षेत्र वास्तविक उत्तर हो।
  • stop_reason: मोडेल किन रोकियो। end_turn = प्राकृतिक अन्त्य; max_tokens = आउटपुट सीमामा अड्किएको (प्रतिक्रिया अपूर्ण हुन सक्छ); अस्वीकार = सुरक्षा कारणहरूको लागि अस्वीकार। तपाईंको कोड सधैं पहिले stop_reason हेर्नु पर्छ।
  • उपयोग: इनपुट र आउटपुट टोकन नम्बरहरू। यो लागत र सीमा ट्र्याकिङ को आधार हो।
ध्यान दिनुहोस्: यदि stop_reason max_tokens हो भने, प्रतिक्रिया पूरा भएको छैन। यसलाई "सफल प्रतिक्रिया" को रूपमा व्यवहार गर्नु र प्रयोगकर्तालाई आधा पाठ देखाउनु उत्पादनमा सबैभन्दा सामान्य गल्तीहरू मध्ये एक हो। या त max_tokens बढाउनुहोस् वा स्ट्रिमिङ प्रयोग गर्नुहोस्।

कमजोर प्रम्प्ट / बलियो प्रम्प्ट

दुई फरक प्रणाली प्रम्प्ट संग समान कार्य:

# कमजोर तपाई सहायक हुनुहुन्छ। प्रश्नहरूको जवाफ दिनुहोस्।

# STRONGतपाईं कर्पोरेट समर्थन सहायक हुनुहुन्छ। नियमहरू: - प्रदान गरिएको नीति कागजातमा जानकारीमा मात्र भर पर्नुहोस्; यदि यो कागजातमा छैन भने, भन्नुहोस् "मसँग यो जानकारी छैन, म यसलाई सम्बन्धित इकाईमा निर्देशित गर्दैछु।" - जवाफहरू 3 वाक्यहरू भन्दा बढी हुनु हुँदैन, औपचारिक र स्पष्ट हुनुपर्छ। - व्यक्तिगत डेटा (TC आईडी नम्बर, कार्ड नम्बर) माग्न नदिनुहोस् र दोहोर्याउनुहोस्। - जब तपाईं निश्चित हुनुहुन्न अनुमान नगर्नुहोस्।

शक्तिशाली संस्करण; यसले स्कोप, फारम, सुरक्षा मार्जिन, र अनिश्चिततामा व्यवहार परिभाषित गर्दछ। मोडेल आउटपुटको स्थिरता यस स्पष्टताबाट सीधै आउँछ।

तीन मिनी केसहरू

केस १ — सपोर्ट बोट (स्टेटलेस ट्र्याप)। एक ई-वाणिज्य टोलीले बोटलाई प्रत्यक्ष लियो; जब प्रयोगकर्ताले "अघिल्लो अर्डर रद्द गर्नुहोस्" भन्यो, बोटले अर्डर नम्बर "बिर्सियो"। कारण: तिनीहरूले प्रत्येक अनुरोध मात्र अन्तिम सन्देश पठाउँदै थिए। समाधान: तिनीहरूले सन्देश सूचीमा अन्तिम 6 राउन्डहरू थपे। नतिजा: सन्दर्भ संरक्षित, तर प्रति अनुरोध इनपुट 40 टोकनबाट ~ 600 टोकनमा बढ्यो — हामी एकाइ 2 मा लागत पाठ कभर गर्नेछौं।

केस 2 - अपूर्ण अनुबंध सारांश। एक कानूनी टोलीले 10-पृष्ठ अनुबंधहरू उल्लिखित थियो; max_tokens: 300 कम रह्यो, सारांशहरू मध्य-वाक्य काट्दै थिए। stop_reason हरेक पटक max_tokens थियो तर कसैले हेरिरहेको थिएन। max_tokens 1500 मा बढ्यो र stop_reason जाँच थपियो; काटिएको सारांश दर १८% बाट ०% मा घट्यो।

केस ३ - मिक्सिङ रोलहरू। एक मार्केटिङ टोलीले प्रणाली खाली छोडेर प्रयोगकर्ता सन्देशमा सबै निर्देशनहरू लेखिरहेको थियो। जब प्रयोगकर्ता इनपुटलाई निर्देशनसँग मिसाइन्छ, मोडेलले कहिलेकाहीँ "अघिल्लो नियमहरू बिर्सनुहोस्" भन्ने प्रयोगकर्ताको आदेशको पालना गर्छ। तिनीहरू प्रणालीमा स्थायी नियमहरू सारियो; प्रयोगकर्ता इनपुटलाई निर्देशनबाट अलग गरेर, नियम उल्लङ्घनहरू उल्लेखनीय रूपमा घट्यो।

सामान्य गल्तीहरू

  • विगत पठाउन बिर्सनु: मोडेललाई "सम्झना छैन" भनिन्छ; जबकि यो राज्यविहीन छ। तपाईंले सन्दर्भ बोक्नुहुन्छ।
  • `stop_reason` हेरिरहेको छैन: max_tokens सँग रोकिएको प्रतिक्रियालाई पूर्ण मानिन्छ।
  • 'प्रयोगकर्ता' मा निर्देशन इम्बेड गर्दै: प्रणालीमा निरन्तर नियमहरू; तत्काल इनपुट प्रयोगकर्तामा जान्छ। मिश्रणले सुरक्षा कमजोरीहरू सिर्जना गर्दछ।
  • सादा स्ट्रिङको लागि 'सामग्री' गलत गर्दै: जवाफ ब्लकहरूको सूची हो; पहिलो टेक्स्ट ब्लकको टेक्स्ट फिल्ड पढ्नुहोस्, ब्लाइन्ड इन्डेक्सको साथ सामग्री[0] प्राप्त गर्नु अघि यसको प्रकार प्रमाणित गर्नुहोस्।
  • कोडमा कुञ्जी इम्बेड गर्दै: वातावरण चर प्रयोग गर्नुहोस् (एकाइ 9)।

गहिरो: सामग्री ब्लकहरू र बहु-भाग उत्तरहरू

तपाईंले पछि सामना गर्नुहुने उन्नत सुविधाहरूको लागि प्रतिक्रियामा सामग्री फिल्ड किन सूची हो भन्ने कुरा बुझ्नु महत्त्वपूर्ण छ। कहिलेकाहीँ मोडेलले पाठको एक ब्लक होइन, तर धेरै ब्लकहरू फर्काउँछ: सोचको ब्लक, पाठको ब्लक पछि; वा पाठको ब्लक पछि उपकरण प्रयोग ब्लक। यसैले "उत्तर" को रूपमा सामग्री[0] लाई अन्धाधुन्ध गणना गर्नु कमजोर छ। सही दृष्टिकोण भनेको सूची मार्फत जानु र यसलाई प्रकार अनुसार क्रमबद्ध गर्नु हो: तपाईंले ब्लकहरूको पाठ सामग्री सङ्कलन गर्नुहुन्छ जसको प्रकार फिल्ड पाठ हो, र अन्य प्रकारहरू (सोच, उपकरण) अलग रूपमा व्यवहार गर्नुहोस्।

यो भिन्नताले व्यवहारमा के गर्छ यो हो कि तपाइँ मोडेलको तर्क (यदि कुनै हो भने) प्रयोगकर्तालाई खुलासा नगरीकन लग गर्न सक्नुहुन्छ, उपकरण कलहरूलाई अलग तर्कमा रिडिरेक्ट गर्न सक्नुहुन्छ, र स्क्रिनमा वास्तविक जवाफ मात्र छाप्न सक्नुहुन्छ। मोड्युलको प्रगतिको रूपमा (विशेष गरी एकाइ 4 र 11 मा) तपाईंले देख्नुहुनेछ कि यो ब्लक संरचना प्रमाणीकरण र आउटपुट निर्देशित गर्न कत्तिको उपयोगी छ।

अर्को व्यावहारिक बिन्दु: तपाईं विभिन्न प्रदायक प्लेटफर्महरू (सीधा API, क्लाउड प्रदायक मार्फत) बाट समान मोडेल पहुँच गर्न सक्नुहुन्छ। यद्यपि अन्तिम बिन्दु ठेगाना र प्रमाणीकरण ढाँचा परिवर्तन हुन सक्छ, आधारभूत अवधारणाहरू जस्तै सन्देश भूमिकाहरू, राज्यविहीनता, र प्रतिक्रिया संरचना उस्तै रहन्छ। त्यसोभए तपाईले जुन प्लेटफर्म प्रयोग गर्नुहुन्छ यो एकाईमा आधारभूत कुराहरू लागू हुन्छन्।

संक्षेपमा

LLM API अनुरोधमा मोडेल, आउटपुट सीमा, र सन्देश सूची समावेश हुन्छ; भूमिका (प्रणाली, प्रयोगकर्ता, सहायक) मोडेल को व्यवहार निर्धारण। कलहरू राज्यविहीन छन्: तपाईंले प्रत्येक अनुरोधसँग सन्दर्भ बोक्नुहुन्छ। प्रतिक्रिया एक संरचित वस्तु हो; सामग्री, स्टप_कारण र उपयोग क्षेत्रहरू पढ्ने र व्याख्या गर्ने उत्पादनमा स्थायित्वको आधार हो।

आवेदन कार्य

तपाईंको आफ्नै पेशाबाट कार्य छनौट गर्नुहोस् (जस्तै आगमन इ-मेल क्रमबद्ध गर्ने, संक्षिप्त सारांशहरू सिर्जना गर्ने)। कागजको टुक्रामा: (1) 4-5 नियमहरू सहित प्रणाली प्रम्प्ट लेख्नुहोस्, (2) नमूना प्रयोगकर्ता सन्देश र यदि कुनै हो भने 2-राउन्ड इतिहास सेट गर्नुहोस्, (3) max_tokens को लागि उचित मूल्य निर्धारण गर्नुहोस् र औचित्य लेख्नुहोस्, (4) तपाईंले फिर्ता प्रतिक्रियामा ह्यान्डल गर्ने stop_reason मानहरूको सूची र कसरी।

चेकलिस्ट

  • [ ] म अनुरोधको तीन अनिवार्य भागहरू (मोडेल, अधिकतम_टोकन्स, सन्देशहरू) गणना गर्न सक्छु।
  • [ ] म प्रणाली, प्रयोगकर्ता र सहायक भूमिकाहरू बीचको भिन्नता व्याख्या गर्न सक्छु।
  • [ ] मलाई थाहा छ कि कलहरू राज्यविहीन छन् र मैले विगत बोक्न आवश्यक छ।
  • म [ ] सामग्री, stop_reason र उपयोग क्षेत्रहरू पढ्न र टिप्पणी गर्न सक्छु।
  • [ ] max_tokens को साथ म काटिएको प्रतिक्रिया देख्न र ह्यान्डल गर्न सक्छु।