Виправлення помилки Langchain.js ToolCallingAgentOutputParser за допомогою Ollama LLM і спеціального інструменту

Temp mail SuperHeros
Виправлення помилки Langchain.js ToolCallingAgentOutputParser за допомогою Ollama LLM і спеціального інструменту
Виправлення помилки Langchain.js ToolCallingAgentOutputParser за допомогою Ollama LLM і спеціального інструменту

Розуміння та виправлення помилок ToolCallingAgentOutputParser у Langchain.js

Працюючи з Langchain.js v2, розробники часто прагнуть створити ефективних агентів за допомогою спеціальних інструментів і мовних моделей, таких як Ollama. Однак інтеграція цих компонентів іноді може призвести до помилок, які важко виправити.

Однією з таких помилок є «parseResult на ToolCallingAgentOutputParser працює лише на вихідних даних ChatGeneration», яка може виникнути під час створення спеціального інструменту в структурі агента. Розуміння першопричини цієї проблеми має вирішальне значення для забезпечення належної роботи агента та інструменту.

У цій статті розглядається проста реалізація спеціального інструменту, який додає 2 до введеного числа, використовуючи createToolCallingAgent Langchain і модель Ollama. Аналізуючи помилку та її контекст, ми можемо краще зрозуміти, як її усунути.

Наступні розділи проведуть вас через код, пояснять помилку та нададуть рішення для вирішення цієї проблеми. Незалежно від того, чи ви тільки знайомі з Langchain.js, чи маєте досвід, цей посібник допоможе вам ефективно вирішити цю проблему.

Команда Приклад використання
tool() Ця функція з Langchain.js визначає спеціальний інструмент, який виконує операцію. У цій статті він використовується для створення інструменту, який додає 2 до введеного числа, загортаючи логіку в структуру, яку легко викликати.
z.object() Частина бібліотеки Zod, яка використовується для перевірки схеми в Langchain. Це гарантує, що вхідні дані для спеціального інструменту є числом, забезпечуючи надійну перевірку введення для запобігання помилкам під час виконання.
createToolCallingAgent() Ця команда створює агента, який може викликати визначені інструменти у відповідь на запити користувача. Це ключ до інтеграції інструментів із такими мовними моделями, як Ollama, що дає змогу викликати інструменти під час розмови.
ChatPromptTemplate.fromMessages() Використовується для створення шаблону підказки чату з заповнювачами. Цей шаблон організовує різні типи повідомлень (системні, людині, заповнювачі), які агент може використовувати, покращуючи потік розмови.
MessagesPlaceholder Діє як заповнювач у шаблоні підказки для динамічного вмісту, наприклад історії чату або блокнота агента. Це дозволяє динамічно вставляти контекст розмови під час виконання.
AgentExecutor() Цей клас керує виконанням агентів і інструментів. У прикладі це допомагає виконувати запит через агента та збирати результат із виводу інструменту.
await agentExecutor.invoke() Використовується для виконання запиту через агента та асинхронного очікування результату. Це надзвичайно важливо для взаємодії з мовними моделями та інструментами, оскільки гарантує, що код очікує завершення операції, перш ніж рухатися далі.
try-catch Ця структура обробки помилок використовується в спеціальному інструменті для виявлення недійсних типів введення. Перехоплюючи винятки, він гарантує, що система повертає корисні повідомлення про помилки, не порушуючи потік виконання.
expect() З бібліотеки тверджень Chai, expect() використовується в модульному тесті для перевірки результатів спеціального інструменту. Це важливо для перевірки того, чи інструмент працює належним чином.

Розуміння спеціального інструменту та обробки помилок агента в Langchain.js

У наведеному прикладі ми працюємо з Langchain.js v2, щоб створити спеціальний інструмент, який інтегрується з Оллама модель мови. Основне призначення інструменту — виконати просту математичну операцію: додати 2 до вхідного значення. Інструмент створено за допомогою Langchain інструмент функція, яка визначає багаторазові функції, які можуть бути викликані агентом. Щоб забезпечити правильну роботу інструменту, схема введення перевіряється за допомогою бібліотеки Zod, гарантуючи, що введене число є дійсним. Це забезпечує правильну обробку помилок і запобігає виходу інструменту з ладу через неправильні введення.

Потім спеціальний інструмент включається в агент за допомогою createToolCallingAgent функція. Ця команда дозволяє агенту викликати інструмент, коли це необхідно, і агент працює на основі моделі Ollama, яка налаштована за допомогою певних параметрів, таких як температура, щоб контролювати креативність відповідей. Щоб полегшити безперебійну взаємодію між агентом і інструментом, використовується шаблон запиту чату. Цей шаблон організовує бесіду, визначаючи різні типи повідомлень, як-от системні повідомлення, людські введення та заповнювачі. Заповнювачі, наприклад MessagesPlaceholder, дозволяють розмові бути динамічним із такими елементами, як історія чату.

