mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-11 06:12:11 +02:00
88 lines
No EOL
8.8 KiB
Markdown
88 lines
No EOL
8.8 KiB
Markdown
# JSONL प्रॉम्प्ट आउटपुट तकनीकी विनिर्देश
|
|
|
|
## अवलोकन
|
|
|
|
यह विनिर्देश ट्रस्टग्राफ में प्रॉम्प्ट प्रतिक्रियाओं के लिए JSONL (JSON लाइन्स) आउटपुट प्रारूप के कार्यान्वयन का वर्णन करता है। JSONL, LLM (लार्ज लैंग्वेज मॉडल) प्रतिक्रियाओं से संरचित डेटा के ट्रंकेशन-प्रतिरोधी निष्कर्षण को सक्षम बनाता है, जो JSON सरणियों के आउटपुट के साथ महत्वपूर्ण समस्याओं को संबोधित करता है जब LLM प्रतिक्रियाएं आउटपुट टोकन सीमाओं तक पहुँच जाती हैं।
|
|
|
|
यह कार्यान्वयन निम्नलिखित उपयोग मामलों का समर्थन करता है:
|
|
|
|
1. **ट्रंकेशन-प्रतिरोधी निष्कर्षण**: LLM आउटपुट के बीच में काटे जाने पर भी, वैध आंशिक परिणाम निकालें।
|
|
2. **बड़े पैमाने पर निष्कर्षण**: टोकन सीमाओं के कारण पूर्ण विफलता के जोखिम के बिना, कई वस्तुओं का निष्कर्षण संभालें।
|
|
3. **मिश्रित-प्रकार निष्कर्षण**: एक ही प्रॉम्प्ट में कई इकाई प्रकारों (परिभाषाएं, संबंध, एंटिटीज, विशेषताएँ) का निष्कर्षण समर्थन करें।
|
|
4. **स्ट्रीमिंग-संगत आउटपुट**: निष्कर्षण परिणामों की भविष्य की स्ट्रीमिंग/इंक्रीमेंटल प्रोसेसिंग को सक्षम करें।
|
|
|
|
## लक्ष्य
|
|
|
|
- **पिछला संगतता**: `response-type: "json"` और `response-type: "text"` के साथ मौजूदा प्रॉम्प्ट अपरिवर्तित रहेंगे।
|
|
- **आंशिक परिणाम**: ट्रंकेशन के मामले में, आंशिक परिणाम प्राप्त करने की क्षमता।
|
|
- **सरल एपीआई**: क्लाइंट-साइड कोड में कोई बदलाव की आवश्यकता नहीं है।
|
|
|
|
## सुरक्षा विचार
|
|
|
|
- **इनपुट सत्यापन**: JSON पार्सिंग मानक `json.loads()` का उपयोग करता है जो इंजेक्शन हमलों के खिलाफ सुरक्षित है।
|
|
- **स्कीमा सत्यापन**: स्कीमा प्रवर्तन के लिए `jsonschema.validate()` का उपयोग किया जाता है।
|
|
- **कोई नया हमला सतह नहीं**: JSONL पार्सिंग, पंक्ति-दर-पंक्ति प्रसंस्करण के कारण JSON सरणी पार्सिंग की तुलना में सख्त रूप से सुरक्षित है।
|
|
|
|
## प्रदर्शन विचार
|
|
|
|
- **मेमोरी**: पंक्ति-दर-पंक्ति पार्सिंग, पूर्ण JSON सरणियों को लोड करने की तुलना में कम पीक मेमोरी का उपयोग करता है।
|
|
- **विलंबता**: पार्सिंग प्रदर्शन JSON सरणी पार्सिंग के समान है।
|
|
- **सत्यापन**: स्कीमा सत्यापन प्रति-वस्तु चलता है, जो ओवरहेड जोड़ता है लेकिन सत्यापन विफलता पर आंशिक परिणामों को सक्षम करता है।
|
|
|
|
## परीक्षण रणनीति
|
|
|
|
### यूनिट टेस्ट
|
|
|
|
- मान्य इनपुट के साथ JSONL पार्सिंग।
|
|
- खाली पंक्तियों के साथ JSONL पार्सिंग।
|
|
- Markdown कोड फ़ेंस के साथ JSONL पार्सिंग।
|
|
- अंतिम पंक्ति के काटे जाने के साथ JSONL पार्सिंग।
|
|
- अमान्य JSON पंक्तियों के साथ JSONL पार्सिंग।
|
|
- `oneOf` विभेदक यूनियनों के साथ स्कीमा सत्यापन।
|
|
- पिछड़ा संगतता: मौजूदा `"text"` और `"json"` प्रॉम्प्ट अपरिवर्तित।
|
|
|
|
### एकीकरण परीक्षण
|
|
|
|
- JSONL प्रॉम्प्ट के साथ एंड-टू-एंड निष्कर्षण।
|
|
- सिमुलेटेड ट्रंकेशन (कृत्रिम रूप से सीमित प्रतिक्रिया) के साथ निष्कर्षण।
|
|
- प्रकार विभेदक के साथ मिश्रित-प्रकार निष्कर्षण।
|
|
- सभी तीन प्रकारों के साथ ऑन्टोलॉजी निष्कर्षण।
|
|
|
|
### निष्कर्षण गुणवत्ता परीक्षण
|
|
|
|
- JSONL बनाम JSON सरणी प्रारूप: निष्कर्षण परिणामों की तुलना।
|
|
- ट्रंकेशन प्रतिरोधी: JSONL आंशिक परिणाम देता है जहां JSON विफल रहता है।
|
|
|
|
## प्रवासन योजना
|
|
|
|
### चरण 1: कार्यान्वयन
|
|
|
|
1. `PromptManager` में `parse_jsonl()` विधि लागू करें।
|
|
2. `invoke()` का विस्तार `response-type: "jsonl"` को संभालने के लिए।
|
|
3. यूनिट टेस्ट जोड़ें।
|
|
|
|
### चरण 2: प्रॉम्प्ट प्रवासन
|
|
|
|
1. `extract-definitions` प्रॉम्प्ट और कॉन्फ़िगरेशन अपडेट करें।
|
|
2. `extract-relationships` प्रॉम्प्ट और कॉन्फ़िगरेशन अपडेट करें।
|
|
3. `extract-topics` प्रॉम्प्ट और कॉन्फ़िगरेशन अपडेट करें।
|
|
4. `extract-rows` प्रॉम्प्ट और कॉन्फ़िगरेशन अपडेट करें।
|
|
5. `agent-kg-extract` प्रॉम्प्ट और कॉन्फ़िगरेशन अपडेट करें।
|
|
6. `extract-with-ontologies` प्रॉम्प्ट और कॉन्फ़िगरेशन अपडेट करें।
|
|
|
|
### चरण 3: डाउनस्ट्रीम अपडेट
|
|
|
|
1. निष्कर्षण परिणामों को संभालने के लिए निष्कर्षण परिणामों का उपभोग करने वाले किसी भी कोड को अपडेट करें।
|
|
2. `type` फ़ील्ड द्वारा वर्गीकृत मिश्रित-प्रकार निष्कर्षण के लिए कोड को अपडेट करें।
|
|
3. निष्कर्षण आउटपुट प्रारूप पर जोर देने वाले परीक्षणों को अपडेट करें।
|
|
|
|
## खुले प्रश्न
|
|
|
|
इस समय कोई नहीं।
|
|
|
|
## संदर्भ
|
|
|
|
- वर्तमान कार्यान्वयन: `trustgraph-flow/trustgraph/template/prompt_manager.py`
|
|
- JSON लाइन्स विनिर्देश: https://jsonlines.org/
|
|
- JSON स्कीमा `oneOf`: https://json-schema.org/understanding-json-schema/reference/combining.html#oneof
|
|
- संबंधित विनिर्देश: स्ट्रीमिंग LLM प्रतिक्रियाएं (`docs/tech-specs/streaming-llm-responses.md`) |