GuidesOneMux

OpenAI-संगत API और JSON Schema वैलिडेशन के साथ n8n में मानव अनुमोदन वर्कफ़्लो

ऐसा n8n वर्कफ़्लो बनाएं जो OpenAI-संगत API से संरचित डेटा निकाले, JSON Schema के आधार पर परिणाम को वैलिडेट करे और किसी संवेदनशील टूल के चलने से पहले मानव अनुमोदन ले।

इस पृष्ठ पर

फैसला: सिर्फ़ एक्सट्रैक्शन नहीं, कार्रवाई को मंज़ूरी दें

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

इसलिए एक मज़बूत n8n डिज़ाइन में तीन नियंत्रण चरण होते हैं:

  1. एक्सट्रैक्शन: OpenAI-संगत API संरचित डेटा लौटाता है।
  2. वैलिडेशन: n8n जांचता है कि डेटा JSON Schema के अनुरूप है या नहीं।
  3. अनुमोदन: n8n AI Agent किसी महत्वपूर्ण कार्रवाई वाले टूल को व्यक्ति की मंज़ूरी के बाद ही कॉल कर सकता है।

इससे गलत संरचना वाला डेटा समीक्षक तक नहीं पहुंचता और स्वीकृत कार्रवाई मॉडल के आउटपुट से अलग रहती है।

OneMux एक OpenAI-संगत API के माध्यम से प्रमुख AI मॉडल तक पहुंच देता है। यदि endpoint और चुने गए मॉडल के दस्तावेज़ आपके n8n कॉन्फ़िगरेशन के लिए ज़रूरी अनुरोध फ़ॉर्मैट और पैरामीटर का समर्थन बताते हैं, तो आप इसे मॉडल एक्सेस के माध्यम के रूप में इस्तेमाल कर सकते हैं। यहां OneMux और n8n के इंटीग्रेशन को टेस्ट किए जाने का दावा नहीं किया गया है।

ज़रूरी चीज़ें

आपको चाहिए:

  • एक n8n instance, जिसमें HTTP Request, Code और जहां लागू हो, AI Agent nodes की पहुंच हो।
  • आपके n8n सेटअप में समर्थित कोई अनुमोदन चैनल, जैसे n8n Chat, Slack, Telegram, ईमेल या दस्तावेज़ में बताया गया कोई अन्य चैनल।
  • OpenAI-संगत API की पहुंच। OneMux इस्तेमाल करने पर OneMux quickstart से शुरुआत करें और OneMux documentation में मौजूदा endpoint, authentication method, model identifiers और समर्थित अनुरोध पैरामीटर की पुष्टि करें।
  • उस ऑब्जेक्ट का वर्णन करने वाला JSON Schema जिसे आप निकालना चाहते हैं।
  • कोई गंतव्य टूल, जैसे CRM अपडेट या संदेश भेजने की कार्रवाई, जो मानव समीक्षा के बिना नहीं चलना चाहिए।

यह न मानें कि हर OpenAI-संगत endpoint संरचित आउटपुट की हर सुविधा का समर्थन करता है। response_format, JSON Schema, tool calls और अपने चुने हुए मॉडल के लिए समर्थन की जांच करें। उपलब्ध मॉडल विकल्प देखने में OneMux models directory मदद कर सकती है, लेकिन केवल इससे किसी खास n8n node कॉन्फ़िगरेशन का समर्थन साबित नहीं होता।

सुझाया गया n8n वर्कफ़्लो

एक व्यावहारिक वर्कफ़्लो में ये nodes इस्तेमाल हो सकते हैं:

  1. Webhook या कोई अन्य trigger स्रोत टेक्स्ट प्राप्त करता है।
  2. HTTP Request टेक्स्ट को संगत मॉडल endpoint पर भेजता है।
  3. Code लौटाए गए ऑब्जेक्ट को पार्स और वैलिडेट करता है।
  4. IF अमान्य परिणामों को एरर या मैन्युअल सुधार वाले पथ पर भेजता है।
  5. AI Agent वैलिडेट किया गया ऑब्जेक्ट प्राप्त करता है और उसके पास किसी महत्वपूर्ण कार्रवाई वाले टूल की पहुंच होती है।
  6. Human review उस टूल के चलने से पहले वर्कफ़्लो रोकता है।
  7. Approved tool रिकॉर्ड लिखता है या संदेश भेजता है।

