# फ्लो ब्लूप्रिंट कॉन्फ़िगर करने योग्य पैरामीटर तकनीकी विनिर्देश ## अवलोकन यह विनिर्देश ट्रस्टग्राफ में कॉन्फ़िगर करने योग्य पैरामीटर के कार्यान्वयन का वर्णन करता है। पैरामीटर उपयोगकर्ताओं को फ्लो लॉन्च समय पर प्रोसेसर पैरामीटर को अनुकूलित करने की अनुमति देते हैं, जो फ्लो ब्लूप्रिंट परिभाषा में पैरामीटर प्लेसहोल्डर को बदलने वाले मान प्रदान करते हैं। पैरामीटर प्रोसेसर पैरामीटर में टेम्पलेट वेरिएबल प्रतिस्थापन के माध्यम से काम करते हैं, जो `{id}` और `{class}` वेरिएबल्स के काम करने के तरीके के समान है, लेकिन उपयोगकर्ता-प्रदत्त मानों के साथ। एकीकरण चार प्राथमिक उपयोग मामलों का समर्थन करता है: 1. **मॉडल चयन**: उपयोगकर्ताओं को प्रोसेसर के लिए विभिन्न एलएलएम मॉडल (जैसे, `gemma3:8b`, `gpt-4`, `claude-3`) चुनने की अनुमति देना 2. **संसाधन कॉन्फ़िगरेशन**: प्रोसेसर पैरामीटर जैसे कि चंक आकार, बैच आकार और समवर्ती सीमा को समायोजित करना 3. **व्यवहार ट्यूनिंग**: तापमान, अधिकतम-टोकन या पुनर्प्राप्ति थ्रेसहोल्ड जैसे पैरामीटर के माध्यम से प्रोसेसर व्यवहार को संशोधित करना 4. **पर्यावरण-विशिष्ट पैरामीटर**: प्रत्येक परिनियोजन के लिए समापन बिंदु, एपीआई कुंजियाँ या क्षेत्र-विशिष्ट यूआरएल को कॉन्फ़िगर करना ## लक्ष्य **डायनामिक प्रोसेसर कॉन्फ़िगरेशन**: पैरामीटर प्रतिस्थापन के माध्यम से प्रोसेसर पैरामीटर के रनटाइम कॉन्फ़िगरेशन को सक्षम करना **पैरामीटर सत्यापन**: फ्लो लॉन्च समय पर पैरामीटर के लिए टाइप चेकिंग और सत्यापन प्रदान करना **डिफ़ॉल्ट मान**: समझदार डिफ़ॉल्ट का समर्थन करना जबकि उन्नत उपयोगकर्ताओं के लिए ओवरराइड की अनुमति देना **टेम्पलेट प्रतिस्थापन**: प्रोसेसर पैरामीटर में पैरामीटर प्लेसहोल्डर को निर्बाध रूप से बदलना **यूआई एकीकरण**: एपीआई और यूआई इंटरफेस दोनों के माध्यम से पैरामीटर इनपुट को सक्षम करना **टाइप सुरक्षा**: यह सुनिश्चित करना कि पैरामीटर प्रकार अपेक्षित प्रोसेसर पैरामीटर प्रकारों से मेल खाते हैं **प्रलेखन**: फ्लो ब्लूप्रिंट परिभाषाओं के भीतर स्व-प्रलेखित पैरामीटर स्कीमा **पिछड़ा संगतता**: मौजूदा फ्लो ब्लूप्रिंट के साथ संगतता बनाए रखना जो पैरामीटर का उपयोग नहीं करते हैं ## पृष्ठभूमि ट्रस्टग्राफ में फ्लो ब्लूप्रिंट अब प्रोसेसर पैरामीटर का समर्थन करते हैं जिनमें या तो निश्चित मान या पैरामीटर प्लेसहोल्डर हो सकते हैं। यह रनटाइम अनुकूलन के लिए एक अवसर बनाता है। वर्तमान प्रोसेसर पैरामीटर का समर्थन: निश्चित मान: `"model": "gemma3:12b"` पैरामीटर प्लेसहोल्डर: `"model": "gemma3:{model-size}"` यह विनिर्देश परिभाषित करता है कि पैरामीटर कैसे हैं: फ्लो ब्लूप्रिंट परिभाषाओं में घोषित जब फ्लो लॉन्च होते हैं तो मान्य प्रोसेसर पैरामीटर में प्रतिस्थापित एपीआई और यूआई के माध्यम से उजागर पैरामीटराइज़्ड प्रोसेसर पैरामीटर का लाभ उठाकर, ट्रस्टग्राफ: भिन्नताओं के लिए पैरामीटर का उपयोग करके फ्लो ब्लूप्रिंट डुप्लिकेसन को कम करता है उपयोगकर्ताओं को परिभाषाओं को संशोधित किए बिना प्रोसेसर व्यवहार को ट्यून करने की अनुमति देता है पैरामीटर मानों के माध्यम से पर्यावरण-विशिष्ट कॉन्फ़िगरेशन का समर्थन करता है पैरामीटर स्कीमा सत्यापन के माध्यम से टाइप सुरक्षा बनाए रखता है ## तकनीकी डिजाइन ### वास्तुकला कॉन्फ़िगर करने योग्य पैरामीटर सिस्टम के लिए निम्नलिखित तकनीकी घटकों की आवश्यकता होती है: 1. **पैरामीटर स्कीमा परिभाषा** फ्लो ब्लूप्रिंट मेटाडेटा के भीतर JSON स्कीमा-आधारित पैरामीटर परिभाषाएँ स्ट्रिंग, नंबर, बूलियन, एनम और ऑब्जेक्ट प्रकार सहित प्रकार परिभाषाएँ न्यूनतम/अधिकतम मान, पैटर्न और आवश्यक फ़ील्ड सहित सत्यापन नियम मॉड्यूल: trustgraph-flow/trustgraph/flow/definition.py 2. **पैरामीटर रिज़ॉल्यूशन इंजन** स्कीमा के विरुद्ध रनटाइम पैरामीटर सत्यापन निर्दिष्ट पैरामीटर के लिए डिफ़ॉल्ट मानों का अनुप्रयोग फ्लो निष्पादन संदर्भ में पैरामीटर इंजेक्शन आवश्यकतानुसार प्रकार का रूपांतरण और रूपांतरण मॉड्यूल: trustgraph-flow/trustgraph/flow/parameter_resolver.py 3. **पैरामीटर स्टोर एकीकरण** स्कीमा/कॉन्फ़िग स्टोर से पैरामीटर परिभाषाओं की पुनर्प्राप्ति अक्सर उपयोग की जाने वाली पैरामीटर परिभाषाओं का कैशिंग केंद्रीय रूप से संग्रहीत स्कीमा के विरुद्ध सत्यापन मॉड्यूल: trustgraph-flow/trustgraph/flow/parameter_store.py 4. **फ्लो लॉन्चर एक्सटेंशन** फ्लो लॉन्च के दौरान पैरामीटर मानों को स्वीकार करने के लिए एपीआई एक्सटेंशन पैरामीटर मैपिंग रिज़ॉल्यूशन (फ्लो नाम से परिभाषा नाम) अमान्य पैरामीटर संयोजनों के लिए त्रुटि हैंडलिंग मॉड्यूल: trustgraph-flow/trustgraph/flow/launcher.py 5. **यूआई पैरामीटर फॉर्म** फ्लो पैरामीटर मेटाडेटा से गतिशील रूप से उत्पन्न फॉर्म `order` फ़ील्ड का उपयोग करके क्रमबद्ध पैरामीटर प्रदर्शन `description` फ़ील्ड का उपयोग करके वर्णनात्मक पैरामीटर लेबल पैरामीटर प्रकार परिभाषाओं के विरुद्ध इनपुट सत्यापन पैरामीटर प्रीसेट और टेम्पलेट मॉड्यूल: trustgraph-ui/components/flow-parameters/ ### डेटा मॉडल #### पैरामीटर परिभाषाएँ (स्कीमा/कॉन्फ़िग में संग्रहीत) पैरामीटर परिभाषाएँ स्कीमा और कॉन्फ़िग सिस्टम में "पैरामीटर-प्रकार" प्रकार के साथ केंद्रीय रूप से संग्रहीत की जाती हैं: ```json { "llm-model": { "type": "string", "description": "LLM model to use", "default": "gpt-4", "enum": [ { "id": "gpt-4", "description": "OpenAI GPT-4 (Most Capable)" }, { "id": "gpt-3.5-turbo", "description": "OpenAI GPT-3.5 Turbo (Fast & Efficient)" }, { "id": "claude-3", "description": "Anthropic Claude 3 (Thoughtful & Safe)" }, { "id": "gemma3:8b", "description": "Google Gemma 3 8B (Open Source)" } ], "required": false }, "model-size": { "type": "string", "description": "Model size variant", "default": "8b", "enum": ["2b", "8b", "12b", "70b"], "required": false }, "temperature": { "type": "number", "description": "Model temperature for generation", "default": 0.7, "minimum": 0.0, "maximum": 2.0, "required": false }, "chunk-size": { "type": "integer", "description": "Document chunk size", "default": 512, "minimum": 128, "maximum": 2048, "required": false } } ``` #### पैरामीटर संदर्भों के साथ फ्लो ब्लूप्रिंट फ्लो ब्लूप्रिंट, प्रकार संदर्भों, विवरणों और क्रम के साथ पैरामीटर मेटाडेटा को परिभाषित करते हैं: ```json { "flow_class": "document-analysis", "parameters": { "llm-model": { "type": "llm-model", "description": "Primary LLM model for text completion", "order": 1 }, "llm-rag-model": { "type": "llm-model", "description": "LLM model for RAG operations", "order": 2, "advanced": true, "controlled-by": "llm-model" }, "llm-temperature": { "type": "temperature", "description": "Generation temperature for creativity control", "order": 3, "advanced": true }, "chunk-size": { "type": "chunk-size", "description": "Document chunk size for processing", "order": 4, "advanced": true }, "chunk-overlap": { "type": "integer", "description": "Overlap between document chunks", "order": 5, "advanced": true, "controlled-by": "chunk-size" } }, "class": { "text-completion:{class}": { "request": "non-persistent://tg/request/text-completion:{class}", "response": "non-persistent://tg/response/text-completion:{class}", "parameters": { "model": "{llm-model}", "temperature": "{llm-temperature}" } }, "rag-completion:{class}": { "request": "non-persistent://tg/request/rag-completion:{class}", "response": "non-persistent://tg/response/rag-completion:{class}", "parameters": { "model": "{llm-rag-model}", "temperature": "{llm-temperature}" } } }, "flow": { "chunker:{id}": { "input": "persistent://tg/flow/chunk:{id}", "output": "persistent://tg/flow/chunk-load:{id}", "parameters": { "chunk_size": "{chunk-size}", "chunk_overlap": "{chunk-overlap}" } } } } ``` `parameters` अनुभाग प्रवाह-विशिष्ट पैरामीटर नामों (कुंजियों) को पैरामीटर मेटाडेटा ऑब्जेक्ट्स से मैप करता है जिनमें शामिल हैं: `type`: केंद्रीय रूप से परिभाषित पैरामीटर परिभाषा का संदर्भ (उदाहरण के लिए, "llm-model") `description`: यूआई प्रदर्शन के लिए मानव-पठनीय विवरण `order`: पैरामीटर फ़ॉर्म के लिए प्रदर्शन क्रम (छोटे नंबर पहले दिखाई देते हैं) `advanced` (वैकल्पिक): एक बूलियन ध्वज जो इंगित करता है कि क्या यह एक उन्नत पैरामीटर है (डिफ़ॉल्ट: false)। जब इसे true पर सेट किया जाता है, तो यूआई डिफ़ॉल्ट रूप से इस पैरामीटर को छिपा सकता है या इसे "उन्नत" अनुभाग में रख सकता है `controlled-by` (वैकल्पिक): एक अन्य पैरामीटर का नाम जो सरल मोड में इस पैरामीटर के मान को नियंत्रित करता है। जब निर्दिष्ट किया जाता है, तो यह पैरामीटर अपने मान को नियंत्रित पैरामीटर से प्राप्त करता है जब तक कि स्पष्ट रूप से ओवरराइड न किया जाए यह दृष्टिकोण अनुमति देता है: कई प्रवाह ब्लूप्रिंट में पुन: प्रयोज्य पैरामीटर प्रकार परिभाषाएँ केंद्रीकृत पैरामीटर प्रकार प्रबंधन और सत्यापन प्रवाह-विशिष्ट पैरामीटर विवरण और क्रम वर्णनात्मक पैरामीटर फ़ॉर्म के साथ बेहतर यूआई अनुभव प्रवाह में सुसंगत पैरामीटर सत्यापन नए मानक पैरामीटर प्रकारों को आसानी से जोड़ना बुनियादी/उन्नत मोड अलगाव के साथ सरलीकृत यूआई संबंधित सेटिंग्स के लिए पैरामीटर मान विरासत #### प्रवाह लॉन्च अनुरोध प्रवाह लॉन्च एपीआई प्रवाह के पैरामीटर नामों का उपयोग करके पैरामीटर स्वीकार करता है: ```json { "flow_class": "document-analysis", "flow_id": "customer-A-flow", "parameters": { "llm-model": "claude-3", "llm-temperature": 0.5, "chunk-size": 1024 } } ``` ध्यान दें: इस उदाहरण में, `llm-rag-model` स्पष्ट रूप से प्रदान नहीं किया गया है, लेकिन यह `llm-model` से "claude-3" मान को अपने `controlled-by` संबंध के कारण प्राप्त करेगा। इसी तरह, `chunk-overlap` `chunk-size` के आधार पर गणना किए गए मान को प्राप्त कर सकता है। सिस्टम निम्नलिखित कार्य करेगा: 1. फ्लो ब्लूप्रिंट परिभाषा से पैरामीटर मेटाडेटा निकालें 2. फ्लो पैरामीटर नामों को उनके प्रकार परिभाषाओं (जैसे, `llm-model` → `llm-model` प्रकार) में मैप करें 3. नियंत्रित-द्वारा संबंधों को हल करें (जैसे, `llm-rag-model` `llm-model` से प्राप्त होता है) 4. पैरामीटर प्रकार परिभाषाओं के विरुद्ध उपयोगकर्ता द्वारा प्रदान किए गए और प्राप्त मूल्यों को मान्य करें 5. फ्लो इंस्टेंशिएशन के दौरान हल किए गए मूल्यों को प्रोसेसर पैरामीटर में प्रतिस्थापित करें ### कार्यान्वयन विवरण #### पैरामीटर रिज़ॉल्यूशन प्रक्रिया जब कोई फ्लो शुरू होता है, तो सिस्टम निम्नलिखित पैरामीटर रिज़ॉल्यूशन चरण करता है: 1. **फ्लो ब्लूप्रिंट लोडिंग**: फ्लो ब्लूप्रिंट परिभाषा लोड करें और पैरामीटर मेटाडेटा निकालें 2. **मेटाडेटा निष्कर्षण**: फ्लो ब्लूप्रिंट के `parameters` अनुभाग में परिभाषित प्रत्येक पैरामीटर के लिए `type`, `description`, `order`, `advanced`, और `controlled-by` निकालें 3. **टाइप परिभाषा लुकअप**: फ्लो ब्लूप्रिंट में प्रत्येक पैरामीटर के लिए: स्कीमा/कॉन्फ़िग स्टोर से `type` फ़ील्ड का उपयोग करके पैरामीटर प्रकार परिभाषा प्राप्त करें प्रकार परिभाषाएँ कॉन्फ़िग सिस्टम में "parameter-type" प्रकार के साथ संग्रहीत की जाती हैं प्रत्येक प्रकार की परिभाषा में पैरामीटर का स्कीमा, डिफ़ॉल्ट मान और सत्यापन नियम होते हैं 4. **डिफ़ॉल्ट मान रिज़ॉल्यूशन**: फ्लो ब्लूप्रिंट में परिभाषित प्रत्येक पैरामीटर के लिए: जांचें कि क्या उपयोगकर्ता ने इस पैरामीटर के लिए कोई मान प्रदान किया है यदि कोई उपयोगकर्ता मान प्रदान नहीं किया गया है, तो पैरामीटर प्रकार परिभाषा से `default` मान का उपयोग करें उपयोगकर्ता द्वारा प्रदान किए गए और डिफ़ॉल्ट मानों दोनों को शामिल करते हुए एक पूर्ण पैरामीटर मानचित्र बनाएं 5. **पैरामीटर इनहेरिटेंस रिज़ॉल्यूशन** (नियंत्रित-द्वारा संबंध): `controlled-by` फ़ील्ड वाले पैरामीटर के लिए, जांचें कि क्या कोई मान स्पष्ट रूप से प्रदान किया गया था यदि कोई स्पष्ट मान प्रदान नहीं किया गया है, तो नियंत्रित पैरामीटर से मान प्राप्त करें यदि नियंत्रित पैरामीटर में भी कोई मान नहीं है, तो प्रकार परिभाषा से डिफ़ॉल्ट का उपयोग करें जांचें कि `controlled-by` संबंधों में कोई गोलाकार निर्भरता मौजूद नहीं है 6. **सत्यापन**: प्रकार परिभाषाओं के विरुद्ध पूर्ण पैरामीटर सेट (उपयोगकर्ता द्वारा प्रदान किए गए, डिफ़ॉल्ट और प्राप्त) को मान्य करें 7. **भंडारण**: ऑडिटिंग के लिए फ्लो इंस्टेंस के साथ पूर्ण हल किए गए पैरामीटर सेट को संग्रहीत करें 8. **टेम्प्लेट प्रतिस्थापन**: प्रोसेसर पैरामीटर में पैरामीटर प्लेसहोल्डर को हल किए गए मानों से बदलें 9. **प्रोसेसर इंस्टेंशिएशन**: प्रतिस्थापित पैरामीटर के साथ प्रोसेसर बनाएं **महत्वपूर्ण कार्यान्वयन नोट्स:** फ्लो सर्विस को पैरामीटर प्रकार परिभाषाओं से डिफ़ॉल्ट के साथ उपयोगकर्ता द्वारा प्रदान किए गए पैरामीटर को मर्ज करना होगा पूर्ण पैरामीटर सेट (लागू डिफ़ॉल्ट सहित) को पता लगाने के लिए फ्लो के साथ संग्रहीत किया जाना चाहिए पैरामीटर रिज़ॉल्यूशन फ्लो शुरू होने के समय होता है, प्रोसेसर इंस्टेंशिएशन के समय नहीं डिफ़ॉल्ट के बिना आवश्यक पैरामीटर गायब होने से फ्लो शुरू होने में विफलता होनी चाहिए, साथ ही एक स्पष्ट त्रुटि संदेश भी #### नियंत्रित-द्वारा के साथ पैरामीटर इनहेरिटेंस `controlled-by` फ़ील्ड पैरामीटर मान इनहेरिटेंस को सक्षम करता है, जो उपयोगकर्ता इंटरफ़ेस को सरल बनाने के साथ-साथ लचीलापन बनाए रखने के लिए विशेष रूप से उपयोगी है: **उदाहरण परिदृश्य**: `llm-model` पैरामीटर प्राथमिक LLM मॉडल को नियंत्रित करता है `llm-rag-model` पैरामीटर में `"controlled-by": "llm-model"` होता है सरल मोड में, `llm-model` को "gpt-4" पर सेट करने से स्वचालित रूप से `llm-rag-model` भी "gpt-4" पर सेट हो जाता है उन्नत मोड में, उपयोगकर्ता `llm-rag-model` को एक अलग मान के साथ ओवरराइड कर सकते हैं **रिज़ॉल्यूशन नियम**: 1. यदि किसी पैरामीटर में एक स्पष्ट रूप से प्रदान किया गया मान है, तो उस मान का उपयोग करें 2. यदि कोई स्पष्ट मान नहीं है और `controlled-by` सेट है, तो नियंत्रित पैरामीटर का मान उपयोग करें 3. यदि नियंत्रित पैरामीटर में कोई मान नहीं है, तो प्रकार परिभाषा से डिफ़ॉल्ट पर वापस जाएं 4. `controlled-by` संबंधों में गोलाकार निर्भरताएँ एक सत्यापन त्रुटि का कारण बनती हैं **UI व्यवहार**: बुनियादी/सरल मोड में: `controlled-by` वाले पैरामीटर छिपे हो सकते हैं या प्राप्त मान के साथ केवल-पढ़ने योग्य के रूप में दिखाए जा सकते हैं उन्नत मोड में: सभी पैरामीटर दिखाए जाते हैं और उन्हें व्यक्तिगत रूप से कॉन्फ़िगर किया जा सकता है जब एक नियंत्रित पैरामीटर बदलता है, तो निर्भर पैरामीटर स्वचालित रूप से अपडेट हो जाते हैं जब तक कि उन्हें स्पष्ट रूप से ओवरराइड न किया जाए #### पल्सर एकीकरण 1. **स्टार्ट-फ्लो ऑपरेशन** पल्सर स्टार्ट-फ्लो ऑपरेशन को एक `parameters` फ़ील्ड स्वीकार करना होगा जिसमें पैरामीटर मानों का एक मानचित्र होता है स्टार्ट-फ्लो अनुरोध के लिए पल्सर स्कीमा को वैकल्पिक `parameters` फ़ील्ड को शामिल करने के लिए अपडेट किया जाना चाहिए उदाहरण अनुरोध: ```json { "flow_class": "document-analysis", "flow_id": "customer-A-flow", "parameters": { "model": "claude-3", "size": "12b", "temp": 0.5, "chunk": 1024 } } ``` 2. **गेट-फ्लो ऑपरेशन** गेट-फ्लो प्रतिक्रिया के लिए पल्सर स्कीमा को `parameters` फ़ील्ड को शामिल करने के लिए अपडेट किया जाना चाहिए। यह ग्राहकों को उन पैरामीटर मानों को पुनः प्राप्त करने की अनुमति देता है जिनका उपयोग फ्लो शुरू करते समय किया गया था। उदाहरण प्रतिक्रिया: ```json { "flow_id": "customer-A-flow", "flow_class": "document-analysis", "status": "running", "parameters": { "model": "claude-3", "size": "12b", "temp": 0.5, "chunk": 1024 } } ``` #### फ्लो सर्विस कार्यान्वयन फ्लो कॉन्फ़िगरेशन सर्विस (`trustgraph-flow/trustgraph/config/service/flow.py`) को निम्नलिखित सुधारों की आवश्यकता है: 1. **पैरामीटर रिज़ॉल्यूशन फ़ंक्शन** ```python async def resolve_parameters(self, flow_class, user_params): """ Resolve parameters by merging user-provided values with defaults. Args: flow_class: The flow blueprint definition dict user_params: User-provided parameters dict Returns: Complete parameter dict with user values and defaults merged """ ``` यह फ़ंक्शन को इस प्रकार होना चाहिए: फ़्लो ब्लूप्रिंट के `parameters` अनुभाग से पैरामीटर मेटाडेटा निकालें प्रत्येक पैरामीटर के लिए, कॉन्फ़िगरेशन स्टोर से इसके प्रकार की परिभाषा प्राप्त करें उन सभी पैरामीटर के लिए डिफ़ॉल्ट मान लागू करें जो उपयोगकर्ता द्वारा प्रदान नहीं किए गए हैं `controlled-by` विरासत संबंधों को संभालें संपूर्ण पैरामीटर सेट लौटाएं 2. **संशोधित `handle_start_flow` विधि** फ़्लो ब्लूप्रिंट लोड करने के बाद `resolve_parameters` को कॉल करें टेम्पलेट प्रतिस्थापन के लिए पूरे हल किए गए पैरामीटर सेट का उपयोग करें पूरे पैरामीटर सेट को (केवल उपयोगकर्ता द्वारा प्रदान किए गए नहीं) फ़्लो के साथ संग्रहीत करें सत्यापित करें कि सभी आवश्यक पैरामीटर में मान हैं 3. **पैरामीटर प्रकार प्राप्त करना** पैरामीटर प्रकार की परिभाषाएँ "parameter-type" प्रकार के साथ कॉन्फ़िगर में संग्रहीत हैं प्रत्येक प्रकार की परिभाषा में स्कीमा, डिफ़ॉल्ट मान और सत्यापन नियम होते हैं अक्सर उपयोग किए जाने वाले पैरामीटर प्रकारों को कैश करें ताकि कॉन्फ़िगर लुकअप कम हो सकें #### कॉन्फ़िगर सिस्टम एकीकरण 3. **फ़्लो ऑब्जेक्ट स्टोरेज** जब कोई फ़्लो घटक कॉन्फ़िगर प्रबंधक में कॉन्फ़िगर सिस्टम में जोड़ा जाता है, तो फ़्लो ऑब्जेक्ट में हल किए गए पैरामीटर मान शामिल होने चाहिए कॉन्फ़िगर प्रबंधक को मूल उपयोगकर्ता-प्रदान किए गए पैरामीटर और हल किए गए मान दोनों (डिफ़ॉल्ट लागू किए गए) को संग्रहीत करने की आवश्यकता होती है कॉन्फ़िगर सिस्टम में फ़्लो ऑब्जेक्ट में शामिल होना चाहिए: `parameters`: फ़्लो के लिए उपयोग किए गए अंतिम हल किए गए पैरामीटर मान #### CLI एकीकरण 4. **लाइब्रेरी CLI कमांड** फ़्लो शुरू करने वाले CLI कमांड में पैरामीटर समर्थन होना चाहिए: कमांड-लाइन फ़्लैग या कॉन्फ़िगरेशन फ़ाइलों के माध्यम से पैरामीटर मान स्वीकार करें सबमिशन से पहले फ़्लो ब्लूप्रिंट परिभाषाओं के विरुद्ध पैरामीटर को मान्य करें जटिल पैरामीटर सेट के लिए पैरामीटर फ़ाइल इनपुट (JSON/YAML) का समर्थन करें फ़्लो दिखाने वाले CLI कमांड में पैरामीटर जानकारी प्रदर्शित करने की आवश्यकता होती है: उस समय प्रदर्शित करें जब फ़्लो शुरू किया गया था, तो उपयोग किए गए पैरामीटर मान एक फ़्लो ब्लूप्रिंट के लिए उपलब्ध पैरामीटर प्रदर्शित करें पैरामीटर सत्यापन स्कीमा और डिफ़ॉल्ट प्रदर्शित करें #### प्रोसेसर बेस क्लास एकीकरण 5. **पैरामीटरस्पेक समर्थन** प्रोसेसर बेस क्लास को मौजूदा पैरामीटर्सस्पेक तंत्र के माध्यम से पैरामीटर प्रतिस्थापन का समर्थन करने की आवश्यकता है पैरामीटर्सस्पेक क्लास (उपभोक्तास्पेक और प्रोड्यूसरस्पेक के समान मॉड्यूल में स्थित) को पैरामीटर टेम्पलेट प्रतिस्थापन का समर्थन करने के लिए आवश्यक होने पर बढ़ाया जाना चाहिए प्रोसेसर को अपने पैरामीटर को कॉन्फ़िगर करने के लिए पैरामीटर्सस्पेक को कॉल करने में सक्षम होना चाहिए, जिसमें फ़्लो लॉन्च समय पर हल किए गए पैरामीटर मान शामिल हैं पैरामीटर्सस्पेक कार्यान्वयन को: पैरामीटर कॉन्फ़िगरेशन स्वीकार करें जिसमें पैरामीटर प्लेसहोल्डर शामिल हैं (जैसे, `{model}`, `{temperature}`) प्रोसेसर के इंस्टेंट होने पर रनटाइम पैरामीटर प्रतिस्थापन का समर्थन करें सत्यापित करें कि प्रतिस्थापित मान अपेक्षित प्रकार और बाधाओं से मेल खाते हैं गुम या अमान्य पैरामीटर संदर्भों के लिए त्रुटि हैंडलिंग प्रदान करें #### प्रतिस्थापन नियम प्रोसेसर पैरामीटर में पैरामीटर `{parameter-name}` प्रारूप का उपयोग करते हैं पैरामीटर में पैरामीटर नाम फ़्लो के `parameters` अनुभाग में कुंजियों से मेल खाते हैं प्रतिस्थापन `{id}` और `{class}` प्रतिस्थापन के साथ-साथ होता है अमान्य पैरामीटर संदर्भ लॉन्च-टाइम त्रुटियों का परिणाम देते हैं केंद्रीय रूप से संग्रहीत पैरामीटर परिभाषा के आधार पर प्रकार सत्यापन होता है **महत्वपूर्ण**: सभी पैरामीटर मान स्ट्रिंग के रूप में संग्रहीत और प्रसारित किए जाते हैं संख्याओं को स्ट्रिंग में परिवर्तित किया जाता है (जैसे, `0.7` `"0.7"` बन जाता है) बूलियन को लोअरकेस स्ट्रिंग में परिवर्तित किया जाता है (जैसे, `true` `"true"` बन जाता है) यह पल्सर स्कीमा की आवश्यकता है जो `parameters = Map(String())` को परिभाषित करती है उदाहरण समाधान: ``` Flow parameter mapping: "model": "llm-model" Processor parameter: "model": "{model}" User provides: "model": "gemma3:8b" Final parameter: "model": "gemma3:8b" Example with type conversion: Parameter type default: 0.7 (number) Stored in flow: "0.7" (string) Substituted in processor: "0.7" (string) ``` ## परीक्षण रणनीति पैरामीटर स्कीमा सत्यापन के लिए यूनिट परीक्षण प्रोसेसर पैरामीटर में पैरामीटर प्रतिस्थापन के लिए एकीकरण परीक्षण विभिन्न पैरामीटर मानों के साथ फ्लो लॉन्च करने के लिए एंड-टू-एंड परीक्षण पैरामीटर फॉर्म पीढ़ी और सत्यापन के लिए यूआई परीक्षण कई पैरामीटर वाले फ्लो के लिए प्रदर्शन परीक्षण किनारे के मामले: गुम पैरामीटर, अमान्य प्रकार, अपरिभाषित पैरामीटर संदर्भ ## माइग्रेशन योजना 1. सिस्टम को बिना पैरामीटर वाले फ्लो ब्लूप्रिंट का समर्थन करना जारी रखना चाहिए। घोषित। 2. सिस्टम को बिना पैरामीटर वाले फ्लो का समर्थन करना जारी रखना चाहिए: यह बिना पैरामीटर वाले फ्लो और पैरामीटर वाले फ्लो दोनों के लिए काम करता है (उनके पास डिफ़ॉल्ट होते हैं)। ## खुले प्रश्न प्रश्न: क्या पैरामीटर जटिल, नेस्टेड ऑब्जेक्ट्स का समर्थन करेंगे, या केवल साधारण प्रकारों तक सीमित रहेंगे? उत्तर: पैरामीटर मान स्ट्रिंग के रूप में एन्कोड किए जाएंगे, इसलिए शायद हमें केवल स्ट्रिंग तक ही सीमित रहना चाहिए। प्रश्न: क्या पैरामीटर प्लेसहोल्डर को कतार के नामों में अनुमति दी जानी चाहिए, या केवल पैरामीटर में? उत्तर: केवल पैरामीटर में, ताकि अजीब इंजेक्शन और असामान्य स्थितियों से बचा जा सके। प्रश्न: पैरामीटर नामों और सिस्टम वेरिएबल्स के बीच टकराव को कैसे संभालें, जैसे कि `id` और `class`? अ: यह सही नहीं है कि फ्लो शुरू करते समय आईडी और क्लास दोनों निर्दिष्ट किए जाएं। प्रश्न: क्या हमें गणना किए गए पैरामीटर (अन्य पैरामीटर से प्राप्त) का समर्थन करना चाहिए? उत्तर: केवल स्ट्रिंग प्रतिस्थापन का उपयोग करके अजीब इंजेक्शन और विशेष मामलों को हटाना। ## संदर्भ JSON स्कीमा विनिर्देश: https://json-schema.org/ फ्लो ब्लूप्रिंट परिभाषा विनिर्देश: docs/tech-specs/flow-class-definition.md