$lang['tuto'] = "tutorijali"; ?> Ispravljanje pogreške Langchain.js

Ispravljanje pogreške Langchain.js ToolCallingAgentOutputParser s LLM-om Ollama i prilagođenim alatom

Temp mail SuperHeros
Ispravljanje pogreške Langchain.js ToolCallingAgentOutputParser s LLM-om Ollama i prilagođenim alatom
Ispravljanje pogreške Langchain.js ToolCallingAgentOutputParser s LLM-om Ollama i prilagođenim alatom

Razumijevanje i popravljanje pogrešaka ToolCallingAgentOutputParser u Langchain.js

Kada rade s Langchain.js v2, programeri često imaju za cilj stvoriti učinkovite agente koristeći prilagođene alate i jezične modele poput Ollame. Međutim, integracija ovih komponenti ponekad može dovesti do pogrešaka koje je teško otkloniti.

Jedna takva pogreška je "parseResult na ToolCallingAgentOutputParser radi samo na izlazu ChatGeneration", koja se može pojaviti prilikom izrade prilagođenog alata unutar okvira agenta. Razumijevanje temeljnog uzroka ovog problema ključno je za osiguranje ispravnog rada agenta i alata.

Ovaj članak istražuje jednostavnu implementaciju prilagođenog alata koji dodaje 2 unosu broja, koristeći Langchain createToolCallingAgent i model Ollama. Analizirajući pogrešku i njezin kontekst, možemo bolje shvatiti kako je riješiti.

Sljedeći odjeljci će vas voditi kroz kod, objasniti pogrešku i dati rješenja za rješavanje ovog problema. Bez obzira jeste li tek počeli upotrebljavati Langchain.js ili imate iskustva, ovaj će vam vodič pomoći da učinkovito riješite ovaj problem.

Naredba Primjer upotrebe
tool() Ova funkcija iz Langchain.js definira prilagođeni alat koji izvodi operaciju. U ovom članku koristi se za izradu alata koji dodaje 2 ulaznom broju, omatajući logiku u strukturu koja se lako poziva.
z.object() Dio Zod biblioteke, koji se koristi za provjeru valjanosti sheme u Langchainu. To osigurava da je unos u prilagođeni alat broj, pružajući snažnu provjeru valjanosti unosa kako bi se spriječile pogreške tijekom izvođenja.
createToolCallingAgent() Ova naredba stvara agenta koji može pozvati definirane alate kao odgovor na korisničke upite. To je ključno za integraciju alata s jezičnim modelima kao što je Ollama, što omogućuje pozivanje alata tijekom razgovora.
ChatPromptTemplate.fromMessages() Koristi se za generiranje predloška upita za chat s rezerviranim mjestima. Ovaj predložak organizira različite vrste poruka (sustav, ljudi, rezervirana mjesta) koje agent koristi, poboljšavajući njegov tok razgovora.
MessagesPlaceholder Djeluje kao rezervirano mjesto u predlošku upita za dinamički sadržaj, kao što je povijest razgovora ili blok za pisanje agenta. To omogućuje dinamičko ubacivanje konteksta razgovora tijekom izvođenja.
AgentExecutor() Ova klasa upravlja izvršavanjem agenata i alata. U primjeru, pomaže u pokretanju upita kroz agenta i prikupljanju rezultata iz izlaza alata.
await agentExecutor.invoke() Koristi se za pokretanje upita kroz agenta i asinkrono čekanje rezultata. Ovo je ključno za interakciju s jezičnim modelima i alatima, jer osigurava da kod čeka da se operacija završi prije nego što krene dalje.
try-catch Ova struktura za rukovanje pogreškama koristi se unutar prilagođenog alata za hvatanje nevažećih vrsta unosa. Hvatajući iznimke, osigurava da sustav vraća korisne poruke o pogrešci bez prekidanja tijeka izvršenja.
expect() Iz biblioteke tvrdnji Chai, expect() se koristi u testu jedinice za provjeru izlaza prilagođenog alata. Neophodno je za testiranje radi li alat prema očekivanjima.