एक्सट्रैक्शन अनुरोध में केवल वही फ़ील्ड मांगें जिनकी आपके वर्कफ़्लो को ज़रूरत है। सपोर्ट अनुरोध के लिए एक संक्षिप्त उदाहरण schema कुछ इस तरह हो सकता है:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "additionalProperties": false,
  "required": ["category", "priority", "summary", "customer_email"],
  "properties": {
    "category": {
      "type": "string",
      "enum": ["billing", "technical", "account", "other"]
    },
    "priority": {
      "type": "string",
      "enum": ["low", "normal", "high", "urgent"]
    },
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "customer_email": {
      "type": "string",
      "format": "email"
    }
  }
}

OpenAI-संगत अनुरोध कॉन्फ़िगर करें

HTTP Request node में provider के दस्तावेज़ से base URL और authentication निर्देश इस्तेमाल करें। किसी provider-विशिष्ट URL को hard-code न करें, जब तक आपने अपने अकाउंट और क्षेत्र के लिए उसकी पुष्टि न कर ली हो।

नीचे दिया गया अनुरोध का प्रारूप केवल उदाहरण है। response_format और उसकी JSON Schema संरचना स्वीकार होगी या नहीं, यह आपके चुने हुए endpoint, मॉडल और n8n कॉन्फ़िगरेशन पर निर्भर करता है।

{
  "model": "YOUR_DOCUMENTED_MODEL_ID",
  "messages": [
    {
      "role": "system",
      "content": "Extract the requested fields. Do not guess missing values. Return only an object matching the supplied schema."
    },
    {
      "role": "user",
      "content": "{{$json.source_text}}"
    }
  ],
  "temperature": 0,
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "support_request",
      "strict": true,
      "schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["category", "priority", "summary", "customer_email"],
        "properties": {
          "category": {"type": "string"},
          "priority": {"type": "string"},
          "summary": {"type": "string"},
          "customer_email": {"type": "string"}
        }
      }
    }
  }
}

इस उदाहरण में जानबूझकर एक placeholder model ID इस्तेमाल की गई है। ऐसा मॉडल चुनें जिसके दस्तावेज़ में आपके चुने हुए endpoint के साथ उसकी संगतता बताई गई हो। यदि सख्त JSON Schema आउटपुट उपलब्ध नहीं है, तो समर्थित JSON mode का उपयोग केवल तभी करें जब आपका वैलिडेशन पथ नियमों के अनुरूप न होने वाले जवाबों को सुरक्षित रूप से अस्वीकार कर सके। अकेला JSON mode, schema वैलिडेशन के बराबर नहीं है।

कार्रवाई से पहले जवाब वैलिडेट करें

Provider के जवाब में जनरेट किया गया कंटेंट अलग-अलग फ़ील्ड में हो सकता है। पार्सर लिखने से पहले n8n में एक वास्तविक जवाब जांचें। नीचे दिया गया Code node मानता है कि मॉडल ने message.content में JSON string लौटाई है; आपको वास्तव में जो जवाब मिले, उसके अनुसार पथ बदलें।

const raw = $json.choices?.[0]?.message?.content;

if (typeof raw !== 'string') {
  throw new Error('Model response did not contain message.content as a string');
}

let extracted;
try {
  extracted = JSON.parse(raw);
} catch (error) {
  throw new Error('Model returned invalid JSON');
}

const required = ['category', 'priority', 'summary', 'customer_email'];
const missing = required.filter((key) => extracted[key] === undefined || extracted[key] === '');

const validCategory = ['billing', 'technical', 'account', 'other'].includes(extracted.category);
const validPriority = ['low', 'normal', 'high', 'urgent'].includes(extracted.priority);
const validEmail = typeof extracted.customer_email === 'string' &&
  /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(extracted.customer_email);

if (missing.length || !validCategory || !validPriority || !validEmail) {
  throw new Error('Extracted object failed application validation');
}

return [{ json: { extracted } }];

प्रोडक्शन उपयोग के लिए, जहां आपकी n8n deployment अनुमति दे, इस हल्की जांच की जगह नियमित रूप से मेंटेन किया जाने वाला JSON Schema validator लगाएं। अनुरोध में मौजूद schema और वैलिडेशन में लागू schema के वर्शन साथ-साथ प्रबंधित होने चाहिए। यदि आगे के सिस्टम को संशोधनों में अंतर करना हो, तो आउटपुट में schema version जोड़ें।

AI Agent टूल में मानव अनुमोदन जोड़ें

वैलिडेट किए गए ऑब्जेक्ट को AI Agent के लिए संदर्भ के रूप में इस्तेमाल करें। Agent को डेटाबेस की व्यापक पहुंच देने के बजाय CreateSupportTicket जैसा सीमित और स्पष्ट काम वाला टूल दें। AI Agent के Tools Panel में उस चुने हुए टूल के लिए मानव समीक्षा कॉन्फ़िगर करें।

