trustgraph/docs/tech-specs/jsonl-prompt-output.hi.md
Alex Jenkins 8954fa3ad7 Feat: TrustGraph i18n & Documentation Translation Updates (#781)
Native CLI i18n: The TrustGraph CLI has built-in translation support
that dynamically loads language strings. You can test and use
different languages by simply passing the --lang flag (e.g., --lang
es for Spanish, --lang ru for Russian) or by configuring your
environment's LANG variable.

Automated Docs Translations: This PR introduces autonomously
translated Markdown documentation into several target languages,
including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew,
Arabic, Simplified Chinese, and Russian.
2026-04-14 12:08:32 +01:00

561 lines
38 KiB
Markdown

---
layout: default
title: "JSONL प्रॉम्प्ट आउटपुट तकनीकी विनिर्देश"
parent: "Hindi (Beta)"
---
# JSONL प्रॉम्प्ट आउटपुट तकनीकी विनिर्देश
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
## अवलोकन
<<<<<<< HEAD
यह ििर्देश ट्रस्टग्र में प्रम्प्ट प्रतिक्रिओं के ि JSONL (JSON इन्स) आउटपुट प्ररूप के र्यन्वयन वर्णन करत है JSONL, LLM प्रतिक्रिओं से संरचि डेट िलने में सक्षम बन है, ि LLM प्रतिक्रिओं के आउटपुट कन ओं तक पहुंचने पर JSON सरण आउटपुट के दूषि ने जैस महत्वपूर्ण समस्यओं हल करत है
=======
यह ििर्देश ट्रस्टग्र में प्रम्प्ट प्रतिक्रिओं के ि JSONL (JSON इन्स) आउटपुट प्ररूप के र्यन्वयन वर्णन करत है JSONL, LLM प्रतिक्रिओं से संरचि डेट िलने में सक्षम बन है, ि LLM प्रतिक्रिओं के आउटपुट कन ओं तक पहुंचने पर JSON सरण आउटपुट के दूषि ने जैस महत्वपूर्ण समस्यओं सम करत है
>>>>>>> 82edf2d (New md files from RunPod)
<<<<<<< HEAD
1. **ट्रंकेशन-रेज़िलिएंट एक्सट्रैक्शन (Truncation-Resilient Extraction)**: वैध आंशि परि िलें, भले
एलएलएम (LLM) आउटपुट प्रतिक्रि के में ि गय ो।
2. **बड़े पैमाने पर एक्सट्रैक्शन (Large-Scale Extraction)**: कन ओं के रण पूर्ण िफलत के ि के िा, कई वस्तुओं के िष्कर्षण संभलें
3. **मिश्रित-प्रकार एक्सट्रैक्शन (Mixed-Type Extraction)**: एक प्रम्प्ट में कई इक प्रक (परिओं, संबंध, संस्थओं, िशेषतओं) के िष्कर्षण समर्थन करें
4. **स्ट्रीमिंग-संगत आउटपुट (Streaming-Compatible Output)**: िष्कर्षण परि भविष्य स्ट्रिंग/क्रमि
प्रसंस्करण सक्षम करें
=======
यह र्यन्वयन िम्नलिि उपय परिदृश्य समर्थन करत है:
1. **ट्रंकेशन-प्रतिरोधी निष्कर्षण**: भले एलएलएम आउटपुट प्रतिक्रि के में ि गय ो, ि न्य आंशि परि िलें
एलएलएम आउटपुट प्रतिक्रि के में ि गय ो, ि न्य आंशि परि िलें
2. **बड़ी-पैमाने पर निष्कर्षण**: कन ओं के रण पूर्ण िफलत के ि के िा, कई वस्तुओं के िष्कर्षण संभलें
कन ओं के रण पूर्ण िफलत के ि के िा, कई वस्तुओं के िष्कर्षण संभलें
3. **मिश्रित-प्रकार निष्कर्षण**: एक प्रम्प्ट में कई इक प्रक (परिएँ, संबंध, इकइय, िशेषतएँ) के िष्कर्षण समर्थन करें
एक प्रम्प्ट में कई इक प्रक (परिएँ, संबंध, इकइय, िशेषतएँ) के िष्कर्षण समर्थन करें
4. **स्ट्रीमिंग-संगत आउटपुट**: िष्कर्षण परि भविष्य स्ट्रिंग/क्रमि प्रसंस्करण सक्षम करें
िष्कर्षण परि भविष्य स्ट्रिंग/क्रमि प्रसंस्करण सक्षम करें
>>>>>>> 82edf2d (New md files from RunPod)
## लक्ष्य
**पिछड़ा संगतता (Backward Compatibility)**: मौजूदा प्रॉम्प्ट जो `response-type: "text"` और का उपयोग करते हैं,
<<<<<<< HEAD
`response-type: "json"` ि ि बदल के करन रखते हैं
**अतिसंयमी लचीलापन (Truncation Resilience)**: आंशि एलएलएम आउटपुट आंशि, न्य परि देते हैं,
पूर्ण िफलत के बज
**स्कीमा सत्यापन (Schema Validation)**: व्यक्तिगत ऑब्जेक्ट के ि JSON स्क सत्यपन समर्थन
=======
`response-type: "json"`, ि ि बदल के करन रखते हैं
**अतिसंयमी लचीलापन (Truncation Resilience)**: आंशि एलएलएम आउटपुट आंशि, न्य परि देते हैं,
पूर्ण िफलत के बज
**स्कीमा सत्यापन (Schema Validation)**: व्यक्तिगत वस्तुओं के ि JSON स्क सत्यपन समर्थन
>>>>>>> 82edf2d (New md files from RunPod)
**विभेदक संघ (Discriminated Unions)**: `type` फ़ील्ड का उपयोग करके मिश्रित-प्रकार के आउटपुट का समर्थन।
विभेदक।
**न्यूनतम एपीआई परिवर्तन (Minimal API Changes)**: नए प्रतिक्रिया प्रकार और स्कीमा कुंजी के साथ मौजूदा प्रॉम्प्ट कॉन्फ़िगरेशन का विस्तार।
## पृष्ठभूमि
### वर्तमान आर्किटेक्चर
प्रॉम्प्ट सेवा दो प्रकार के प्रतिक्रियाओं का समर्थन करती है:
1. `response-type: "text"` - बिना किसी बदलाव के वापस की गई कच्ची टेक्स्ट प्रतिक्रिया
<<<<<<< HEAD
2. `response-type: "json"` - प्रतिक्रि से र्स ि गय JSON, िसक ँच `response-type: "json"` के िरुद्ध है
वैकल्पि `schema`
`trustgraph-flow/trustgraph/template/prompt_manager.py` में वर्तम र्यन्वयन:
=======
2. `response-type: "json"` - प्रतिक्रि से र्स ि गय JSON, िसक तुलन
वैकल्पि `schema` से है
वर्तम र्यन्वयन `trustgraph-flow/trustgraph/template/prompt_manager.py` में:
>>>>>>> 82edf2d (New md files from RunPod)
```python
class Prompt:
def __init__(self, template, response_type = "text", terms=None, schema=None):
self.template = template
self.response_type = response_type
self.terms = terms
self.schema = schema
```
<<<<<<< HEAD
### वर्तमान सीमाएँ
जब िष्कर्षण प्रम्प्ट आउटपुट JSON सरणि (`[{...}, {...}, ...]`) के रूप में ंगते हैं:
**अतिसंक्षेपण भ्रष्टाचार**: यदि LLM आउटपुट कन ओं सरण के में करत है,
संपूर्ण प्रतिक्रि अमन्य JSON बन है और इसे र्स नह ि सकत है
**सब कुछ या कुछ नहीं पार्सिंग**: र्स करने से पहले पूर्ण आउटपुट प्रप्त करन आवश्यक है
**कोई आंशिक परिणाम नहीं**: एक आउटपुट शून्य उपय डेट उत्पन्न करत है
**बड़े निष्कर्षणों के लिए अविश्वसनीय**: अधि िले गए आइटम = उच्च िफलत ि
यह ििर्देश इन ओं JSONL प्ररूप पेश करके संबि करत है, जह प्रत्येक िले गए आइटम अपन
=======
### वर्तमान सीमाएं
जब िष्कर्षण प्रम्प्ट आउटपुट JSON सरणि (`[{...}, {...}, ...]`) के रूप में ंगते हैं:
**अतिसंयोजन भ्रष्टाचार**: यदि LLM आउटपुट कन ओं सरण के में करत है,
संपूर्ण प्रतिक्रि अमन्य JSON बन है और इसे र्स नह ि सकत है
**सब कुछ या कुछ नहीं पार्सिंग**: र्स करने से पहले पूर्ण आउटपुट प्रप्त करन आवश्यक है
**कोई आंशिक परिणाम नहीं**: एकtruncated प्रतिक्रि शून्य उपय डेट उत्पन्न करत है
**बड़े निष्कर्षणों के लिए अविश्वसनीय**: अधि िले गए आइटम = उच्च िफलत ि
यह ििर्देश इन ओं JSONL प्ररूप पेश करके संबि करत है, जह प्रत्येक िले गए आइटम अपन
>>>>>>> 82edf2d (New md files from RunPod)
पंक्ति पर एक पूर्ण JSON ऑब्जेक्ट के रूप में दर्शाया जाता है।
## तकनीकी डिज़ाइन
### प्रतिक्रिया प्रकार विस्तार
मौजूदा `"text"` और `"json"` प्रकारों के साथ एक नया प्रतिक्रिया प्रकार `"jsonl"` जोड़ें।
#### कॉन्फ़िगरेशन परिवर्तन
**नया प्रतिक्रिया प्रकार मान:**
```
"response-type": "jsonl"
```
**स्कीमा व्याख्या:**
मौजूदा `"schema"` कुंजी का उपयोग `"json"` और `"jsonl"` दोनों प्रतिक्रिया प्रकारों के लिए किया जाता है।
व्याख्या प्रतिक्रिया के प्रकार पर निर्भर करती है:
`"json"`: स्कीमा संपूर्ण प्रतिक्रिया का वर्णन करता है (आमतौर पर एक सरणी या ऑब्जेक्ट)।
`"jsonl"`: स्कीमा प्रत्येक व्यक्तिगत पंक्ति/ऑब्जेक्ट का वर्णन करता है।
```json
{
"response-type": "jsonl",
"schema": {
"type": "object",
"properties": {
"entity": { "type": "string" },
"definition": { "type": "string" }
},
"required": ["entity", "definition"]
}
}
```
यह प्रॉम्प्ट कॉन्फ़िगरेशन टूलिंग और संपादकों में बदलावों से बचाता है।
### JSONL प्रारूप विनिर्देश
#### सरल निष्कर्षण
उन प्रॉम्प्ट के लिए जो केवल एक प्रकार की वस्तु (परिभाषाएँ, संबंध,
<<<<<<< HEAD
िषय, पंक्ति) िलते हैं, आउटपुट में ि ि अतििक्त आवरण के प्रति पंक्ति एक JSON ऑब्जेक्ट है:
=======
िषय, पंक्ति) िलते हैं, आउटपुट में ि ि अतििक्त आवरण के, प्रति पंक्ति एक JSON ऑब्जेक्ट है:
>>>>>>> 82edf2d (New md files from RunPod)
**प्रॉम्प्ट आउटपुट प्रारूप:**
```
{"entity": "photosynthesis", "definition": "Process by which plants convert sunlight"}
{"entity": "chlorophyll", "definition": "Green pigment in plants"}
{"entity": "mitochondria", "definition": "Powerhouse of the cell"}
```
**पिछले JSON सरणी प्रारूप के साथ अंतर:**
```json
[
{"entity": "photosynthesis", "definition": "Process by which plants convert sunlight"},
{"entity": "chlorophyll", "definition": "Green pigment in plants"},
{"entity": "mitochondria", "definition": "Powerhouse of the cell"}
]
```
यदि एलएलएम (LLM) दूसरी पंक्ति के बाद कट जाता है, तो JSON सरणी प्रारूप अमान्य JSON उत्पन्न करता है,
जबकि JSONL दो मान्य ऑब्जेक्ट उत्पन्न करता है।
#### मिश्रित-प्रकार निष्कर्षण (भेदभावपूर्ण संघ)
<<<<<<< HEAD
उन प्रम्प्ट के ि ऑब्जेक्ट के कई प्रक िलते हैं (उदहरण के ि, परिएँ और
संबंध, इकइय, संबंध और िशेषतएँ), एक `"type"`
फ़ल्ड िभेदक के रूप में उपय करें:
=======
उन प्रम्प्ट के ि कई प्रक वस्तुओं िलते हैं (उदहरण के ि, परिएँ और
संबंध, इकइय, संबंध और िशेषतएँ), एक `"type"`
फ़ल्ड उपय िभेदक के रूप में करें:
>>>>>>> 82edf2d (New md files from RunPod)
**प्रॉम्प्ट आउटपुट प्रारूप:**
```
{"type": "definition", "entity": "DNA", "definition": "Molecule carrying genetic instructions"}
{"type": "relationship", "subject": "DNA", "predicate": "located_in", "object": "cell nucleus", "object-entity": true}
{"type": "definition", "entity": "RNA", "definition": "Molecule that carries genetic information"}
{"type": "relationship", "subject": "RNA", "predicate": "transcribed_from", "object": "DNA", "object-entity": true}
```
**विभेदक संघों के लिए स्कीमा `oneOf` का उपयोग करता है:**
```json
{
"response-type": "jsonl",
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"type": { "const": "definition" },
"entity": { "type": "string" },
"definition": { "type": "string" }
},
"required": ["type", "entity", "definition"]
},
{
"type": "object",
"properties": {
"type": { "const": "relationship" },
"subject": { "type": "string" },
"predicate": { "type": "string" },
"object": { "type": "string" },
"object-entity": { "type": "boolean" }
},
"required": ["type", "subject", "predicate", "object", "object-entity"]
}
]
}
}
```
#### शब्दावली निष्कर्षण
संस्थाओं, संबंधों और विशेषताओं के साथ शब्दावली-आधारित निष्कर्षण के लिए:
**प्रॉम्प्ट आउटपुट प्रारूप:**
```
{"type": "entity", "entity": "Cornish pasty", "entity_type": "fo/Recipe"}
{"type": "entity", "entity": "beef", "entity_type": "fo/Food"}
{"type": "relationship", "subject": "Cornish pasty", "subject_type": "fo/Recipe", "relation": "fo/has_ingredient", "object": "beef", "object_type": "fo/Food"}
{"type": "attribute", "entity": "Cornish pasty", "entity_type": "fo/Recipe", "attribute": "fo/serves", "value": "4 people"}
```
### कार्यान्वयन विवरण
#### प्रॉम्प्ट क्लास
मौजूदा `Prompt` क्लास में कोई बदलाव आवश्यक नहीं है। `schema` फ़ील्ड का पुन: उपयोग किया गया है।
JSONL के लिए, जिसका अर्थ `response_type` द्वारा निर्धारित किया जाता है:
```python
class Prompt:
def __init__(self, template, response_type="text", terms=None, schema=None):
self.template = template
self.response_type = response_type
self.terms = terms
self.schema = schema # Interpretation depends on response_type
```
<<<<<<< HEAD
#### प्रॉम्प्टमैनेजर.लोड_कॉन्फ़िगरेशन
=======
#### PromptManager.load_config
>>>>>>> 82edf2d (New md files from RunPod)
कोई बदलाव आवश्यक नहीं है - मौजूदा कॉन्फ़िगरेशन लोड करने की प्रक्रिया पहले से ही
`schema` कुंजी को संभालती है।
#### JSONL पार्सिंग
JSONL प्रतिक्रियाओं के लिए एक नई पार्सिंग विधि जोड़ें:
```python
def parse_jsonl(self, text):
"""
Parse JSONL response, returning list of valid objects.
Invalid lines (malformed JSON, empty lines) are skipped with warnings.
This provides truncation resilience - partial output yields partial results.
"""
results = []
for line_num, line in enumerate(text.strip().split('\n'), 1):
line = line.strip()
# Skip empty lines
if not line:
continue
# Skip markdown code fence markers if present
if line.startswith('```'):
continue
try:
obj = json.loads(line)
results.append(obj)
except json.JSONDecodeError as e:
# Log warning but continue - this provides truncation resilience
logger.warning(f"JSONL parse error on line {line_num}: {e}")
return results
```
#### प्रॉम्प्टमैनेजर.इनवॉइक में बदलाव
इनवॉइक विधि को नए प्रतिक्रिया प्रकार को संभालने के लिए विस्तारित करें:
```python
async def invoke(self, id, input, llm):
logger.debug("Invoking prompt template...")
terms = self.terms | self.prompts[id].terms | input
resp_type = self.prompts[id].response_type
prompt = {
"system": self.system_template.render(terms),
"prompt": self.render(id, input)
}
resp = await llm(**prompt)
if resp_type == "text":
return resp
if resp_type == "json":
try:
obj = self.parse_json(resp)
except:
logger.error(f"JSON parse failed: {resp}")
raise RuntimeError("JSON parse fail")
if self.prompts[id].schema:
try:
validate(instance=obj, schema=self.prompts[id].schema)
logger.debug("Schema validation successful")
except Exception as e:
raise RuntimeError(f"Schema validation fail: {e}")
return obj
if resp_type == "jsonl":
objects = self.parse_jsonl(resp)
if not objects:
logger.warning("JSONL parse returned no valid objects")
return []
# Validate each object against schema if provided
if self.prompts[id].schema:
validated = []
for i, obj in enumerate(objects):
try:
validate(instance=obj, schema=self.prompts[id].schema)
validated.append(obj)
except Exception as e:
logger.warning(f"Object {i} failed schema validation: {e}")
return validated
return objects
raise RuntimeError(f"Response type {resp_type} not known")
```
### प्रभावित संकेत (प्रॉम्प्ट)
निम्नलिखित संकेतों को JSONL प्रारूप में स्थानांतरित किया जाना चाहिए:
| संकेत आईडी | विवरण | प्रकार फ़ील्ड |
|-----------|-------------|------------|
| `extract-definitions` | इकाई/परिभाषा निष्कर्षण | नहीं (एकल प्रकार) |
| `extract-relationships` | संबंध निष्कर्षण | नहीं (एकल प्रकार) |
| `extract-topics` | विषय/परिभाषा निष्कर्षण | नहीं (एकल प्रकार) |
| `extract-rows` | संरचित पंक्ति निष्कर्षण | नहीं (एकल प्रकार) |
| `agent-kg-extract` | संयुक्त परिभाषा + संबंध निष्कर्षण | हाँ: `"definition"`, `"relationship"` |
| `extract-with-ontologies` / `ontology-extract` | ज्ञान-आधारित निष्कर्षण | हाँ: `"entity"`, `"relationship"`, `"attribute"` |
### एपीआई में बदलाव
#### क्लाइंट का दृष्टिकोण
JSONL पार्सिंग, प्रॉम्प्ट सर्विस एपीआई उपयोगकर्ताओं के लिए पारदर्शी है। पार्सिंग प्रॉम्प्ट सर्विस में सर्वर-साइड पर होता है, और प्रतिक्रिया मानक ⟦CODE_0⟧ फ़ील्ड के रूप में एक क्रमबद्ध JSON सरणी के माध्यम से वापस की जाती है।
`PromptResponse.object`
जब ग्राहक प्रॉम्प्ट सेवा को कॉल करते हैं (`PromptClient.prompt()` या इसी तरह के माध्यम से):
**`response-type: "json"`** जिसमें एरे स्कीमा है → ग्राहक को पायथन `list` प्राप्त होता है।
**`response-type: "jsonl"`** → ग्राहक को पायथन `list` प्राप्त होता है।
<<<<<<< HEAD
ग्रहक के दृष्टि से, सम डेट संरचनएं ते हैं
अंतर पूर तरह से इस में है ि सर्वर-सइड पर एलएलएम आउटपुट कैसे र्स ि है:
JSON सरण प्ररूप: एक `json.loads()` ; यदि ि गय पूर तरह से िफल है
JSONL प्ररूप: इन-दर-लइन र्सिंग; यदि ि गय आंशि परि देत है
=======
ग्रहक के दृष्टि से, सम डेट संरचनएँ ते हैं
अंतर पूर तरह से इस में है ि सर्वर-सइड पर एलएलएम आउटपुट कैसे र्स ि है:
JSON सरण प्ररूप: एक `json.loads()` ; यदि ि गय पूर तरह िफल है
JSONL प्ररूप: पंक्ति-दर-पंक्ति र्सिंग; यदि ि गय आंशि परि देत है
>>>>>>> 82edf2d (New md files from RunPod)
इसका मतलब है कि मौजूदा क्लाइंट कोड जो एक्सट्रैक्शन प्रॉम्प्ट से एक सूची की अपेक्षा करता है,
को JSON से JSONL प्रारूप में प्रॉम्प्ट माइग्रेट करते समय किसी भी बदलाव की आवश्यकता नहीं होती है।
#### सर्वर रिटर्न वैल्यू
`response-type: "jsonl"` के लिए, `PromptManager.invoke()` विधि एक
<<<<<<< HEAD
`list[dict]` है िसमें सभ सफलतपूर्वक र्स और न्य ि गए ऑब्जेक्ट ि ते हैं इस
=======
`list[dict]` है िसमें सभ सफलतपूर्वक र्स ि गए और न्य ऑब्जेक्ट ि हैं इस
>>>>>>> 82edf2d (New md files from RunPod)
सूची को तब `PromptResponse.object` फ़ील्ड के लिए JSON में क्रमबद्ध किया जाता है।
#### त्रुटि प्रबंधन
<<<<<<< HEAD
परिम: सूच `[]` है चेतवन के
आंशि र्स िफलत: सफलतपूर्वक र्स ि गए ऑब्जेक्ट सूच है,
िफलतओं के ि चेतवन के
पूर्ण र्स िफलत: सूच `[]` है, चेतवन के
यह `response-type: "json"` से अलग है, र्स िफलत पर `RuntimeError` उत्पन्न करत है
=======
परिम: सूच `[]` है, में चेतवन
आंशि र्स िफलत: सफलतपूर्वक र्स ि गए ऑब्जेक्ट सूच है,
िफलतओं के ि चेतवन के
पूर्ण र्स िफलत: सूच `[]` है, में चेतवन
यह `response-type: "json"` से िन्न है, र्स िफलत पर `RuntimeError` उत्पन्न करत है
>>>>>>> 82edf2d (New md files from RunPod)
JSONL के लिए उदार व्यवहार जानबूझकर प्रदान किया गया है ताकि ट्रंकेशन के प्रति लचीलापन मिल सके।
### कॉन्फ़िगरेशन उदाहरण
पूर्ण प्रॉम्प्ट कॉन्फ़िगरेशन उदाहरण:
```json
{
"prompt": "Extract all entities and their definitions from the following text. Output one JSON object per line.\n\nText:\n{{text}}\n\nOutput format per line:\n{\"entity\": \"<name>\", \"definition\": \"<definition>\"}",
"response-type": "jsonl",
"schema": {
"type": "object",
"properties": {
"entity": {
"type": "string",
"description": "The entity name"
},
"definition": {
"type": "string",
"description": "A clear definition of the entity"
}
},
"required": ["entity", "definition"]
}
}
```
## सुरक्षा संबंधी विचार
**इनपुट सत्यापन**: JSON पार्सिंग मानक `json.loads()` का उपयोग करता है, जो इंजेक्शन हमलों के खिलाफ सुरक्षित है।
**स्कीमा सत्यापन**: स्कीमा प्रवर्तन के लिए ⟦CODE_0⟧ का उपयोग करता है।
**स्कीमा सत्यापन**: स्कीमा के अनुपालन को सुनिश्चित करने के लिए `jsonschema.validate()` का उपयोग करता है।
**कोई नया आक्रमण क्षेत्र नहीं**: JSONL पार्सिंग, लाइन-दर-लाइन प्रसंस्करण के कारण, JSON सरणी पार्सिंग की तुलना में बहुत अधिक सुरक्षित है।
## प्रदर्शन संबंधी विचार
<<<<<<< HEAD
**मेमोरी**: पंक्ति-दर-पंक्ति र्सिंग, पूरे JSON सरणि करने तुलन में कम चरम मेम उपय करत है
=======
**मेमोरी**: इन-दर-लइन र्सिंग, पूरे JSON सरणि करने तुलन में कम चरम मेम उपय करत है
>>>>>>> 82edf2d (New md files from RunPod)
**विलंबता**: पार्सिंग प्रदर्शन, JSON सरणी पार्सिंग के समान है।
**सत्यापन**: स्कीमा सत्यापन प्रत्येक ऑब्जेक्ट के लिए किया जाता है, जिससे ओवरहेड बढ़ता है, लेकिन सत्यापन विफलता पर आंशिक परिणाम प्राप्त करने की अनुमति मिलती है।
## परीक्षण रणनीति
## परीक्षण रणनीति
### यूनिट परीक्षण (Unit Tests)
मान्य इनपुट के साथ JSONL पार्सिंग
खाली पंक्तियों के साथ JSONL पार्सिंग
मार्कडाउन कोड फ़ेंस के साथ JSONL पार्सिंग
<<<<<<< HEAD
कटे हुए अंति पंक्ति के JSONL र्सिंग
=======
truncated अंति पंक्ति के JSONL र्सिंग
>>>>>>> 82edf2d (New md files from RunPod)
अमान्य JSON पंक्तियों के साथ JSONL पार्सिंग
`oneOf` विभेदक संघों के साथ स्कीमा सत्यापन
पिछली अनुकूलता: मौजूदा `"text"` और `"json"` प्रॉम्प्ट अपरिवर्तित
### एकीकरण परीक्षण (Integration Tests)
JSONL प्रॉम्प्ट के साथ एंड-टू-एंड निष्कर्षण
<<<<<<< HEAD
अनुकरणि कट के िष्कर्षण (कृत्रि रूप से ि प्रतिक्रिा)
=======
अनुकरणि ट्रंकेशन के िष्कर्षण (कृत्रि रूप से ि प्रतिक्रिा)
>>>>>>> 82edf2d (New md files from RunPod)
टाइप डिस्क्रिमिनेटर के साथ मिश्रित-प्रकार निष्कर्षण
सभी तीन प्रकारों के साथ ऑन्टोलॉजी निष्कर्षण
### निष्कर्षण गुणवत्ता परीक्षण (Extraction Quality Tests)
निष्कर्षण परिणामों की तुलना करें: JSONL बनाम JSON सरणी प्रारूप
ट्रंकेशन के प्रति लचीलापन की जाँच करें: JSONL आंशिक परिणाम देता है जहाँ JSON विफल रहता है
## माइग्रेशन योजना
### चरण 1: कार्यान्वयन
1. `parse_jsonl()` विधि को `PromptManager` में लागू करें
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` फ़ील्ड द्वारा मिश्रित-प्रकार के निष्कर्षणों को वर्गीकृत करने वाले कोड को अपडेट करें
<<<<<<< HEAD
3. िष्कर्षण आउटपुट प्ररूप पर करने ले परक्षण अपडेट करें
=======
3. िष्कर्षण आउटपुट प्ररूप पर देने ले परक्षण अपडेट करें
>>>>>>> 82edf2d (New md files from RunPod)
## खुले प्रश्न
फिलहाल कोई नहीं।
## संदर्भ
वर्तमान कार्यान्वयन: `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`)