AI ऑर्केस्ट्रेट करने के लिए सब कुछ जो चाहिए
EDDI AI एजेंट्स बनाने, डिप्लॉय करने और प्रबंधित करने के लिए एक पूर्ण, प्रोडक्शन-तैयार प्लेटफ़ॉर्म प्रदान करता है, बिना बॉइलरप्लेट लिखे।

बातचीत का एक टर्न कैसे आगे बढ़ता है
किसी चरण को चुनें और देखें कि वह क्या करता है, उसका कॉन्फ़िग क्या है और वह क्या लिखता है।
Input
यहाँ क्या होता है
चैट, Slack, API या किसी MCP क्लाइंट से संदेश आता है। मूल टेक्स्ट Conversation memory में नए स्टेप की पहली एंट्री बन जाता है। अभी कोई task नहीं चला है, इसलिए यह चरण ऑडिट एंट्री के बजाय मेमोरी स्टेप दिखाता है।
समझाने के लिए उदाहरण मान
{
"key": "input",
"value": "What is the weather?"
}Parser
यहाँ क्या होता है
parser टेक्स्ट को सामान्य रूप देता है और एजेंट की डिक्शनरी में खोजकर शब्दों और वाक्यांशों को trigger(current_weather) जैसे अर्थपूर्ण एक्सप्रेशन में बदलता है। यह मॉडल कॉल नहीं, लुकअप है, इसलिए एक ही टेक्स्ट से हमेशा वही एक्सप्रेशन मिलते हैं।
पाइपलाइन का हर task एक एंट्री लिखता है: HMAC से हस्ताक्षरित, केवल जोड़ने योग्य और अनुक्रम-जाँच के साथ।
समझाने के लिए उदाहरण मान
{
"words": [
{
"word": "weather",
"expressions": "trigger(current_weather)",
"frequency": 0
}
],
"phrases": [
{
"phrase": "what is the weather",
"expressions": "trigger(current_weather)"
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.parser",
"taskType": "expressions",
"taskIndex": 0,
"durationMs": 3,
"input": {
"input": "What is the weather?"
},
"output": {
"expressions": [
"trigger(current_weather)"
]
},
"actions": [],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 0
}Behavior Rules
यहाँ क्या होता है
Behavior Rules एक्सप्रेशन और Conversation memory पर लगाई गई IF-THEN शर्तें हैं। हर मिलता हुआ नियम एक्शन जारी करता है। रूटिंग कोड नहीं, कॉन्फ़िगरेशन है, इसलिए एक ही इनपुट हर बार वही रास्ता लेता है।
पाइपलाइन का हर task एक एंट्री लिखता है: HMAC से हस्ताक्षरित, केवल जोड़ने योग्य और अनुक्रम-जाँच के साथ।
समझाने के लिए उदाहरण मान
{
"behaviorGroups": [
{
"name": "",
"behaviorRules": [
{
"name": "Ask for City",
"actions": [
"ask_for_city"
],
"conditions": [
{
"type": "inputmatcher",
"configs": {
"expressions": "trigger(current_weather)"
},
"conditions": []
}
]
}
]
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.behavior",
"taskType": "behavior_rules",
"taskIndex": 1,
"durationMs": 1,
"input": {
"expressions": [
"trigger(current_weather)"
]
},
"output": {
"behavior_rules:success": [
"Ask for City"
]
},
"actions": [
"ask_for_city"
],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 1
}Tasks
यहाँ क्या होता है
task एक्शन सुनते हैं: LLM कॉल, HTTP कॉल, MCP टूल या नॉलेज बेस लुकअप। हर task एक हस्ताक्षरित ऑडिट एंट्री लिखता है, जिसमें उसने क्या पढ़ा, क्या बनाया और मॉडल व टूल का विवरण होता है।
पाइपलाइन का हर task एक एंट्री लिखता है: HMAC से हस्ताक्षरित, केवल जोड़ने योग्य और अनुक्रम-जाँच के साथ।
समझाने के लिए उदाहरण मान
{
"tasks": [
{
"actions": [
"send_message"
],
"id": "simpleChat",
"type": "anthropic",
"description": "Answers weather questions",
"parameters": {
"apiKey": "${vault:anthropic-key}",
"modelName": "claude-sonnet-5-5",
"systemMessage": "You are a helpful assistant",
"addToOutput": "true"
}
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.llm",
"taskType": "langchain",
"taskIndex": 2,
"durationMs": 1840,
"input": {
"input": "What is the weather in Vienna?",
"actions": [
"send_message"
]
},
"output": {
"text": "Vienna: 14 °C, light rain."
},
"llmDetail": {
"modelName": "claude-sonnet-5-5",
"inputTokens": 412,
"outputTokens": 18
},
"toolCalls": {
"name": "get_weather",
"args": {
"city": "Vienna"
},
"result": "14 °C, light rain"
},
"actions": [
"send_message"
],
"cost": 0.0016,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 2
}Output
यहाँ क्या होता है
Output टेम्पलेट जारी किए गए एक्शन को उत्तर में बदलते हैं: टेक्स्ट और क्विक रिप्लाई। उत्तर मेमोरी में सहेजा जाता है और उसी चैनल को लौटाया जाता है जहाँ से संदेश आया था।
समझाने के लिए उदाहरण मान
{
"outputSet": [
{
"action": "ask_for_city",
"timesOccurred": 0,
"outputs": [
{
"valueAlternatives": [
{
"type": "text",
"text": "Which city would you like to know the weather of?"
}
]
}
],
"quickReplies": []
}
]
}{
"key": "output",
"value": [
"Which city would you like to know the weather of?"
]
}Tool boundary
यहाँ क्या होता है
हर टूल कॉल, चाहे उसका स्रोत कुछ भी हो, उसी सीमा से गुज़रता है। toolApprovals पैटर्न से मेल खाने वाले कॉल तब तक रुके रहते हैं जब तक कोई इंसान निर्णय न ले, और वह निर्णय ledger में hitl.approval एंट्री के रूप में लिखा जाता है। क्रेडेंशियल vault से ${vault:keyName} रेफ़रेंस के रूप में आते हैं।
पाइपलाइन का हर task एक एंट्री लिखता है: HMAC से हस्ताक्षरित, केवल जोड़ने योग्य और अनुक्रम-जाँच के साथ।
समझाने के लिए उदाहरण मान
{
"hitlConfig": {
"toolApprovals": {
"requireApproval": [
"mcp:*",
"delete_*",
"transfer_funds"
],
"exempt": [
"mcp:read_*"
],
"approvalTimeout": "PT30M",
"timeoutPolicy": "AUTO_REJECT",
"pauseReason": "Approval required for {toolNames}"
}
}
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": -1,
"taskId": "hitl.approval",
"taskType": "hitl",
"taskIndex": -1,
"durationMs": 0,
"input": {},
"output": {
"verdict": "APPROVED",
"decidedBy": "slack:U04EXAMPLE",
"automated": false,
"pauseType": "TOOL_CALL",
"toolDecisions": [
{
"callId": "call_01",
"toolName": "transfer_funds",
"verdict": "APPROVED",
"amended": false,
"argsDigest": "sha256:9c1d…e407"
}
]
},
"actions": [],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 3
}Conversation memory
यहाँ क्या होता है
Conversation memory हर स्टेप (input, expressions, actions, output) और स्टेप, बातचीत या उपयोगकर्ता (longTerm) स्कोप वाली प्रॉपर्टी रखती है। बातचीत की स्थिति (READY, IN_PROGRESS, ENDED, AWAITING_HUMAN या ERROR) भी साथ में सहेजी जाती है।
समझाने के लिए उदाहरण मान
{
"conversationState": "READY",
"conversationSteps": [
{
"data": [
{
"key": "input",
"value": "What is the weather?"
},
{
"key": "expressions",
"value": [
"trigger(current_weather)"
]
},
{
"key": "actions",
"value": [
"ask_for_city"
]
},
{
"key": "output",
"value": [
"Which city would you like to know the weather of?"
]
}
]
}
],
"conversationProperties": {
"chosenCity": "Vienna"
}
}कोर प्लेटफ़ॉर्म
आवश्यक क्षमताएँ जो EDDI को पूर्ण AI ऑर्केस्ट्रेशन प्लेटफ़ॉर्म बनाती हैं।
🖥️ EDDI मैनेजर
एजेंट्स को विज़ुअली बनाने, डिप्लॉय करने और मॉनिटर करने के लिए प्रोडक्शन-तैयार React UI।
⚙️ Config-as-Code
एजेंट लॉजिक JSON कॉन्फ़िगरेशन है, कंपाइल्ड कोड नहीं। पुनः कंपाइलेशन की आवश्यकता नहीं।
🔌 MCP सर्वर (89 टूल्स)
Model Context Protocol के माध्यम से पूर्ण AI-नेटिव कंट्रोल।
🔐 सुरक्षा पहले
कोई eval() नहीं, Vault इंटीग्रेशन, पाथ ट्रैवर्सल सुरक्षा, OIDC/Keycloak, प्रति-उपयोगकर्ता वर्कस्पेस, क्रिप्टोग्राफ़िक ऑडिट ट्रेल्स।
✋ ह्यूमन-इन-द-लूप
टर्न रोकें, टूल कॉल पर मंज़ूरी लगाएँ, या फ़ेज़ स्वीकृति अनिवार्य करें। अप्रूवल वर्कफ़्लो के साथ टाइमआउट नीतियाँ, Slack कार्ड और क्रैश-सेफ़ स्टेट।
🚀 प्रदर्शन
Quarkus पर Java 25 वर्चुअल थ्रेड्स, I/O-बाउंड LLM वर्कलोड के लिए लाखों लाइटवेट थ्रेड्स।
🤖 मल्टी-एजेंट
इंटेंट-आधारित डिस्कवरी, प्रबंधित वार्तालाप और ग्रुप सहयोग: वोटिंग, साझा आर्टिफ़ैक्ट्स और सदस्य के रूप में शामिल मनुष्य।
AI क्षमताएँ
उन्नत AI सुविधाएँ जो EDDI एजेंटों को अधिक स्मार्ट, तेज़ और लागत-कुशल बनाती हैं।
🧠 मेमोरी और संदर्भ
स्थायी मेमोरी, ड्रीम समेकन, रोलिंग सारांश और टोकन-जागरूक विंडोइंग। याद रखने वाले एजेंट।
📚 नॉलेज और RAG
किसी वेबसाइट को क्रॉल करें या PDF, Word, Excel और PowerPoint फ़ाइलें एक नॉलेज बेस में अपलोड करें, जो शेड्यूल पर रीफ़्रेश होता है। 8 एम्बेडिंग प्रदाता, 6 वेक्टर स्टोर। एंटरप्राइज़ ज्ञान पुनर्प्राप्ति बॉक्स से बाहर।
📈 मॉडल कैस्केडिंग
विश्वास रणनीतियों के साथ लागत-अनुकूलित मल्टी-मॉडल रूटिंग। इस पैटर्न के प्रकाशित डिप्लॉयमेंट समान गुणवत्ता पर 31 से 58% कम इन्फ़रेंस लागत दर्ज करते हैं (प्रमाण)।
🧭 19 LLM प्रदाता
Claude, GPT, Gemini, Grok, DeepSeek, Kimi, Qwen, GLM, Mistral, Llama और अन्य, होस्टेड या लोकल। मॉडल कैटलॉग दिखाता है कि हर मॉडल किसमें अच्छा है और उसे कैसे चलाएं।
⏰ शेड्यूलिंग और हार्टबीट
क्रॉन ट्रिगर, हार्टबीट वेकअप, ड्रीम साइकिल। स्वतंत्र रूप से कार्य करने वाले सक्रिय एजेंट।
अंतर्निहित एजेंट उपकरण
EDDI में 12 तैयार-उपयोग उपकरण शामिल हैं जिन्हें एजेंट बातचीत के दौरान कॉल कर सकते हैं, कोई बाहरी सेटअप आवश्यक नहीं।
कॉन्फ़िग और पोर्टेबिलिटी
एजेंट कॉन्फ़िगरेशन पोर्टेबल, कम्पोज़ेबल और सिंक-रेडी हैं, बिना किसी बाधा के एजेंटों को पर्यावरणों के बीच स्थानांतरित करें।
📤 Import / Export
एजेंट ZIP फ़ाइलों के रूप में पोर्टेबल, स्वचालित सीक्रेट सफाई के साथ। आयात मर्ज या ओवरराइट करता है, कोई वर्शन संघर्ष नहीं।
🔄 Agent Sync
संरचनात्मक मिलान, सामग्री diff, और चयनात्मक संसाधन चयन के साथ लाइव इंस्टेंस-से-इंस्टेंस सिंक।
📝 Prompt Snippets
पुन: प्रयोज्य, संस्करणित सिस्टम प्रॉम्प्ट बिल्डिंग ब्लॉक। {{snippets.safety_rules}} के रूप में संदर्भ।
इंजीनियरिंग उत्कृष्टता
📊 ऑब्ज़र्वेबिलिटी
हर पाइपलाइन स्टेप अपरिवर्तनीय ऑडिट ट्रेल्स में लॉग।
🧪 कोड गुणवत्ता
20,000+ टेस्ट, हर मर्ज पर हरे। >90% इंस्ट्रक्शन और >80% ब्रांच कवरेज अनिवार्य। CI में CodeQL, Checkstyle और फ़ॉर्मैटर गेट।
🧩 AI-तैयार
89 MCP टूल्स, एक OpenAI-संगत API, अनुमानित CRUD पैटर्न, सेल्फ-डॉक्यूमेंटिंग APIs। कोडिंग एजेंट्स के साथ काम करने के लिए बनाया गया।