n8n documentation के अनुसार, जब कोई Agent ऐसे टूल को चलाने की कोशिश करता है जिसके लिए समीक्षा ज़रूरी है, तो वर्कफ़्लो रुक जाता है। समीक्षक कॉल को मंज़ूरी दे सकता है, जिससे टूल प्रस्तावित इनपुट के साथ चलता है; या उसे अस्वीकार कर सकता है, जिससे कार्रवाई रद्द हो जाती है। n8n कई अनुमोदन चैनलों का समर्थन करता है, जिनमें उसका बिल्ट-इन चैट इंटरफ़ेस और Slack, Telegram, Discord, Teams, ईमेल, WhatsApp, Google Chat और Outlook email जैसे इंटीग्रेशन शामिल हैं। मौजूदा सेटअप चरणों और चैनल की जानकारी के लिए आधिकारिक n8n human-in-the-loop documentation देखें।

एक उपयोगी अनुमोदन संदेश में प्रस्तावित कार्रवाई और पैरामीटर साफ़ दिखने चाहिए:

The AI wants to use {{ $tool.name }} with the following parameters:
{{ JSON.stringify($tool.parameters, null, 2) }}

स्रोत दस्तावेज़ इस समीक्षा संदर्भ के लिए $tool.name और $tool.parameters को निर्दिष्ट करता है। संदेश को पढ़ने में आसान रखें और जब समीक्षकों को अतिरिक्त संदर्भ चाहिए हो, तो मूल अनुरोध या टिकट का संदर्भ शामिल करें।

आपके Agent के system prompt में समीक्षा से जुड़े व्यवहार को भी समझाया जाना चाहिए:

The CreateSupportTicket tool requires human approval. If approval is denied, do not retry automatically. Tell the user that the action was not completed and explain what information or correction is needed.

सीमाएं और समस्या निवारण

मॉडल Markdown या अतिरिक्त टेक्स्ट लौटाता है

जांचें कि endpoint आपके भेजे हुए संरचित आउटपुट पैरामीटर का समर्थन करता है या नहीं। यदि नहीं, तो असमर्थित पैरामीटर हटाएं, निर्देश को अधिक स्पष्ट और सीमित बनाएं और Code-node वैलिडेशन को अनिवार्य जांच के रूप में रखें। बिना वैलिडेट किया गया ऑब्जेक्ट कभी भी लिखने वाले टूल को न भेजें।

n8n को अपेक्षित जवाब वाला फ़ील्ड नहीं मिलता

HTTP Request का आउटपुट जांचें और पार्सर अपडेट करें। OpenAI-संगत APIs में अनुरोध के तौर-तरीके समान हो सकते हैं, जबकि जवाब के विवरण और समर्थित पैरामीटर अलग हो सकते हैं।

अनुमोदन अनुरोध बहुत अस्पष्ट है

सीमित काम वाला टूल इस्तेमाल करें और अनुमोदन संदेश में $tool.name के साथ $tool.parameters शामिल करें। समीक्षक से “इस अनुरोध को प्रोसेस करें” जैसे अस्पष्ट निर्देश को मंज़ूरी देने के लिए न कहें।

अस्वीकृत टूल कॉल से लूप बन जाता है

Agent के system prompt में अस्वीकृति के बाद का व्यवहार स्पष्ट रूप से जोड़ें और वर्कफ़्लो को इस तरह कॉन्फ़िगर करें कि अस्वीकृति पर कार्रवाई का पथ समाप्त हो जाए या स्पष्टीकरण के लिए आगे बढ़े। n8n documentation में यह समझाने की सलाह दी गई है कि किन टूल को अनुमोदन चाहिए और अस्वीकृति पर Agent को कैसे जवाब देना चाहिए।

समीक्षक गलत डेटा को मंज़ूरी दे देते हैं

Schema के अनुसार वैध होने का मतलब यह नहीं है कि डेटा अर्थ की दृष्टि से भी सही है। स्रोत का अंश, निकाले गए फ़ील्ड और प्रस्तावित कार्रवाई एक साथ दिखाएं। अधिक प्रभाव वाले वर्कफ़्लो में समीक्षक से संवेदनशील फ़ील्ड की स्वतंत्र रूप से पुष्टि करवाएं।

निष्कर्ष

