$lang['tuto'] = "tutorials"; ?>$lang['tuto'] = "tutorials"; ?> Correcció de l'error ToolCallingAgentOutputParser de

Correcció de l'error ToolCallingAgentOutputParser de Langchain.js amb Ollama LLM i una eina personalitzada

Temp mail SuperHeros
Correcció de l'error ToolCallingAgentOutputParser de Langchain.js amb Ollama LLM i una eina personalitzada
Correcció de l'error ToolCallingAgentOutputParser de Langchain.js amb Ollama LLM i una eina personalitzada

Comprensió i correcció dels errors de ToolCallingAgentOutputParser a Langchain.js

Quan treballen amb Langchain.js v2, els desenvolupadors sovint pretenen crear agents eficients mitjançant eines personalitzades i models de llenguatge com Ollama. Tanmateix, la integració d'aquests components de vegades pot provocar errors difícils de depurar.

Un d'aquests errors és "parseResult on ToolCallingAgentOutputParser només funciona amb la sortida de ChatGeneration", que es pot produir quan es construeix una eina personalitzada dins del marc de l'agent. Entendre la causa principal d'aquest problema és crucial per garantir que l'agent i l'eina funcionin correctament.

Aquest article explora una implementació senzilla d'una eina personalitzada que afegeix 2 a una entrada de nombre, utilitzant el createToolCallingAgent de Langchain i el model Ollama. Si analitzem l'error i el seu context, podem entendre millor com solucionar-lo.

Les seccions següents us guiaran a través del codi, explicaran l'error i proporcionaran solucions per solucionar aquest problema. Tant si sou nou a Langchain.js com si sou experimentat, aquesta guia us ajudarà a superar aquest problema de manera eficient.

Comandament Exemple d'ús
tool() Aquesta funció de Langchain.js defineix una eina personalitzada que realitza una operació. En aquest article, s'utilitza per crear una eina que afegeix 2 a un número d'entrada, embolicant la lògica en una estructura fàcilment cridable.
z.object() Una part de la biblioteca Zod, utilitzada per a la validació d'esquemes a Langchain. Això garanteix que l'entrada a l'eina personalitzada sigui un nombre, proporcionant una validació d'entrada forta per evitar errors durant l'execució.
createToolCallingAgent() Aquesta ordre crea un agent que pot cridar les eines definides en resposta a les consultes dels usuaris. És clau per integrar eines amb models de llenguatge com Ollama, fent possible invocar eines durant la conversa.
ChatPromptTemplate.fromMessages() S'utilitza per generar una plantilla de sol·licitud de xat amb marcadors de posició. Aquesta plantilla organitza diferents tipus de missatges (sistema, humans, marcadors de posició) perquè l'agent els faci servir, millorant el seu flux conversacional.
MessagesPlaceholder Actua com a marcador de posició a la plantilla de sol·licitud per a contingut dinàmic, com ara l'historial de xat o el bloc de notes de l'agent. Això permet que el context de conversa s'injecti dinàmicament durant l'execució.
AgentExecutor() Aquesta classe gestiona l'execució d'agents i eines. A l'exemple, ajuda a executar la consulta a través de l'agent i a recopilar el resultat de la sortida de l'eina.
await agentExecutor.invoke() S'utilitza per executar la consulta a través de l'agent i esperar el resultat de manera asíncrona. Això és crucial per interactuar amb models i eines de llenguatge, ja que assegura que el codi espera que l'operació es completi abans de continuar.
try-catch Aquesta estructura de gestió d'errors s'utilitza a l'eina personalitzada per detectar tipus d'entrada no vàlids. En capturar excepcions, s'assegura que el sistema retorna missatges d'error útils sense trencar el flux d'execució.
expect() A la biblioteca d'assercions Chai, s'utilitza expect() a la prova d'unitat per verificar la sortida de l'eina personalitzada. És essencial per provar si l'eina funciona com s'esperava.

Entendre l'eina personalitzada i la gestió d'errors de l'agent a Langchain.js

A l'exemple proporcionat, estem treballant amb Langchain.js v2 per crear una eina personalitzada que s'integra amb el Ollama model lingüístic. L'objectiu principal de l'eina és realitzar una operació matemàtica senzilla: afegir 2 al valor d'entrada. L'eina es construeix amb Langchain eina funció, que defineix funcions reutilitzables que poden ser invocades per un agent. Per garantir que l'eina funciona correctament, l'esquema d'entrada es valida amb la biblioteca Zod, garantint que l'entrada és un número vàlid. Això garanteix un tractament adequat dels errors i evita que l'eina falli a causa d'entrades no vàlides.

A continuació, l'eina personalitzada s'incorpora a un agent mitjançant l' createToolCallingAgent funció. Aquesta ordre permet a l'agent trucar a l'eina quan sigui necessari, i l'agent està alimentat pel model Ollama, que es configura amb paràmetres específics com la temperatura per controlar la creativitat de les respostes. Per facilitar una interacció fluida entre l'agent i l'eina, s'utilitza una plantilla de sol·licitud de xat. Aquesta plantilla organitza la conversa definint diferents tipus de missatges, com ara missatges del sistema, entrada humana i marcadors de posició. Els marcadors de posició, com ara Missatges Marcador de posició, permeten que la conversa sigui dinàmica, amb elements com l'historial de xat inclòs.

