लैंगचैन.जेएस में टूलकॉलिंगएजेंटऑटपुटपार्सर त्रुटियों को समझना और ठीक करना
लैंगचैन.जेएस वी2 के साथ काम करते समय, डेवलपर्स अक्सर ओलामा जैसे कस्टम टूल और भाषा मॉडल का उपयोग करके कुशल एजेंट बनाने का लक्ष्य रखते हैं। हालाँकि, इन घटकों को एकीकृत करने से कभी-कभी त्रुटियाँ हो सकती हैं जिन्हें डीबग करना मुश्किल होता है।
ऐसी ही एक त्रुटि है "ToolCallingAgentOutputParser पर parseResult केवल ChatGeneration आउटपुट पर काम करता है," जो एजेंट फ्रेमवर्क के भीतर एक कस्टम टूल बनाते समय हो सकता है। एजेंट और टूल सही ढंग से काम करें यह सुनिश्चित करने के लिए इस समस्या के मूल कारण को समझना महत्वपूर्ण है।
यह आलेख एक कस्टम टूल के सरल कार्यान्वयन की पड़ताल करता है जो लैंगचैन के createToolCallingAgent और ओलामा मॉडल का उपयोग करके एक संख्या इनपुट में 2 जोड़ता है। त्रुटि और उसके संदर्भ का विश्लेषण करके, हम बेहतर ढंग से समझ सकते हैं कि इसका निवारण कैसे किया जाए।
निम्नलिखित अनुभाग आपको कोड के माध्यम से मार्गदर्शन करेंगे, त्रुटि की व्याख्या करेंगे और इस समस्या के समाधान के लिए समाधान प्रदान करेंगे। चाहे आप लैंगचैन.जेएस में नए हों या अनुभवी हों, यह मार्गदर्शिका आपको इस समस्या से कुशलतापूर्वक निपटने में मदद करेगी।
आज्ञा | उपयोग का उदाहरण |
---|---|
tool() | लैंगचैन.जेएस का यह फ़ंक्शन एक कस्टम टूल को परिभाषित करता है जो एक ऑपरेशन करता है। इस आलेख में, इसका उपयोग एक उपकरण बनाने के लिए किया जाता है जो एक इनपुट नंबर में 2 जोड़ता है, तर्क को आसानी से कॉल करने योग्य संरचना में लपेटता है। |
z.object() | ज़ॉड लाइब्रेरी का एक हिस्सा, लैंगचैन में स्कीमा सत्यापन के लिए उपयोग किया जाता है। यह सुनिश्चित करता है कि कस्टम टूल में इनपुट एक संख्या है, जो निष्पादन के दौरान त्रुटियों को रोकने के लिए मजबूत इनपुट सत्यापन प्रदान करता है। |
createToolCallingAgent() | यह कमांड एक एजेंट बनाता है जो उपयोगकर्ता के प्रश्नों के जवाब में परिभाषित टूल को कॉल कर सकता है। ओलामा जैसे भाषा मॉडल के साथ टूल को एकीकृत करना महत्वपूर्ण है, जिससे बातचीत के दौरान टूल को लागू करना संभव हो जाता है। |
ChatPromptTemplate.fromMessages() | प्लेसहोल्डर्स के साथ चैट प्रॉम्प्ट टेम्पलेट तैयार करने के लिए उपयोग किया जाता है। यह टेम्प्लेट एजेंट के उपयोग के लिए विभिन्न प्रकार के संदेशों (सिस्टम, मानव, प्लेसहोल्डर) को व्यवस्थित करता है, जिससे इसके वार्तालाप प्रवाह में सुधार होता है। |
MessagesPlaceholder | चैट इतिहास या एजेंट स्क्रैचपैड जैसी गतिशील सामग्री के लिए प्रॉम्प्ट टेम्पलेट में प्लेसहोल्डर के रूप में कार्य करता है। यह निष्पादन के दौरान वार्तालाप संदर्भ को गतिशील रूप से इंजेक्ट करने की अनुमति देता है। |
AgentExecutor() | यह वर्ग एजेंटों और उपकरणों के निष्पादन का प्रबंधन करता है। उदाहरण में, यह एजेंट के माध्यम से क्वेरी चलाने और टूल के आउटपुट से परिणाम एकत्र करने में मदद करता है। |
await agentExecutor.invoke() | एजेंट के माध्यम से क्वेरी चलाने और अतुल्यकालिक रूप से परिणाम की प्रतीक्षा करने के लिए उपयोग किया जाता है। यह भाषा मॉडल और टूल के साथ इंटरैक्ट करने के लिए महत्वपूर्ण है, क्योंकि यह सुनिश्चित करता है कि कोड आगे बढ़ने से पहले ऑपरेशन पूरा होने की प्रतीक्षा करता है। |
try-catch | इस त्रुटि-हैंडलिंग संरचना का उपयोग कस्टम टूल के भीतर अमान्य इनपुट प्रकारों को पकड़ने के लिए किया जाता है। अपवादों को पकड़कर, यह सुनिश्चित करता है कि सिस्टम निष्पादन प्रवाह को तोड़े बिना उपयोगी त्रुटि संदेश लौटाता है। |
expect() | चाय अभिकथन लाइब्रेरी से, कस्टम टूल के आउटपुट को सत्यापित करने के लिए यूनिट परीक्षण में उम्मीद () का उपयोग किया जाता है। यह परीक्षण करने के लिए आवश्यक है कि उपकरण अपेक्षा के अनुरूप कार्य करता है या नहीं। |
लैंगचैन.जेएस में कस्टम टूल और एजेंट एरर हैंडलिंग को समझना
दिए गए उदाहरण में, हम एक कस्टम टूल बनाने के लिए लैंगचैन.जेएस v2 के साथ काम कर रहे हैं जो इसके साथ एकीकृत होता है ओलामा भाषा मॉडल. टूल का मुख्य उद्देश्य एक सरल गणितीय ऑपरेशन करना है: इनपुट मान में 2 जोड़ना। टूल लैंगचैन का उपयोग करके बनाया गया है औजार फ़ंक्शन, जो पुन: प्रयोज्य फ़ंक्शंस को परिभाषित करता है जिन्हें एक एजेंट द्वारा लागू किया जा सकता है। यह सुनिश्चित करने के लिए कि टूल सही ढंग से काम करता है, इनपुट स्कीमा को ज़ॉड लाइब्रेरी के साथ मान्य किया गया है, यह गारंटी देते हुए कि इनपुट एक वैध संख्या है। यह उचित त्रुटि प्रबंधन सुनिश्चित करता है और टूल को अमान्य इनपुट के कारण विफल होने से रोकता है।
फिर कस्टम टूल को इसका उपयोग करके एक एजेंट में शामिल किया जाता है createToolCallingAgent समारोह। यह कमांड एजेंट को जरूरत पड़ने पर टूल को कॉल करने की अनुमति देता है, और एजेंट ओलामा मॉडल द्वारा संचालित होता है, जिसे प्रतिक्रियाओं की रचनात्मकता को नियंत्रित करने के लिए तापमान जैसे विशिष्ट मापदंडों के साथ कॉन्फ़िगर किया गया है। एजेंट और टूल के बीच सहज बातचीत की सुविधा के लिए, चैट प्रॉम्प्ट टेम्पलेट का उपयोग किया जाता है। यह टेम्प्लेट विभिन्न प्रकार के संदेशों, जैसे सिस्टम संदेश, मानव इनपुट और प्लेसहोल्डर को परिभाषित करके बातचीत को व्यवस्थित करता है। प्लेसहोल्डर, जैसे संदेशप्लेसहोल्डर, बातचीत को गतिशील होने दें, जिसमें चैट इतिहास जैसे तत्व शामिल हों।
इस उदाहरण में संबोधित प्रमुख मुद्दों में से एक लैंगचैन एजेंट के आउटपुट पार्सिंग के आसपास त्रुटि प्रबंधन है। त्रुटि संदेश "ToolCallingAgentOutputParser पर parseResult केवल ChatGeneration आउटपुट पर काम करता है" पार्सर द्वारा अपेक्षित आउटपुट के प्रकार और उत्पन्न वास्तविक आउटपुट के बीच एक बेमेल से उत्पन्न होता है। इस त्रुटि को संभालने के लिए, कस्टम टूल को मजबूत तर्क में लपेटा गया है, यह सुनिश्चित करते हुए कि सभी इनपुट और आउटपुट अपेक्षित प्रारूपों के अनुरूप हैं। इसे आगे द्वारा प्रबंधित किया जाता है एजेंटनिष्पादक क्लास, जो एजेंट और टूल के निष्पादन का समन्वय करता है, यह सुनिश्चित करता है कि क्वेरी और टूल आउटपुट ठीक से सिंक्रनाइज़ हैं।
अंत में, स्क्रिप्ट का उपयोग करके अतुल्यकालिक निष्पादन लागू किया जाता है इंतजार, सिस्टम को अन्य प्रक्रियाओं को अवरुद्ध किए बिना संचालन को संभालने की अनुमति देता है। एजेंट आगे बढ़ने से पहले टूल के परिणाम की प्रतीक्षा करता है, यह सुनिश्चित करते हुए कि प्रतिक्रिया सटीक और समय पर है। इसके अतिरिक्त, उपकरण की कार्यक्षमता को मान्य करने के लिए इकाई परीक्षण शामिल किए गए हैं, यह सुनिश्चित करते हुए कि यह लगातार सही आउटपुट उत्पन्न करता है। ये परीक्षण न केवल उपकरण के गणितीय संचालन की पुष्टि करते हैं बल्कि यह भी जांचते हैं कि यह अमान्य इनपुट को कितनी अच्छी तरह संभालता है, जिससे समाधान की समग्र विश्वसनीयता में सुधार होता है। यह मॉड्यूलर और त्रुटि-प्रतिरोधी डिज़ाइन लैंगचैन.जेएस के भीतर विभिन्न अनुप्रयोगों के लिए स्क्रिप्ट को पुन: प्रयोज्य और प्रभावी बनाता है।
मॉड्यूलर दृष्टिकोण के साथ लैंगचैन.जेएस त्रुटि को ठीक करना
समाधान 1: लैंगचेन.जेएस और ओलामा एलएलएम का उपयोग करके मॉड्यूलर दृष्टिकोण और त्रुटि प्रबंधन के साथ जावास्क्रिप्ट
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 });
लैंगचैन.जेएस एजेंट के लिए उन्नत त्रुटि प्रबंधन
समाधान 2: लैंगचैन.जेएस में कस्टम टूल के आउटपुट को मान्य करने के लिए यूनिट परीक्षणों के साथ त्रुटि प्रबंधन
import { tool } from "@langchain/core/tools";
import { z } from "zod";
import { Ollama } from "@langchain/ollama";
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 with added error handling
const magicTool = tool(
async (input) => {
try {
if (typeof input !== "number") throw new Error("Invalid input type!");
return input + 2;
} catch (err) {
return err.message;
}
},
{
name: "magic_function",
description: "Adds 2 to input and handles errors",
schema: z.object({ input: z.number() }),
}
);
const tools = [magicTool];
// Agent and execution
const agent = createToolCallingAgent({ llm, tools });
const agentExecutor = new AgentExecutor({ agent, tools });
const query = "magic_function('abc')"; // Test with invalid input
await agentExecutor.invoke({ input: query });
// Unit test example
import { expect } from "chai";
it("should return 5 when input is 3", async () => {
const result = await magicTool(3);
expect(result).to.equal(5);
});
लैंगचैन.जेएस और ओलामा एलएलएम एकीकरण में एजेंटों की भूमिका की खोज
लैंगचैन.जेएस के साथ काम करते समय, एकीकृत करना एजेंट ओलामा जैसे टूल और भाषा मॉडल के साथ गतिशील अनुप्रयोगों के निर्माण का एक महत्वपूर्ण पहलू है। एक एजेंट आपको एक कस्टम टूल को कनेक्ट करने की अनुमति देता है, जो विशिष्ट कार्य करता है, एक भाषा मॉडल से, जो अधिक संवादात्मक या जेनरेटिव कार्यों को संभालता है। एजेंटों का उपयोग करके, डेवलपर्स वर्कफ़्लो को स्वचालित कर सकते हैं जहां एक मॉडल न केवल प्रतिक्रियाएं उत्पन्न करता है बल्कि गणना या डेटा प्रोसेसिंग करने के लिए टूल भी आमंत्रित करता है।
इस एकीकरण में मुख्य घटक है createToolCallingAgent समारोह। यह फ़ंक्शन एजेंट को आवश्यक होने पर विशिष्ट टूल ट्रिगर करने देता है, जिससे यह सुनिश्चित होता है कि कार्य सटीक और कुशलता से पूरे हो गए हैं। जबकि प्राथमिक फोकस अक्सर टूल बनाने पर ही होता है, यह समझना कि एजेंट के वर्कफ़्लो को कैसे प्रबंधित किया जाए और पार्सिंग त्रुटियों से कैसे बचा जाए, यह भी उतना ही महत्वपूर्ण है। "ToolCallingAgentOutputParser पर parseResult केवल ChatGeneration आउटपुट पर काम करता है" जैसी त्रुटियां आमतौर पर तब होती हैं जब एजेंट का आउटपुट पार्सिंग सिस्टम के साथ संगत नहीं होता है, जो एजेंट के आउटपुट और अपेक्षित प्रारूप के बीच उचित संरेखण की आवश्यकता पर प्रकाश डालता है।
शीघ्र टेम्पलेट्स का उपयोग, जैसे चैटप्रॉम्प्टटेम्पलेट, गतिशील संदेशों और संदर्भ प्लेसहोल्डर्स की अनुमति देकर इंटरैक्शन को और समृद्ध करता है। यह एजेंट को चैट इतिहास या एजेंट के स्क्रैचपैड के आधार पर अपनी प्रतिक्रियाओं को समायोजित करने की अनुमति देता है। प्रॉम्प्ट टेम्प्लेट को अनुकूलित करने और एजेंट के आउटपुट को सही ढंग से पार्स करने को सुनिश्चित करने से कई सामान्य त्रुटियों को रोका जा सकता है, जिससे आपके लैंगचैन.जेएस एप्लिकेशन अधिक विश्वसनीय और कुशल बन जाते हैं।
लैंगचैन.जेएस, एजेंटों और टूल्स के बारे में अक्सर पूछे जाने वाले प्रश्न
- लैंगचैन.जेएस में एजेंट क्या है?
- एजेंट एक घटक है जो उपयोगकर्ता क्वेरी के आधार पर विशिष्ट कार्य करने के लिए टूल और भाषा मॉडल के साथ इंटरैक्ट करता है। इसका उपयोग करता है createToolCallingAgent टूल को ट्रिगर करने का कार्य।
- आप "ToolCallingAgentOutputParser पर parseResult" त्रुटि का समाधान कैसे करते हैं?
- यह त्रुटि तब होती है जब एजेंट का आउटपुट पार्सर के साथ असंगत होता है। सुनिश्चित करें कि आउटपुट पार्सर की अपेक्षा से मेल खाता है और a का उपयोग करें ChatGeneration आउटपुट स्वरूप.
- का उद्देश्य क्या है AgentExecutor?
- AgentExecutor एजेंट और उसके टूल के निष्पादन का प्रबंधन करता है, जिससे आप लैंगचैन.जेएस अनुप्रयोगों में जटिल वर्कफ़्लो चला सकते हैं।
- कैसे हुआ ChatPromptTemplate काम?
- ChatPromptTemplate चैट संदेशों को एक संरचित प्रारूप में व्यवस्थित करता है, जिससे चैट इतिहास और एजेंट स्क्रैचपैड जैसी गतिशील सामग्री को वार्तालाप प्रवाह में सम्मिलित करने की अनुमति मिलती है।
- क्यों Zod उपकरण में प्रयोग किया जाता है?
- Zod इनपुट सत्यापन के लिए उपयोग किया जाता है, यह सुनिश्चित करते हुए कि कस्टम टूल का इनपुट सही प्रकार का है (उदाहरण के लिए, एक संख्या), जिससे त्रुटियों की संभावना कम हो जाती है।
लैंगचैन.जेएस में त्रुटि प्रबंधन पर अंतिम विचार
"ToolCallingAgentOutputParser पर parseResult केवल ChatGeneration आउटपुट पर काम करता है" त्रुटि को हल करने के लिए आपके एजेंट के आउटपुट और उसकी पार्सिंग अपेक्षाओं के बीच सावधानीपूर्वक संरेखण की आवश्यकता होती है। सही दृष्टिकोण से इस त्रुटि से बचा जा सकता है।
सत्यापन के लिए ज़ॉड जैसे उपयुक्त टूल का उपयोग करके और यह सुनिश्चित करके कि ओलामा के साथ निर्मित एजेंट, इनपुट और आउटपुट को सही ढंग से संभालते हैं, आप पार्सिंग समस्याओं का सामना किए बिना लैंगचैन.जेएस में मजबूत समाधान बना सकते हैं।
लैंगचैन.जेएस त्रुटि समाधान के लिए स्रोत और संदर्भ
- आधिकारिक लैंगचैन दस्तावेज़ीकरण पर विस्तार से बताया गया है, जो टूल निर्माण और एजेंट कॉन्फ़िगरेशन में अंतर्दृष्टि प्रदान करता है। लैंगचैन दस्तावेज़ीकरण अंदर।
- आगे इनपुट सत्यापन के लिए ज़ॉड के उपयोग और लैंगचैन.जेएस में इसके अनुप्रयोग के बारे में बताया गया है। ज़ॉड दस्तावेज़ीकरण अंदर।
- ओलामा भाषा मॉडल और कस्टम एजेंटों के भीतर इसके कार्यान्वयन का वर्णन करता है। ओलामा एलएलएम अंदर।