संरचित एक्सट्रैक्शन के लिए सबसे सुरक्षित n8n पैटर्न “मॉडल को सीधे लिखने दें” नहीं है। डेटा को तय संरचना वाले ऑब्जेक्ट में निकालें, उसे वैलिडेट करें और फिर बाहरी दुनिया में बदलाव करने वाले टूल से पहले मानव अनुमोदन रखें। OpenAI-संगत API मॉडल तक पहुंच आसान बना सकता है, जबकि n8n ऑर्केस्ट्रेशन और अनुमोदन नियंत्रण देता है। OneMux के साथ, दस्तावेज़ में बताए गए संगत endpoint और मॉडल पैरामीटर इस्तेमाल करें, अपने वातावरण में कॉन्फ़िगरेशन की जांच करें और असमर्थित संरचित आउटपुट सुविधाओं को प्रक्रिया रोकने या अलग से वैलिडेट किए जाने वाले जवाब के पथ पर जाने की वजह मानें।

सामान्य प्रश्न

क्या n8n, OneMux को OpenAI-संगत API के रूप में इस्तेमाल कर सकता है?

संभव है, यदि OneMux endpoint और चुना गया मॉडल आपके n8n कॉन्फ़िगरेशन के लिए ज़रूरी अनुरोध फ़ॉर्मैट और पैरामीटर का समर्थन करते हैं। इस लेख में OneMux के साथ n8n इंटीग्रेशन को टेस्ट किए जाने का दावा नहीं किया गया है। OneMux documentation में मौजूदा endpoint, authentication method, model ID और संरचित आउटपुट के समर्थन की पुष्टि करें।

मानव अनुमोदन JSON Schema वैलिडेशन से पहले होना चाहिए या बाद में?

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

क्या JSON mode गारंटी देता है कि जवाब मेरे schema से मेल खाएगा?

नहीं। JSON mode आम तौर पर JSON फ़ॉर्मैटिंग से संबंधित होता है, हर property, type, enum या required-field constraint से नहीं। जहां उपलब्ध हो, समर्थित JSON Schema response format इस्तेमाल करें और किसी महत्वपूर्ण कार्रवाई वाले टूल को कॉल करने से पहले n8n में उसी schema को स्वतंत्र रूप से लागू करें।

किन n8n टूल के लिए मानव अनुमोदन ज़रूरी होना चाहिए?

उन टूल को प्राथमिकता दें जो बाहरी संचार भेजते हैं, रिकॉर्ड बदलते हैं, डेटा हटाते हैं, खरीदारी करते हैं या ऐसी अन्य कार्रवाइयां शुरू करते हैं जिन्हें पलटना संभव नहीं है या जिनका मूल्य अधिक है। आपके जोखिम और अनुपालन की ज़रूरतों के आधार पर, केवल-पढ़ने वाले टूल को उसी स्तर की समीक्षा की ज़रूरत नहीं भी हो सकती।

जब समीक्षक n8n टूल कॉल अस्वीकार करता है, तो क्या होता है?

n8n documentation के अनुसार, कार्रवाई रद्द कर दी जाती है और AI को अस्वीकृति की सूचना दी जाती है। आपके Agent prompt में उसे अपने आप दोबारा कोशिश न करने और उपयोगकर्ता को सूचित करने, कोई विकल्प सुझाने या स्पष्टीकरण मांगने का निर्देश होना चाहिए।

संबंधित लेख

Guides

मानवीय मंज़ूरी और टेस्ट सत्यापन के साथ n8n में कोड बदलाव का वर्कफ़्लो बनाएं

ऐसा n8n वर्कफ़्लो डिज़ाइन करें जो रिपॉज़िटरी में बदलाव का प्रस्ताव दे, लिखने से पहले किसी व्यक्ति की मंज़ूरी मांगे और बने हुए commit को टेस्ट से सत्यापित करे।

Guides

Human Approval और OpenAI-Compatible API के साथ n8n Document Q&A Workflow बनाएं

OneMux के माध्यम से source attribution, चुनिंदा human approval और conditionally compatible OpenAI-style model endpoint के साथ document question answering के लिए एक व्यावहारिक n8n design।

Guides

विश्वसनीय JSON निष्कर्षण के लिए GPT 6.1 Terra लागत और संदर्भ गाइड

OneMux के माध्यम से JSON Schema validation के साथ structured extraction के लिए GPT 6.1 Terra workload की लागत का अनुमान लगाना और context, retries तथा output tokens को सीमित करना सीखें।

Guides

Tool Calling, मानव अनुमोदन और Execution Limits के साथ LangGraph Customer Support Agent बनाएं

Customer-support triage के लिए एक व्यावहारिक LangGraph pattern: अनुरोधों को route करें, lookup tools कॉल करें, human approval के लिए refunds रोकें और graph execution को सीमित करें।