Razumijevanje prilagođenog alata i rukovanja pogreškama agenta u Langchain.js

U navedenom primjeru radimo s Langchain.js v2 kako bismo stvorili prilagođeni alat koji se integrira s Ollama jezični model. Glavna svrha alata je izvođenje jednostavne matematičke operacije: dodavanje 2 ulaznoj vrijednosti. Alat je izrađen korištenjem Langchaina alat funkcija, koja definira funkcije za višekratnu upotrebu koje agent može pozvati. Kako bi se osiguralo da alat radi ispravno, ulazna shema se provjerava sa Zod bibliotekom, jamčeći da je unos ispravan broj. To osigurava pravilno rukovanje pogreškama i sprječava kvar alata zbog nevažećih unosa.

Prilagođeni alat zatim se ugrađuje u agenta pomoću createToolCallingAgent funkcija. Ova naredba omogućuje agentu da po potrebi pozove alat, a agenta pokreće Ollama model koji je konfiguriran s određenim parametrima kao što je temperatura za kontrolu kreativnosti odgovora. Kako bi se olakšala glatka interakcija između agenta i alata, koristi se predložak upita za chat. Ovaj predložak organizira razgovor definiranjem različitih vrsta poruka, kao što su sistemske poruke, ljudski unos i rezervirana mjesta. Rezervirana mjesta, kao što je MessagesPlaceholder, omogućuju da razgovor bude dinamičan, s uključenim elementima poput povijesti razgovora.

Jedno od ključnih pitanja o kojima se govori u ovom primjeru je rukovanje pogreškama oko analize izlaza Langchain agenta. Poruka o pogrešci "parseResult on ToolCallingAgentOutputParser radi samo na izlazu ChatGeneration" proizlazi iz neusklađenosti između vrste izlaza koju očekuje parser i stvarnog generiranog izlaza. Kako bi riješio ovu pogrešku, prilagođeni alat je umotan u robusnu logiku, osiguravajući da su svi ulazi i izlazi u skladu s očekivanim formatima. Time dalje upravlja AgentExecutor klasa, koja koordinira izvođenje agenta i alata, osiguravajući da su upit i izlaz alata pravilno sinkronizirani.

Konačno, skripte implementiraju asinkrono izvođenje pomoću čekati, omogućujući sustavu da upravlja operacijama bez blokiranja drugih procesa. Agent čeka da alat vrati svoj rezultat prije nego što nastavi, osiguravajući da je odgovor točan i pravovremen. Dodatno, uključeni su jedinični testovi za provjeru funkcionalnosti alata, osiguravajući da dosljedno proizvodi ispravne rezultate. Ovi testovi ne samo da potvrđuju matematičku operaciju alata, već i provjeravaju koliko dobro obrađuje nevažeći unos, poboljšavajući ukupnu pouzdanost rješenja. Ovaj modularni dizajn otporan na pogreške čini skripte ponovno upotrebljivim i učinkovitima za različite aplikacije unutar Langchain.js.

Ispravljanje pogreške Langchain.js modularnim pristupom

Rješenje 1: JavaScript s modularnim pristupom i rukovanjem pogreškama pomoću 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 });

Poboljšano rukovanje pogreškama za Langchain.js Agent

2. rješenje: rukovanje pogreškama s jediničnim testovima za provjeru valjanosti izlaza prilagođenog alata u 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);
});

Istraživanje uloge agenata u integraciji Langchain.js i Ollama LLM

Kada radite s Langchain.js, integracija agenti s alatima i jezičnim modelima kao što je Ollama kritičan je aspekt izgradnje dinamičkih aplikacija. Agent vam omogućuje povezivanje prilagođenog alata, koji obavlja određene zadatke, s jezičnim modelom, koji obrađuje više konverzacijskih ili generativnih zadataka. Korištenjem agenata, programeri mogu automatizirati tijekove rada gdje model ne samo da generira odgovore, već također poziva alate za izvođenje izračuna ili obradu podataka.

