Langchain.js-এ ToolCallingAgentOutputParser ত্রুটি বোঝা এবং ঠিক করা
Langchain.js v2 এর সাথে কাজ করার সময়, বিকাশকারীরা প্রায়শই ওল্লামার মতো কাস্টম সরঞ্জাম এবং ভাষা মডেল ব্যবহার করে দক্ষ এজেন্ট তৈরি করার লক্ষ্য রাখে। যাইহোক, এই উপাদানগুলিকে একত্রিত করার ফলে কখনও কখনও ত্রুটি দেখা দিতে পারে যা ডিবাগ করা কঠিন৷
এরকম একটি ত্রুটি হল "ToolCallingAgentOutputParser-এ parseResult শুধুমাত্র ChatGeneration আউটপুটে কাজ করে," যা এজেন্ট ফ্রেমওয়ার্কের মধ্যে একটি কাস্টম টুল তৈরি করার সময় ঘটতে পারে। এজেন্ট এবং টুল সঠিকভাবে কাজ করে তা নিশ্চিত করার জন্য এই সমস্যার মূল কারণ বোঝা অত্যন্ত গুরুত্বপূর্ণ।
এই নিবন্ধটি ল্যাংচেইনের createToolCallingAgent এবং ওল্লামা মডেল ব্যবহার করে একটি কাস্টম টুলের একটি সহজ বাস্তবায়নের অনুসন্ধান করে যা একটি সংখ্যা ইনপুটে 2 যোগ করে। ত্রুটি এবং এর প্রেক্ষাপট বিশ্লেষণ করে, আমরা কীভাবে এটির সমস্যা সমাধান করতে পারি তা আরও ভালভাবে বুঝতে পারি।
নিম্নলিখিত বিভাগগুলি আপনাকে কোডের মাধ্যমে গাইড করবে, ত্রুটিটি ব্যাখ্যা করবে এবং এই সমস্যার সমাধান করার জন্য সমাধান প্রদান করবে। আপনি Langchain.js-এ নতুন বা অভিজ্ঞ হোন না কেন, এই নির্দেশিকা আপনাকে এই সমস্যাটি দক্ষতার সাথে অতিক্রম করতে সাহায্য করবে।
| আদেশ | ব্যবহারের উদাহরণ |
|---|---|
| tool() | Langchain.js থেকে এই ফাংশনটি একটি কাস্টম টুলকে সংজ্ঞায়িত করে যা একটি অপারেশন করে। এই নিবন্ধে, এটি একটি টুল তৈরি করতে ব্যবহৃত হয়েছে যা একটি ইনপুট নম্বরে 2 যোগ করে, যুক্তিটিকে একটি সহজে কলযোগ্য কাঠামোতে মোড়ানো। |
| z.object() | Zod লাইব্রেরির একটি অংশ, ল্যাংচেইনে স্কিমা যাচাইকরণের জন্য ব্যবহৃত হয়। এটি নিশ্চিত করে যে কাস্টম টুলে ইনপুট একটি সংখ্যা, যা কার্যকর করার সময় ত্রুটিগুলি প্রতিরোধ করার জন্য শক্তিশালী ইনপুট বৈধতা প্রদান করে। |
| createToolCallingAgent() | এই কমান্ডটি একটি এজেন্ট তৈরি করে যা ব্যবহারকারীর প্রশ্নের জবাবে সংজ্ঞায়িত সরঞ্জামগুলিকে কল করতে পারে। এটি ওল্লামার মতো ভাষার মডেলগুলির সাথে সরঞ্জামগুলিকে একীভূত করার চাবিকাঠি, যার ফলে কথোপকথনের সময় সরঞ্জামগুলি ব্যবহার করা সম্ভব হয়৷ |
| ChatPromptTemplate.fromMessages() | স্থানধারকদের সাথে একটি চ্যাট প্রম্পট টেমপ্লেট তৈরি করতে ব্যবহৃত হয়। এই টেমপ্লেটটি এজেন্টের ব্যবহারের জন্য বিভিন্ন ধরনের বার্তা (সিস্টেম, মানব, স্থানধারক) সংগঠিত করে, এর কথোপকথন প্রবাহকে উন্নত করে। |
| MessagesPlaceholder | চ্যাট ইতিহাস বা এজেন্ট স্ক্র্যাচপ্যাডের মতো গতিশীল সামগ্রীর জন্য প্রম্পট টেমপ্লেটে স্থানধারক হিসাবে কাজ করে। এটি কার্যকর করার সময় কথোপকথনের প্রসঙ্গটি গতিশীলভাবে ইনজেকশন করার অনুমতি দেয়। |
| AgentExecutor() | এই শ্রেণীটি এজেন্ট এবং সরঞ্জামগুলির সম্পাদন পরিচালনা করে। উদাহরণে, এটি এজেন্টের মাধ্যমে ক্যোয়ারী চালাতে এবং টুলের আউটপুট থেকে ফলাফল সংগ্রহ করতে সাহায্য করে। |
| await agentExecutor.invoke() | এজেন্টের মাধ্যমে ক্যোয়ারী চালাতে এবং অ্যাসিঙ্ক্রোনাসভাবে ফলাফলের জন্য অপেক্ষা করতে ব্যবহৃত হয়। ভাষা মডেল এবং সরঞ্জামগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য এটি অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি নিশ্চিত করে যে কোডটি এগিয়ে যাওয়ার আগে অপারেশন সম্পূর্ণ হওয়ার জন্য অপেক্ষা করে। |
| try-catch | এই ত্রুটি-হ্যান্ডলিং কাঠামোটি অবৈধ ইনপুট ধরন ধরতে কাস্টম টুলের মধ্যে ব্যবহার করা হয়। ব্যতিক্রমগুলি ধরার মাধ্যমে, এটি নিশ্চিত করে যে সিস্টেমটি কার্যকরী ফ্লো না ভেঙে সহায়ক ত্রুটি বার্তাগুলি ফেরত দেয়। |
| expect() | Chai assertion library থেকে, expect() কাস্টম টুলের আউটপুট যাচাই করতে ইউনিট পরীক্ষায় ব্যবহার করা হয়। টুলটি প্রত্যাশিতভাবে কাজ করে কিনা তা পরীক্ষা করার জন্য এটি অপরিহার্য। |
Langchain.js-এ কাস্টম টুল এবং এজেন্ট এরর হ্যান্ডলিং বোঝা
প্রদত্ত উদাহরণে, আমরা একটি কাস্টম টুল তৈরি করতে Langchain.js v2 এর সাথে কাজ করছি যা ওল্লামা ভাষার মডেল। টুলটির মূল উদ্দেশ্য হল একটি সাধারণ গাণিতিক ক্রিয়াকলাপ সম্পাদন করা: ইনপুট মানের সাথে 2 যোগ করা। টুলটি ল্যাংচেইন ব্যবহার করে তৈরি করা হয়েছে টুল ফাংশন, যা পুনঃব্যবহারযোগ্য ফাংশন সংজ্ঞায়িত করে যা একটি এজেন্ট দ্বারা আহ্বান করা যেতে পারে। টুলটি সঠিকভাবে কাজ করছে তা নিশ্চিত করতে, ইনপুট স্কিমাটি Zod লাইব্রেরির মাধ্যমে যাচাই করা হয়েছে, যাতে ইনপুটটি একটি বৈধ নম্বর। এটি সঠিক ত্রুটি পরিচালনা নিশ্চিত করে এবং অবৈধ ইনপুটগুলির কারণে টুলটিকে ব্যর্থ হতে বাধা দেয়।
কাস্টম টুল তারপর ব্যবহার করে একটি এজেন্ট অন্তর্ভুক্ত করা হয় createToolCallingAgent ফাংশন এই কমান্ডটি এজেন্টকে প্রয়োজনের সময় টুলটিকে কল করার অনুমতি দেয় এবং এজেন্ট ওল্লামা মডেল দ্বারা চালিত হয়, যা প্রতিক্রিয়াগুলির সৃজনশীলতা নিয়ন্ত্রণ করতে তাপমাত্রার মতো নির্দিষ্ট পরামিতিগুলির সাথে কনফিগার করা হয়। এজেন্ট এবং টুলের মধ্যে মসৃণ মিথস্ক্রিয়া সহজতর করার জন্য, একটি চ্যাট প্রম্পট টেমপ্লেট ব্যবহার করা হয়। এই টেমপ্লেটটি বিভিন্ন ধরনের বার্তা সংজ্ঞায়িত করে কথোপকথন সংগঠিত করে, যেমন সিস্টেম বার্তা, মানব ইনপুট এবং স্থানধারক। স্থানধারক, যেমন বার্তা প্লেসহোল্ডার, কথোপকথনকে গতিশীল করার অনুমতি দিন, চ্যাট ইতিহাসের মতো উপাদানগুলি অন্তর্ভুক্ত করা হয়েছে৷
এই উদাহরণে সমাধান করা মূল সমস্যাগুলির মধ্যে একটি হল ল্যাংচেইন এজেন্টের আউটপুট পার্সিংয়ের চারপাশে ত্রুটি পরিচালনা করা। "ToolCallingAgentOutputParser-এ parseResult শুধুমাত্র ChatGeneration আউটপুটে কাজ করে" ত্রুটির বার্তাটি পার্সার দ্বারা প্রত্যাশিত আউটপুটের ধরণ এবং প্রকৃত আউটপুট তৈরির মধ্যে অমিল থেকে উদ্ভূত হয়। এই ত্রুটিটি পরিচালনা করার জন্য, কাস্টম টুলটি শক্তিশালী যুক্তিতে মোড়ানো হয়, নিশ্চিত করে যে সমস্ত ইনপুট এবং আউটপুট প্রত্যাশিত ফর্ম্যাটের সাথে সামঞ্জস্যপূর্ণ। এটি আরও দ্বারা পরিচালিত হয় এজেন্ট এক্সিকিউটর ক্লাস, যা এজেন্ট এবং সরঞ্জামগুলির সম্পাদনের সমন্বয় করে, নিশ্চিত করে যে ক্যোয়ারী এবং টুল আউটপুট সঠিকভাবে সিঙ্ক্রোনাইজ করা হয়েছে।
অবশেষে, স্ক্রিপ্টগুলি ব্যবহার করে অ্যাসিঙ্ক্রোনাস এক্সিকিউশন প্রয়োগ করে অপেক্ষা করা, সিস্টেমটিকে অন্যান্য প্রক্রিয়াগুলিকে ব্লক না করে অপারেশন পরিচালনা করার অনুমতি দেয়। এজেন্ট এগিয়ে যাওয়ার আগে টুলটির ফলাফল ফেরত দেওয়ার জন্য অপেক্ষা করে, নিশ্চিত করে যে প্রতিক্রিয়াটি সঠিক এবং সময়মত উভয়ই হয়। উপরন্তু, টুলের কার্যকারিতা যাচাই করার জন্য ইউনিট পরীক্ষাগুলি অন্তর্ভুক্ত করা হয়, এটি নিশ্চিত করে যে এটি ধারাবাহিকভাবে সঠিক আউটপুট তৈরি করে। এই পরীক্ষাগুলি শুধুমাত্র টুলটির গাণিতিক ক্রিয়াকলাপ নিশ্চিত করে না বরং এটি কতটা ভালভাবে অবৈধ ইনপুট পরিচালনা করে, সমাধানের সামগ্রিক নির্ভরযোগ্যতা উন্নত করে তাও পরীক্ষা করে। এই মডুলার এবং ত্রুটি-প্রতিরোধী নকশা Langchain.js-এর মধ্যে বিভিন্ন অ্যাপ্লিকেশনের জন্য স্ক্রিপ্টগুলিকে পুনরায় ব্যবহারযোগ্য এবং কার্যকর করে তোলে।
মডুলার অ্যাপ্রোচ দিয়ে Langchain.js ত্রুটি ঠিক করা
সমাধান 1: Langchain.js এবং Ollama LLM ব্যবহার করে মডুলার পদ্ধতি এবং ত্রুটি পরিচালনা সহ জাভাস্ক্রিপ্ট
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 Ollamaconst llm = new Ollama({model: "llama3",temperature: 0.7,});// Custom tool to add 2 to the input numberconst 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 placeholdersconst prompt = ChatPromptTemplate.fromMessages([["system", "You are a helpful assistant called iHelp"],["placeholder", "{chat_history}"],["human", "{input}"],["placeholder", "{agent_scratchpad}"],]);// Agent configurationconst agent = createToolCallingAgent({ llm, tools, prompt });// Execute agent queryconst agentExecutor = new AgentExecutor({ agent, tools });const query = "What is the value of magic_function(3)?";await agentExecutor.invoke({ input: query });
Langchain.js এজেন্টের জন্য উন্নত ত্রুটি হ্যান্ডলিং
সমাধান 2: Langchain.js-এ কাস্টম টুলের আউটপুট যাচাই করতে ইউনিট পরীক্ষার মাধ্যমে ত্রুটি পরিচালনা
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 Ollamaconst llm = new Ollama({ model: "llama3", temperature: 0.7 });// Custom tool with added error handlingconst 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 executionconst agent = createToolCallingAgent({ llm, tools });const agentExecutor = new AgentExecutor({ agent, tools });const query = "magic_function('abc')"; // Test with invalid inputawait agentExecutor.invoke({ input: query });// Unit test exampleimport { expect } from "chai";it("should return 5 when input is 3", async () => {const result = await magicTool(3);expect(result).to.equal(5);});
Langchain.js এবং Ollama LLM ইন্টিগ্রেশনে এজেন্টদের ভূমিকা অন্বেষণ করা
Langchain.js এর সাথে কাজ করার সময়, ইন্টিগ্রেট করা এজেন্ট ওল্লামার মতো সরঞ্জাম এবং ভাষা মডেলগুলি গতিশীল অ্যাপ্লিকেশন তৈরির একটি গুরুত্বপূর্ণ দিক। একটি এজেন্ট আপনাকে একটি কাস্টম টুল, যা নির্দিষ্ট কাজগুলি সম্পাদন করে, একটি ভাষার মডেলের সাথে সংযোগ করতে দেয়, যা আরও কথোপকথন বা জেনারেটিভ কাজগুলি পরিচালনা করে। এজেন্ট ব্যবহার করে, বিকাশকারীরা কর্মপ্রবাহ স্বয়ংক্রিয় করতে পারে যেখানে একটি মডেল শুধুমাত্র প্রতিক্রিয়া তৈরি করে না কিন্তু গণনা বা ডেটা প্রক্রিয়াকরণ করার জন্য সরঞ্জামগুলিকেও আহ্বান করে।
এই ইন্টিগ্রেশনের মূল উপাদান হল createToolCallingAgent ফাংশন এই ফাংশনটি এজেন্টকে যখন প্রয়োজন তখন নির্দিষ্ট টুল ট্রিগার করতে দেয়, নিশ্চিত করে যে কাজগুলি সঠিকভাবে এবং দক্ষতার সাথে সম্পন্ন হয়েছে। যদিও প্রাথমিক ফোকাস প্রায়শই নিজেই টুল তৈরি করার উপর থাকে, কিভাবে এজেন্টের কর্মপ্রবাহ পরিচালনা করতে হয় এবং পার্সিং ত্রুটিগুলি এড়াতে হয় তা বোঝা সমান গুরুত্বপূর্ণ। "ToolCallingAgentOutputParser-এ parseResult শুধুমাত্র ChatGeneration আউটপুটে কাজ করে" এর মতো ত্রুটিগুলি সাধারণত ঘটে যখন এজেন্টের আউটপুট পার্সিং সিস্টেমের সাথে সামঞ্জস্যপূর্ণ না হয়, যা এজেন্টের আউটপুট এবং প্রত্যাশিত বিন্যাসের মধ্যে সঠিক প্রান্তিককরণের প্রয়োজনীয়তা তুলে ধরে।
প্রম্পট টেমপ্লেট ব্যবহার, যেমন ChatPromptTemplate, গতিশীল বার্তা এবং প্রসঙ্গ স্থানধারকদের অনুমতি দিয়ে মিথস্ক্রিয়াকে আরও সমৃদ্ধ করে। এটি এজেন্টকে চ্যাটের ইতিহাস বা এজেন্টের স্ক্র্যাচপ্যাডের উপর ভিত্তি করে তার প্রতিক্রিয়া সামঞ্জস্য করতে দেয়। প্রম্পট টেমপ্লেটগুলি অপ্টিমাইজ করা এবং এজেন্টের আউটপুটগুলি সঠিকভাবে পার্স করা নিশ্চিত করা অনেক সাধারণ ত্রুটি প্রতিরোধ করতে পারে, যা আপনার Langchain.js অ্যাপ্লিকেশনগুলিকে আরও নির্ভরযোগ্য এবং দক্ষ করে তোলে৷
Langchain.js, এজেন্ট এবং সরঞ্জাম সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
- Langchain.js এ এজেন্ট কি?
- একটি এজেন্ট হল একটি উপাদান যা ব্যবহারকারীর প্রশ্নের উপর ভিত্তি করে নির্দিষ্ট কাজগুলি সম্পাদন করতে সরঞ্জাম এবং ভাষার মডেলগুলির সাথে যোগাযোগ করে। এটি ব্যবহার করে createToolCallingAgent টুল ট্রিগার করার ফাংশন।
- আপনি কিভাবে "ToolCallingAgentOutputParser এ parseResult" ত্রুটিটি সমাধান করবেন?
- এই ত্রুটিটি ঘটে যখন এজেন্টের আউটপুট পার্সারের সাথে বেমানান হয়। নিশ্চিত করুন যে আউটপুটটি পার্সার যা আশা করে তার সাথে মেলে এবং a ব্যবহার করুন ChatGeneration আউটপুট বিন্যাস।
- এর উদ্দেশ্য কি AgentExecutor?
- দ AgentExecutor এজেন্ট এবং এর সরঞ্জামগুলির সম্পাদন পরিচালনা করে, আপনাকে Langchain.js অ্যাপ্লিকেশনগুলিতে জটিল ওয়ার্কফ্লো চালানোর অনুমতি দেয়।
- কিভাবে করে ChatPromptTemplate কাজ?
- ChatPromptTemplate চ্যাট বার্তাগুলিকে একটি কাঠামোগত বিন্যাসে সংগঠিত করে, যা চ্যাট ইতিহাস এবং এজেন্ট স্ক্র্যাচপ্যাডের মতো গতিশীল বিষয়বস্তুকে কথোপকথনের প্রবাহে ঢোকানোর অনুমতি দেয়।
- কেন হয় Zod টুল ব্যবহার করা হয়?
- Zod ইনপুট যাচাইকরণের জন্য ব্যবহার করা হয়, এটি নিশ্চিত করে যে কাস্টম টুলে ইনপুট সঠিক ধরনের (যেমন, একটি সংখ্যা), যা ত্রুটির সম্ভাবনা হ্রাস করে।
Langchain.js-এ ত্রুটি পরিচালনার বিষয়ে চূড়ান্ত চিন্তাভাবনা
"ToolCallingAgentOutputParser-এ parseResult শুধুমাত্র ChatGeneration আউটপুটে কাজ করে" সমস্যাটি সমাধান করার জন্য আপনার এজেন্টের আউটপুট এবং এর পার্সিং প্রত্যাশার মধ্যে সতর্কভাবে সারিবদ্ধকরণ প্রয়োজন। সঠিক পদ্ধতির সাথে, এই ত্রুটি এড়ানো যেতে পারে।
বৈধকরণের জন্য Zod-এর মতো উপযুক্ত টুল ব্যবহার করে এবং নিশ্চিত করে যে এজেন্ট, যেমন ওল্লামা দিয়ে তৈরি, ইনপুট এবং আউটপুট সঠিকভাবে পরিচালনা করে, আপনি পার্সিং সমস্যার সম্মুখীন না হয়েই Langchain.js-এ শক্তিশালী সমাধান তৈরি করতে পারেন।
Langchain.js এরর রেজোলিউশনের জন্য সূত্র এবং রেফারেন্স
- অফিসিয়াল ল্যাংচেইন ডকুমেন্টেশনের উপর বিস্তারিত করে, যা টুল তৈরি এবং এজেন্ট কনফিগারেশনের অন্তর্দৃষ্টি প্রদান করে। ল্যাংচেইন ডকুমেন্টেশন ভিতরে
- Langchain.js-এ ইনপুট যাচাইকরণ এবং এর প্রয়োগের জন্য Zod-এর ব্যবহার আরও ব্যাখ্যা করে। Zod ডকুমেন্টেশন ভিতরে
- ওল্লামা ভাষা মডেল এবং কাস্টম এজেন্টদের মধ্যে এর বাস্তবায়ন বর্ণনা করে। ওল্লামা এলএলএম ভিতরে