Langchain.js मधील ToolCallingAgentOutputParser त्रुटी समजून घेणे आणि त्यांचे निराकरण करणे
Langchain.js v2 सह काम करताना, डेव्हलपर सहसा सानुकूल साधने आणि ओलामा सारखी भाषा मॉडेल वापरून कार्यक्षम एजंट तयार करण्याचे उद्दिष्ट ठेवतात. तथापि, हे घटक एकत्रित केल्याने कधीकधी त्रुटी येऊ शकतात ज्या डीबग करणे कठीण आहे.
अशी एक त्रुटी म्हणजे "ToolCallingAgentOutputParser वरील parseResult फक्त ChatGeneration आउटपुटवर कार्य करते," जी एजंट फ्रेमवर्कमध्ये कस्टम टूल तयार करताना येऊ शकते. एजंट आणि साधन योग्यरित्या कार्य करते याची खात्री करण्यासाठी या समस्येचे मूळ कारण समजून घेणे महत्वाचे आहे.
हा लेख एका सानुकूल साधनाची साधी अंमलबजावणी एक्सप्लोर करतो जे Langchain चे createToolCallingAgent आणि Ollama मॉडेल वापरून एका नंबर इनपुटमध्ये 2 जोडते. त्रुटी आणि त्याच्या संदर्भाचे विश्लेषण करून, आम्ही त्याचे निराकरण कसे करावे हे अधिक चांगल्या प्रकारे समजू शकतो.
खालील विभाग तुम्हाला कोडद्वारे मार्गदर्शन करतील, त्रुटी समजावून सांगतील आणि या समस्येचे निराकरण करण्यासाठी उपाय प्रदान करतील. तुम्ही Langchain.js वर नवीन असाल किंवा अनुभवी असाल, हे मार्गदर्शक तुम्हाला ही समस्या प्रभावीपणे सोडण्यात मदत करेल.
आज्ञा | वापराचे उदाहरण |
---|---|
tool() | Langchain.js चे हे फंक्शन एक सानुकूल साधन परिभाषित करते जे ऑपरेशन करते. या लेखात, हे एक साधन तयार करण्यासाठी वापरले जाते जे इनपुट नंबरमध्ये 2 जोडते, तर्काला सहजपणे कॉल करण्यायोग्य स्ट्रक्चरमध्ये गुंडाळते. |
z.object() | Zod लायब्ररीचा एक भाग, Langchain मध्ये स्कीमा प्रमाणीकरणासाठी वापरला जातो. हे सुनिश्चित करते की सानुकूल साधनातील इनपुट ही संख्या आहे, अंमलबजावणी दरम्यान त्रुटी टाळण्यासाठी मजबूत इनपुट प्रमाणीकरण प्रदान करते. |
createToolCallingAgent() | ही आज्ञा एक एजंट तयार करते जो वापरकर्त्याच्या प्रश्नांना प्रतिसाद म्हणून परिभाषित साधनांना कॉल करू शकतो. ओलामा सारख्या भाषेच्या मॉडेल्ससह साधने एकत्रित करणे महत्त्वाचे आहे, ज्यामुळे संभाषणादरम्यान साधनांचा वापर करणे शक्य होईल. |
ChatPromptTemplate.fromMessages() | प्लेसहोल्डर्ससह चॅट प्रॉम्प्ट टेम्पलेट व्युत्पन्न करण्यासाठी वापरले जाते. हे टेम्पलेट विविध प्रकारचे संदेश (सिस्टम, मानव, प्लेसहोल्डर्स) एजंटला वापरण्यासाठी व्यवस्थापित करते, त्याचा संभाषण प्रवाह सुधारतो. |
MessagesPlaceholder | चॅट इतिहास किंवा एजंट स्क्रॅचपॅड सारख्या डायनॅमिक सामग्रीसाठी प्रॉम्प्ट टेम्पलेटमध्ये प्लेसहोल्डर म्हणून कार्य करते. हे अंमलबजावणी दरम्यान संभाषण संदर्भ डायनॅमिकपणे इंजेक्ट करण्यास अनुमती देते. |
AgentExecutor() | हा वर्ग एजंट आणि साधनांच्या अंमलबजावणीचे व्यवस्थापन करतो. उदाहरणामध्ये, हे एजंटद्वारे क्वेरी चालविण्यात आणि टूलच्या आउटपुटमधून निकाल गोळा करण्यात मदत करते. |
await agentExecutor.invoke() | एजंटद्वारे क्वेरी चालवण्यासाठी आणि परिणामाची असिंक्रोनसपणे प्रतीक्षा करण्यासाठी वापरले जाते. भाषा मॉडेल्स आणि साधनांशी संवाद साधण्यासाठी हे महत्त्वपूर्ण आहे, कारण हे सुनिश्चित करते की कोड पुढे जाण्यापूर्वी ऑपरेशन पूर्ण होण्याची प्रतीक्षा करत आहे. |
try-catch | ही त्रुटी-हँडलिंग संरचना अवैध इनपुट प्रकार पकडण्यासाठी सानुकूल साधनामध्ये वापरली जाते. अपवाद कॅच करून, हे सुनिश्चित करते की प्रणाली अंमलबजावणीचा प्रवाह खंडित न करता उपयुक्त त्रुटी संदेश परत करते. |
expect() | Chai assertion library मधून, expect() चा वापर युनिट टेस्टमध्ये कस्टम टूलच्या आउटपुटची पडताळणी करण्यासाठी केला जातो. साधन अपेक्षेप्रमाणे कार्य करते की नाही हे तपासण्यासाठी आवश्यक आहे. |
Langchain.js मध्ये कस्टम टूल आणि एजंट एरर हँडलिंग समजून घेणे
दिलेल्या उदाहरणामध्ये, आम्ही Langchain.js v2 सह एक सानुकूल साधन तयार करण्यासाठी काम करत आहोत जे ओलामा भाषा मॉडेल. साधनाचा मुख्य उद्देश एक साधी गणिती क्रिया करणे आहे: इनपुट मूल्यामध्ये 2 जोडणे. Langchain's वापरून टूल तयार केले आहे साधन फंक्शन, जे पुन्हा वापरता येण्याजोगे फंक्शन्स परिभाषित करते जे एजंटद्वारे मागवले जाऊ शकतात. साधन योग्यरितीने कार्य करत आहे याची खात्री करण्यासाठी, इनपुट स्कीमा झोड लायब्ररीसह प्रमाणित केले जाते, इनपुट वैध संख्या असल्याची हमी देते. हे योग्य त्रुटी हाताळणी सुनिश्चित करते आणि अवैध इनपुटमुळे साधन अयशस्वी होण्यापासून प्रतिबंधित करते.
सानुकूल साधन नंतर वापरून एजंट मध्ये समाविष्ट केले आहे ToolCallingAgent तयार करा कार्य हा आदेश एजंटला आवश्यकतेनुसार टूलला कॉल करण्याची परवानगी देतो आणि एजंटला ओलामा मॉडेलद्वारे समर्थित केले जाते, जे प्रतिसादांची सर्जनशीलता नियंत्रित करण्यासाठी तापमानासारख्या विशिष्ट पॅरामीटर्ससह कॉन्फिगर केलेले असते. एजंट आणि साधन यांच्यातील सहज संवाद साधण्यासाठी, चॅट प्रॉम्प्ट टेम्पलेट वापरला जातो. हे टेम्पलेट विविध प्रकारचे संदेश परिभाषित करून संभाषण आयोजित करते, जसे की सिस्टम संदेश, मानवी इनपुट आणि प्लेसहोल्डर. प्लेसहोल्डर, जसे की MessagesPlaceholder, चॅट इतिहासासारख्या घटकांसह संभाषण डायनॅमिक होऊ द्या.
या उदाहरणात संबोधित केलेल्या प्रमुख समस्यांपैकी एक म्हणजे Langchain एजंटच्या आउटपुट पार्सिंगच्या आसपास हाताळण्यात त्रुटी. "ToolCallingAgentOutputParser वरील parseResult फक्त ChatGeneration आउटपुटवर कार्य करते" हा त्रुटी संदेश पार्सरद्वारे अपेक्षित असलेल्या आउटपुटचा प्रकार आणि व्युत्पन्न केलेले वास्तविक आउटपुट यांच्यातील विसंगतीमुळे उद्भवतो. ही त्रुटी हाताळण्यासाठी, सानुकूल साधन मजबूत लॉजिकमध्ये गुंडाळलेले आहे, सर्व इनपुट आणि आउटपुट अपेक्षित स्वरूपनाशी सुसंगत असल्याची खात्री करून. हे पुढे व्यवस्थापित केले जाते AgentExecutor क्लास, जे एजंट आणि टूल्सच्या अंमलबजावणीचे समन्वय साधते, क्वेरी आणि टूल आउटपुट योग्यरित्या सिंक्रोनाइझ केले असल्याची खात्री करून.
शेवटी, स्क्रिप्ट वापरून असिंक्रोनस अंमलबजावणी लागू करतात प्रतीक्षा करा, इतर प्रक्रिया अवरोधित न करता प्रणालीला ऑपरेशन्स हाताळण्याची परवानगी देते. प्रतिसाद अचूक आणि वेळेवर आहे याची खात्री करून एजंट पुढे जाण्यापूर्वी त्याचे परिणाम परत येण्याची वाट पाहतो. याव्यतिरिक्त, उपकरणाच्या कार्यक्षमतेचे प्रमाणीकरण करण्यासाठी युनिट चाचण्या समाविष्ट केल्या जातात, याची खात्री करून की ते सातत्याने योग्य आउटपुट तयार करते. या चाचण्या केवळ टूलच्या गणितीय ऑपरेशनची पुष्टी करत नाहीत तर ते अवैध इनपुट किती चांगल्या प्रकारे हाताळते, सोल्यूशनची एकूण विश्वासार्हता सुधारते हे देखील तपासतात. हे मॉड्यूलर आणि त्रुटी-प्रतिरोधक डिझाइन स्क्रिप्टला Langchain.js मधील विविध अनुप्रयोगांसाठी पुन्हा वापरण्यायोग्य आणि प्रभावी बनवते.
मॉड्यूलर दृष्टिकोनासह Langchain.js त्रुटी दुरुस्त करणे
उपाय 1: Langchain.js आणि Ollama LLM वापरून मॉड्यूलर दृष्टिकोन आणि त्रुटी हाताळणीसह JavaScript
import { tool } from "@langchain/core/tools";
import { z } from "zod";
import { Ollama } from "@langchain/ollama";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { createToolCallingAgent } from "langchain/agents";
import { AgentExecutor } from "langchain/agents";
// Initialize LLM with Ollama
const llm = new Ollama({
model: "llama3",
temperature: 0.7,
});
// Custom tool to add 2 to the input number
const magicTool = tool(
async (input) => {
return input + 2;
},
{
name: "magic_function",
description: "Applies a magic function to an input",
schema: z.object({ input: z.number() }),
};
);
const tools = [magicTool];
// Setup ChatPromptTemplate with placeholders
const prompt = ChatPromptTemplate.fromMessages([
["system", "You are a helpful assistant called iHelp"],
["placeholder", "{chat_history}"],
["human", "{input}"],
["placeholder", "{agent_scratchpad}"],
]);
// Agent configuration
const agent = createToolCallingAgent({ llm, tools, prompt });
// Execute agent query
const agentExecutor = new AgentExecutor({ agent, tools });
const query = "What is the value of magic_function(3)?";
await agentExecutor.invoke({ input: query });
Langchain.js एजंटसाठी सुधारित त्रुटी हाताळणी
उपाय २: Langchain.js मधील सानुकूल टूलचे आउटपुट प्रमाणित करण्यासाठी युनिट चाचण्यांसह हाताळणी करताना त्रुटी
१
Langchain.js आणि Ollama LLM इंटिग्रेशन मधील एजंटची भूमिका एक्सप्लोर करणे
Langchain.js सह काम करताना, एकत्रीकरण एजंट ओलामा सारख्या टूल्स आणि लँग्वेज मॉडेल्ससह डायनॅमिक ॲप्लिकेशन्स तयार करण्याचा एक महत्त्वाचा पैलू आहे. एजंट तुम्हाला एक सानुकूल टूल जोडण्याची परवानगी देतो, जे विशिष्ट कार्ये करते, भाषा मॉडेलशी, जे अधिक संभाषणात्मक किंवा जनरेटिव्ह कार्ये हाताळते. एजंट्स वापरून, डेव्हलपर वर्कफ्लो स्वयंचलित करू शकतात जेथे मॉडेल केवळ प्रतिसाद निर्माण करत नाही तर गणना किंवा डेटा प्रक्रिया करण्यासाठी साधने देखील मागवतात.
या एकत्रीकरणातील मुख्य घटक आहे ToolCallingAgent तयार करा कार्य हे फंक्शन एजंटला आवश्यक असेल तेव्हा विशिष्ट साधने ट्रिगर करू देते, कार्ये अचूक आणि कार्यक्षमतेने पूर्ण झाली आहेत याची खात्री करून. प्राथमिक फोकस सहसा साधन तयार करण्यावर असतो, एजंटचे कार्यप्रवाह कसे व्यवस्थापित करावे आणि पार्सिंग त्रुटी कशा टाळाव्यात हे समजून घेणे देखील तितकेच महत्त्वाचे आहे. "ToolCallingAgentOutputParser वरील parseResult फक्त ChatGeneration आउटपुटवर कार्य करते" सारख्या त्रुटी सहसा एजंटचे आउटपुट पार्सिंग प्रणालीशी सुसंगत नसताना उद्भवतात, जे एजंटचे आउटपुट आणि अपेक्षित स्वरूप यांच्यातील योग्य संरेखनाची आवश्यकता हायलाइट करतात.
प्रॉम्प्ट टेम्प्लेट्सचा वापर, जसे की ChatPromptTemplate, डायनॅमिक संदेश आणि संदर्भ प्लेसहोल्डर्सना अनुमती देऊन परस्परसंवाद अधिक समृद्ध करते. हे एजंटला चॅट इतिहास किंवा एजंटच्या स्क्रॅचपॅडवर आधारित प्रतिसाद समायोजित करण्यास अनुमती देते. प्रॉम्प्ट टेम्पलेट्स ऑप्टिमाइझ करणे आणि एजंटचे आउटपुट योग्यरित्या विश्लेषित केले आहेत याची खात्री केल्याने अनेक सामान्य त्रुटी टाळता येऊ शकतात, ज्यामुळे तुमचे Langchain.js अनुप्रयोग अधिक विश्वासार्ह आणि कार्यक्षम बनतात.
Langchain.js, एजंट आणि टूल्स बद्दल वारंवार विचारले जाणारे प्रश्न
- Langchain.js मध्ये एजंट म्हणजे काय?
- एजंट हा एक घटक आहे जो वापरकर्त्याच्या क्वेरीवर आधारित विशिष्ट कार्ये करण्यासाठी साधने आणि भाषा मॉडेलशी संवाद साधतो. ते वापरते createToolCallingAgent साधने ट्रिगर करण्यासाठी कार्य.
- तुम्ही "ToolCallingAgentOutputParser वरील parseResult" त्रुटीचे निराकरण कसे कराल?
- जेव्हा एजंटचे आउटपुट पार्सरशी विसंगत असते तेव्हा ही त्रुटी येते. पार्सरच्या अपेक्षेशी आउटपुट जुळत असल्याची खात्री करा आणि a वापरा १ आउटपुट स्वरूप.
- चा उद्देश काय आहे AgentExecutor?
- द AgentExecutor तुम्हाला Langchain.js ऍप्लिकेशन्समध्ये जटिल वर्कफ्लो चालविण्यास अनुमती देऊन एजंट आणि त्याची टूल्सची अंमलबजावणी व्यवस्थापित करते.
- कसे करते ChatPromptTemplate काम?
- ChatPromptTemplate संभाषण प्रवाहात चॅट इतिहास आणि एजंट स्क्रॅचपॅड सारख्या डायनॅमिक सामग्रीस अनुमती देऊन, संरचित स्वरूपात चॅट संदेश आयोजित करते.
- का आहे Zod साधन वापरले?
- Zod सानुकूल साधनाचे इनपुट योग्य प्रकारचे आहे याची खात्री करून (उदा. संख्या) इनपुट प्रमाणीकरणासाठी वापरले जाते, ज्यामुळे त्रुटींची शक्यता कमी होते.
Langchain.js मधील त्रुटी हाताळण्यावरील अंतिम विचार
"ToolCallingAgentOutputParser वरील parseResult फक्त ChatGeneration आउटपुटवर कार्य करते" त्रुटी सोडवण्यासाठी तुमच्या एजंटचे आउटपुट आणि त्याच्या पार्सिंग अपेक्षा यांच्यात काळजीपूर्वक संरेखन आवश्यक आहे. योग्य दृष्टिकोनाने, ही त्रुटी टाळता येऊ शकते.
प्रमाणीकरणासाठी Zod सारखी योग्य साधने वापरून आणि एजंट, जसे की ओलामाने बनवलेले, इनपुट आणि आउटपुट योग्यरित्या हाताळतात याची खात्री करून, तुम्ही पार्सिंग समस्यांना सामोरे न जाता Langchain.js मध्ये मजबूत उपाय तयार करू शकता.
Langchain.js एरर रिझोल्यूशनसाठी स्रोत आणि संदर्भ
- अधिकृत Langchain दस्तऐवजावर तपशीलवार माहिती देते, जे साधन निर्मिती आणि एजंट कॉन्फिगरेशनमध्ये अंतर्दृष्टी प्रदान करते. Langchain दस्तऐवजीकरण आत.
- पुढे इनपुट प्रमाणीकरणासाठी Zod चा वापर आणि Langchain.js मध्ये त्याचा वापर स्पष्ट करतो. झोड दस्तऐवजीकरण आत.
- ओलामा भाषेच्या मॉडेलचे आणि सानुकूल एजंट्समध्ये त्याच्या अंमलबजावणीचे वर्णन करते. ओलामा एलएलएम आत.