Ključna komponenta u ovoj integraciji je createToolCallingAgent funkcija. Ova funkcija omogućuje agentu pokretanje određenih alata kada je to potrebno, osiguravajući da su zadaci dovršeni točno i učinkovito. Iako je primarni fokus često na stvaranju samog alata, jednako je važno razumjeti kako upravljati tijek rada agenta i izbjeći greške u analizi. Pogreške poput "parseResult on ToolCallingAgentOutputParser radi samo na izlazu ChatGeneration" obično se pojavljuju kada izlaz agenta nije kompatibilan sa sustavom za raščlanjivanje, naglašavajući potrebu za pravilnim usklađivanjem između izlaza agenta i očekivanog formata.

Korištenje brzih predložaka, kao što je ChatPromptTemplate, dodatno obogaćuje interakciju dopuštajući dinamičke poruke i rezervirana mjesta za kontekst. To omogućuje agentu da prilagodi svoje odgovore na temelju povijesti razgovora ili agentovog bloka za natuknice. Optimiziranje predložaka upita i osiguravanje da su izlazi agenta ispravno analizirani mogu spriječiti mnoge uobičajene pogreške, čineći vaše Langchain.js aplikacije pouzdanijima i učinkovitijima.

Često postavljana pitanja o Langchain.js, agentima i alatima

  1. Što je agent u Langchain.js?
  2. Agent je komponenta koja je u interakciji s alatima i jezičnim modelima za obavljanje specifičnih zadataka na temelju korisničkog upita. Koristi se createToolCallingAgent funkcija za pokretanje alata.
  3. Kako riješiti pogrešku "parseResult on ToolCallingAgentOutputParser"?
  4. Ova se pogreška pojavljuje kada je izlaz agenta nekompatibilan s parserom. Osigurajte da izlaz odgovara onome što parser očekuje i koristite a ChatGeneration izlazni format.
  5. Koja je svrha AgentExecutor?
  6. The AgentExecutor upravlja izvršavanjem agenta i njegovih alata, omogućujući vam pokretanje složenih radnih procesa u Langchain.js aplikacijama.
  7. Kako se ChatPromptTemplate raditi?
  8. ChatPromptTemplate organizira chat poruke u strukturiranom formatu, omogućujući umetanje dinamičkog sadržaja kao što je povijest chata i blok za pisanje agenta u tijek razgovora.
  9. Zašto je Zod koristi u alatu?
  10. Zod koristi se za provjeru valjanosti unosa, čime se osigurava da je unos u prilagođeni alat ispravne vrste (npr. broj), što smanjuje šanse za pogreške.

Završne misli o rukovanju pogreškama u Langchain.js

Rješavanje pogreške "parseResult on ToolCallingAgentOutputParser radi samo na izlazu ChatGeneration" zahtijeva pažljivo usklađivanje između izlaza vašeg agenta i njegovih očekivanih analiza. Pravilnim pristupom ova se pogreška može izbjeći.

Korištenjem odgovarajućih alata kao što je Zod za provjeru valjanosti i osiguravanjem da agenti, poput onih izrađenih s Ollama-om, pravilno rukuju ulazima i izlazima, možete stvoriti robusna rješenja u Langchain.js bez problema s raščlanjivanjem.

Izvori i reference za Langchain.js Rješavanje pogrešaka
  1. Razrađuje službenu Langchain dokumentaciju, koja pruža uvid u kreiranje alata i konfiguracije agenata. Langchain dokumentacija Unutra.
  2. Dalje objašnjava upotrebu Zoda za provjeru valjanosti unosa i njegovu primjenu u Langchain.js. Zod dokumentacija Unutra.
  3. Opisuje model jezika Ollama i njegovu implementaciju unutar prilagođenih agenata. Ollama LLM Unutra.