Однією з ключових проблем, розглянутих у цьому прикладі, є обробка помилок, пов’язаних із аналізом вихідних даних агента Langchain. Повідомлення про помилку «parseResult на ToolCallingAgentOutputParser працює лише з виводом ChatGeneration» походить від невідповідності між типом виводу, який очікує синтаксичний аналізатор, і фактично згенерованим виходом. Щоб усунути цю помилку, спеціальний інструмент загорнутий у надійну логіку, яка гарантує, що всі вхідні та вихідні дані відповідають очікуваним форматам. Це далі керується Агент-виконавець клас, який координує виконання агента та інструментів, забезпечуючи належну синхронізацію запиту та виводу інструменту.

Нарешті, сценарії реалізують асинхронне виконання за допомогою чекати, що дозволяє системі обробляти операції, не блокуючи інші процеси. Агент очікує, поки інструмент видасть результат, перш ніж продовжити, гарантуючи, що відповідь буде точною та своєчасною. Крім того, модульні тести включені для перевірки функціональності інструменту, гарантуючи, що він постійно видає правильний результат. Ці тести не тільки підтверджують математичну роботу інструменту, але й перевіряють, наскільки добре він обробляє недійсні введення, підвищуючи загальну надійність рішення. Ця модульна та стійка до помилок конструкція робить сценарії багаторазовими та ефективними для різних додатків у Langchain.js.

Виправлення помилки Langchain.js за допомогою модульного підходу

Рішення 1: JavaScript із модульним підходом і обробкою помилок за допомогою 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 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

Рішення 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 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);
});

Вивчення ролі агентів в інтеграції Langchain.js та Ollama LLM

При роботі з Langchain.js інтеграція агентів інструменти та мовні моделі, такі як Ollama, є критично важливим аспектом створення динамічних програм. Агент дозволяє підключити спеціальний інструмент, який виконує певні завдання, до мовної моделі, яка обробляє більш розмовні або генеративні завдання. Використовуючи агенти, розробники можуть автоматизувати робочі процеси, коли модель не тільки генерує відповіді, але й викликає інструменти для виконання обчислень або обробки даних.

Ключовим компонентом цієї інтеграції є createToolCallingAgent функція. Ця функція дозволяє агенту за потреби запускати певні інструменти, забезпечуючи точне та ефективне виконання завдань. Хоча основна увага часто приділяється створенню самого інструменту, не менш важливим є розуміння того, як керувати робочим процесом агента та уникати помилок аналізу. Помилки на кшталт «parseResult на ToolCallingAgentOutputParser працює лише з виводом ChatGeneration» зазвичай виникають, коли вихід агента несумісний із системою аналізу, що підкреслює необхідність належного узгодження між виводом агента та очікуваним форматом.

Використання шаблонів підказок, наприклад ChatPromptTemplate, ще більше збагачує взаємодію, дозволяючи динамічні повідомлення та заповнювачі контексту. Це дозволяє агенту коригувати свої відповіді на основі історії чату або блокнота агента. Оптимізація шаблонів підказок і забезпечення правильного аналізу вихідних даних агента може запобігти багатьом типовим помилкам, зробивши ваші програми Langchain.js більш надійними та ефективними.

Часті запитання про Langchain.js, агентів та інструменти

  1. Що таке агент у Langchain.js?
  2. Агент — це компонент, який взаємодіє з інструментами та мовними моделями для виконання певних завдань на основі запиту користувача. Він використовує createToolCallingAgent функція запуску інструментів.
  3. Як вирішити помилку «parseResult on ToolCallingAgentOutputParser»?
  4. Ця помилка виникає, коли вихідні дані агента несумісні з аналізатором. Переконайтеся, що вихідні дані відповідають очікуванням аналізатора, і використовуйте a ChatGeneration вихідний формат.
  5. Яка мета AgentExecutor?
  6. The AgentExecutor керує виконанням агента та його інструментів, дозволяючи вам запускати складні робочі процеси в програмах Langchain.js.
  7. Як робить ChatPromptTemplate робота?
  8. ChatPromptTemplate організовує повідомлення чату в структурованому форматі, дозволяючи вставляти в потік розмов динамічний вміст, наприклад історію чату та блокнот агента.
  9. Чому Zod використовується в інструменті?
  10. Zod використовується для перевірки введення, гарантуючи, що вхідні дані для спеціального інструменту мають правильний тип (наприклад, число), що зменшує ймовірність помилок.

Останні думки щодо обробки помилок у Langchain.js

Вирішення помилки «parseResult на ToolCallingAgentOutputParser працює лише з виводом ChatGeneration» вимагає ретельного узгодження між виводом вашого агента та його очікуваннями аналізу. При правильному підході цієї помилки можна уникнути.

Використовуючи відповідні інструменти, такі як Zod, для перевірки та гарантуючи, що агенти, наприклад створені за допомогою Ollama, правильно обробляють вхідні та вихідні дані, ви можете створювати надійні рішення в Langchain.js, не стикаючись з проблемами аналізу.

Джерела та посилання для усунення помилок Langchain.js
  1. Опрацьовує офіційну документацію Langchain, яка містить уявлення про створення інструментів і конфігурації агентів. Документація Langchain Всередині.
  2. Далі пояснюється використання Zod для перевірки введення та його застосування в Langchain.js. Документація Zod Всередині.
  3. Описує модель мови Ollama та її реалізацію в користувацьких агентах. Оллама LLM Всередині.