Un dels problemes clau tractats en aquest exemple és la gestió d'errors al voltant de l'anàlisi de sortida de l'agent Langchain. El missatge d'error "parseResult on ToolCallingAgentOutputParser només funciona a la sortida de ChatGeneration" prové d'una discrepància entre el tipus de sortida esperat per l'analitzador i la sortida real generada. Per gestionar aquest error, l'eina personalitzada s'embolica en una lògica robusta, que garanteix que totes les entrades i sortides s'ajustin als formats esperats. Això és gestionat a més per la AgentExecutor classe, que coordina l'execució de l'agent i les eines, assegurant-se que la consulta i la sortida de l'eina estan correctament sincronitzades.

Finalment, els scripts implementen l'execució asíncrona utilitzant esperar, permetent al sistema gestionar operacions sense bloquejar altres processos. L'agent espera que l'eina torni el seu resultat abans de continuar, assegurant-se que la resposta és precisa i oportuna. A més, s'inclouen proves d'unitat per validar la funcionalitat de l'eina, assegurant que produeixi constantment la sortida correcta. Aquestes proves no només confirmen el funcionament matemàtic de l'eina, sinó que també comproven com de bé gestiona les entrades no vàlides, millorant la fiabilitat global de la solució. Aquest disseny modular i resistent als errors fa que els scripts siguin reutilitzables i efectius per a diverses aplicacions dins de Langchain.js.

Arreglar l'error Langchain.js amb un enfocament modular

Solució 1: JavaScript amb enfocament modular i tractament d'errors mitjançant Langchain.js i 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 });

Gestió d'errors millorada per a l'agent Langchain.js

Solució 2: gestió d'errors amb proves unitàries per validar la sortida de l'eina personalitzada a 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);
});

Explorant el paper dels agents a la integració de Langchain.js i Ollama LLM

Quan es treballa amb Langchain.js, la integració agents amb eines i models de llenguatge com Ollama és un aspecte crític per crear aplicacions dinàmiques. Un agent permet connectar una eina personalitzada, que realitza tasques específiques, a un model de llenguatge, que gestiona tasques més conversacionals o generatives. Mitjançant l'ús d'agents, els desenvolupadors poden automatitzar fluxos de treball on un model no només genera respostes, sinó que també invoca eines per realitzar càlculs o processament de dades.

El component clau d'aquesta integració és el createToolCallingAgent funció. Aquesta funció permet a l'agent activar eines específiques quan sigui necessari, assegurant que les tasques es completen amb precisió i eficàcia. Tot i que sovint l'enfocament principal és crear l'eina mateixa, és igual d'important entendre com gestionar el flux de treball de l'agent i evitar errors d'anàlisi. Els errors com "parseResult on ToolCallingAgentOutputParser només funciona a la sortida de ChatGeneration" solen produir-se quan la sortida de l'agent no és compatible amb el sistema d'anàlisi, posant de manifest la necessitat d'una alineació adequada entre la sortida de l'agent i el format esperat.

L'ús de plantilles d'indicadors, com ara ChatPromptTemplate, enriqueix encara més la interacció permetent missatges dinàmics i marcadors de posició de context. Això permet a l'agent ajustar les seves respostes en funció de l'historial de xat o del bloc de notes de l'agent. Optimitzar les plantilles d'indicadors i assegurar-vos que les sortides de l'agent s'analitzin correctament pot evitar molts errors comuns, fent que les vostres aplicacions Langchain.js siguin més fiables i eficients.

Preguntes freqüents sobre Langchain.js, agents i eines

  1. Què és un agent a Langchain.js?
  2. Un agent és un component que interactua amb eines i models de llenguatge per realitzar tasques específiques basades en una consulta de l'usuari. Fa servir el createToolCallingAgent funció per activar eines.
  3. Com es resol l'error "parseResult a ToolCallingAgentOutputParser"?
  4. Aquest error es produeix quan la sortida de l'agent és incompatible amb l'analitzador. Assegureu-vos que la sortida coincideix amb el que espera l'analitzador i utilitzeu a ChatGeneration format de sortida.
  5. Quina és la finalitat del AgentExecutor?
  6. El AgentExecutor gestiona l'execució de l'agent i les seves eines, la qual cosa us permet executar fluxos de treball complexos a les aplicacions Langchain.js.
  7. Com ho fa ChatPromptTemplate treballar?
  8. ChatPromptTemplate organitza els missatges de xat en un format estructurat, la qual cosa permet inserir contingut dinàmic com ara l'historial de xat i el bloc de notes de l'agent al flux de conversa.
  9. Per què és Zod utilitzat a l'eina?
  10. Zod s'utilitza per a la validació d'entrada, assegurant que l'entrada a l'eina personalitzada és del tipus correcte (per exemple, un número), cosa que redueix les possibilitats d'error.

Consideracions finals sobre la gestió d'errors a Langchain.js

La resolució de l'error "parseResult on ToolCallingAgentOutputParser només funciona amb la sortida de ChatGeneration" requereix una alineació acurada entre la sortida del vostre agent i les seves expectatives d'anàlisi. Amb l'enfocament correcte, aquest error es pot evitar.

Mitjançant l'ús d'eines adequades com Zod per a la validació i assegurar-vos que els agents, com els creats amb Ollama, gestionen les entrades i les sortides correctament, podeu crear solucions sòlides a Langchain.js sense trobar problemes d'anàlisi.

Fonts i referències per a la resolució d'errors de Langchain.js
  1. Elabora la documentació oficial de Langchain, que proporciona informació sobre la creació d'eines i les configuracions dels agents. Documentació de Langchain Dins.
  2. A més, s'explica l'ús de Zod per a la validació d'entrada i la seva aplicació a Langchain.js. Documentació Zod Dins.
  3. Descriu el model de llenguatge Ollama i la seva implementació dins dels agents personalitzats. Ollama LLM Dins.