Langchain.js:n ToolCallingAgentOutputParser-virheen korjaaminen Ollama LLM:n ja mukautetun työkalun avulla

Temp mail SuperHeros
Langchain.js:n ToolCallingAgentOutputParser-virheen korjaaminen Ollama LLM:n ja mukautetun työkalun avulla
Langchain.js:n ToolCallingAgentOutputParser-virheen korjaaminen Ollama LLM:n ja mukautetun työkalun avulla

ToolCallingAgentOutputParser-virheiden ymmärtäminen ja korjaaminen Langchain.js:ssa

Langchain.js v2:n kanssa työskenteleessään kehittäjät pyrkivät usein luomaan tehokkaita agentteja käyttämällä mukautettuja työkaluja ja kielimalleja, kuten Ollama. Näiden komponenttien integrointi voi kuitenkin joskus johtaa virheisiin, joita on vaikea korjata.

Yksi tällainen virhe on "parseResult on ToolCallingAgentOutputParser toimii vain ChatGeneration-ulostulossa", joka voi tapahtua luotaessa mukautettua työkalua agenttikehyksen sisällä. Tämän ongelman perimmäisen syyn ymmärtäminen on ratkaisevan tärkeää, jotta agentti ja työkalu toimivat oikein.

Tässä artikkelissa tarkastellaan mukautetun työkalun yksinkertaista toteutusta, joka lisää numeron syöttöön 2:n käyttämällä Langchainin createToolCallingAgentia ja Ollama-mallia. Analysoimalla virhettä ja sen kontekstia voimme paremmin ymmärtää, kuinka se voidaan ratkaista.

Seuraavissa osissa opastetaan koodin läpi, selitetään virhe ja tarjotaan ratkaisuja tämän ongelman ratkaisemiseksi. Oletpa sitten uusi Langchain.js:n käyttäjä tai kokenut, tämä opas auttaa sinua pääsemään tämän ongelman ohi tehokkaasti.

Komento Käyttöesimerkki
tool() Tämä Langchain.js:n toiminto määrittää mukautetun työkalun, joka suorittaa toiminnon. Tässä artikkelissa sitä käytetään työkalun luomiseen, joka lisää syötenumeroon 2 ja kääri logiikan helposti kutsuttavaan rakenteeseen.
z.object() Osa Zod-kirjastoa, jota käytetään skeeman validointiin Langchainissa. Tämä varmistaa, että mukautetun työkalun syöte on numero, mikä tarjoaa vahvan syötteen validoinnin estämään virheet suorituksen aikana.
createToolCallingAgent() Tämä komento luo agentin, joka voi kutsua määritettyjä työkaluja vastauksena käyttäjän kyselyihin. Se on avain työkalujen integroimiseen Ollaman kaltaisiin kielimalleihin, mikä mahdollistaa työkalujen käyttämisen keskustelun aikana.
ChatPromptTemplate.fromMessages() Käytetään chat-kehotemallin luomiseen paikkamerkkien kanssa. Tämä malli järjestää erityyppisiä viestejä (järjestelmä, ihminen, paikkamerkit) agentin käytettäväksi, mikä parantaa sen keskustelukulkua.
MessagesPlaceholder Toimii paikkamerkkinä dynaamisen sisällön, kuten keskusteluhistorian tai agentin muistilapun, kehotemallissa. Tämä mahdollistaa keskustelukontekstin lisäämisen dynaamisesti suorituksen aikana.
AgentExecutor() Tämä luokka hallitsee agenttien ja työkalujen suorittamista. Esimerkissä se auttaa kyselyn suorittamisessa agentin läpi ja tuloksen keräämisessä työkalun lähdöstä.
await agentExecutor.invoke() Käytetään kyselyn suorittamiseen agentin läpi ja tuloksen odottamiseen asynkronisesti. Tämä on ratkaisevan tärkeää vuorovaikutuksessa kielimallien ja työkalujen kanssa, koska se varmistaa, että koodi odottaa toiminnon valmistumista ennen siirtymistä.
try-catch Tätä virheenkäsittelyrakennetta käytetään mukautetussa työkalussa virheellisten syöttötyyppien havaitsemiseen. Sieppaamalla poikkeuksia se varmistaa, että järjestelmä palauttaa hyödyllisiä virheilmoituksia katkaisematta suorituskulkua.
expect() Chain väitekirjastosta expect() käytetään yksikkötestissä mukautetun työkalun tulosteen tarkistamiseen. Se on välttämätöntä testattaessa, toimiiko työkalu odotetulla tavalla.

Langchain.js:n mukautetun työkalun ja agentin virheiden käsittelyn ymmärtäminen

Esitetyssä esimerkissä työskentelemme Langchain.js v2:n kanssa luodaksemme mukautetun työkalun, joka integroituu Ollama kielimalli. Työkalun päätarkoitus on suorittaa yksinkertainen matemaattinen operaatio: 2 lisääminen syöttöarvoon. Työkalu on rakennettu Langchainin avulla työkalu funktio, joka määrittää uudelleenkäytettäviä toimintoja, jotka agentti voi kutsua. Jotta työkalu toimii oikein, syöttöskeema tarkistetaan Zod-kirjastolla, mikä takaa, että syöte on kelvollinen numero. Tämä varmistaa asianmukaisen virheiden käsittelyn ja estää työkalua epäonnistumasta virheellisten syötteiden vuoksi.

Mukautettu työkalu sisällytetään sitten agenttiin käyttämällä CreateToolCallingAgent toiminto. Tämän komennon avulla agentti voi kutsua työkalua tarvittaessa, ja agentti saa virtansa Ollama-mallista, joka on määritetty erityisillä parametreilla, kuten lämpötilalla, ohjaamaan vastausten luovuutta. Agentin ja työkalun sujuvan vuorovaikutuksen helpottamiseksi käytetään chat-kehotemallia. Tämä malli järjestää keskustelun määrittelemällä erityyppisiä viestejä, kuten järjestelmäviestejä, ihmisen syötteitä ja paikkamerkkejä. Paikkamerkit, kuten ViestitPlaceholder, salli keskustelun olla dynaamista ja sisältää elementtejä, kuten chat-historian.

Yksi tässä esimerkissä käsitellyistä keskeisistä ongelmista on Langchain-agentin tulosten jäsennyksen virheiden käsittely. Virhesanoma "parseResult on ToolCallingAgentOutputParser toimii vain ChatGeneration-ulostulossa" johtuu jäsentimen odottaman tulosteen ja todellisen luodun lähdön välisestä yhteensopimattomuudesta. Tämän virheen käsittelemiseksi mukautettu työkalu on kääritty vankkaan logiikkaan, mikä varmistaa, että kaikki tulot ja lähdöt ovat odotettujen muotojen mukaisia. Tätä hallinnoi edelleen AgentExecutor luokka, joka koordinoi agentin ja työkalujen suorittamista varmistaen, että kysely ja työkalun tulos ovat oikein synkronoituja.

Lopuksi komentosarjat toteuttavat asynkronisen suorituksen käyttämällä odottaa, jolloin järjestelmä voi käsitellä toimintoja estämättä muita prosesseja. Agentti odottaa, että työkalu palauttaa tuloksensa ennen jatkamista ja varmistaa, että vastaus on sekä tarkka että oikea-aikainen. Lisäksi mukana on yksikkötestejä työkalun toimivuuden vahvistamiseksi, jotta varmistetaan, että se tuottaa johdonmukaisesti oikean tuloksen. Nämä testit eivät ainoastaan ​​vahvista työkalun matemaattista toimintaa, vaan myös tarkistavat, kuinka hyvin se käsittelee virheellisiä syötteitä, mikä parantaa ratkaisun yleistä luotettavuutta. Tämän modulaarisen ja virheettömän rakenteen ansiosta skriptit ovat uudelleenkäytettäviä ja tehokkaita erilaisissa Langchain.js:n sovelluksissa.

Langchain.js-virheen korjaaminen modulaarisella lähestymistavalla

Ratkaisu 1: JavaScript modulaarisella lähestymistavalla ja virheiden käsittelyllä Langchain.js:n ja Ollama LLM:n avulla

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 });

Parannettu virheiden käsittely Langchain.js-agentille

Ratkaisu 2: Virheiden käsittely yksikkötesteillä mukautetun työkalun tulosteen vahvistamiseksi Langchain.js:ssa

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);
});

Agenttien roolin tutkiminen Langchain.js- ja Ollama LLM -integraatiossa

Kun työskentelet Langchain.js:n kanssa, integrointi agentit Ollaman kaltaisilla työkaluilla ja kielimalleilla on kriittinen osa dynaamisten sovellusten rakentamista. Agentin avulla voit yhdistää räätälöidyn työkalun, joka suorittaa tiettyjä tehtäviä, kielimalliin, joka käsittelee enemmän keskustelullisia tai luovia tehtäviä. Agenttien avulla kehittäjät voivat automatisoida työnkulkuja, joissa malli ei ainoastaan ​​luo vastauksia, vaan myös kutsuu työkaluja suorittamaan laskelmia tai tietojenkäsittelyä.

Tämän integraation avainkomponentti on CreateToolCallingAgent toiminto. Tämän toiminnon avulla agentti laukaisee tiettyjä työkaluja tarvittaessa ja varmistaa, että tehtävät suoritetaan tarkasti ja tehokkaasti. Vaikka pääpaino on usein itse työkalun luomisessa, on yhtä tärkeää ymmärtää, miten agentin työnkulkua voidaan hallita ja välttää jäsennysvirheet. Virheitä, kuten "parseResult on ToolCallingAgentOutputParser toimii vain ChatGeneration-ulostulossa", esiintyy yleensä, kun agentin tulos ei ole yhteensopiva jäsennysjärjestelmän kanssa, mikä korostaa tarvetta kohdistaa agentin tuloste ja odotettu muoto.

Käytä kehotemalleja, kuten ChatPromptTemplate, rikastaa vuorovaikutusta entisestään sallimalla dynaamiset viestit ja kontekstin paikkamerkit. Näin agentti voi muokata vastauksiaan keskusteluhistorian tai edustajan muistilapun perusteella. Kehotusmallien optimointi ja agentin tulosteiden oikein jäsentäminen voi estää monia yleisiä virheitä, mikä tekee Langchain.js-sovelluksistasi luotettavampia ja tehokkaampia.

Usein kysyttyjä kysymyksiä Langchain.js:stä, agenteista ja työkaluista

  1. Mikä on agentti Langchain.js:ssa?
  2. Agentti on komponentti, joka on vuorovaikutuksessa työkalujen ja kielimallien kanssa suorittaakseen tiettyjä tehtäviä käyttäjän kyselyn perusteella. Se käyttää createToolCallingAgent toiminto työkalujen laukaisemiseksi.
  3. Kuinka ratkaiset "parseResult on ToolCallingAgentOutputParser" -virheen?
  4. Tämä virhe ilmenee, kun agentin tulos ei ole yhteensopiva jäsentimen kanssa. Varmista, että tulos vastaa jäsentimen odotuksia, ja käytä a ChatGeneration tulostusmuoto.
  5. Mikä on tarkoitus AgentExecutor?
  6. The AgentExecutor hallitsee agentin ja sen työkalujen suorittamista, jolloin voit suorittaa monimutkaisia ​​työnkulkuja Langchain.js-sovelluksissa.
  7. Miten ChatPromptTemplate työtä?
  8. ChatPromptTemplate järjestää chat-viestit jäsenneltyyn muotoon, mikä mahdollistaa dynaamisen sisällön, kuten keskusteluhistorian ja agentin muistilapun, lisäämisen keskusteluvirtaan.
  9. Miksi on Zod käytetään työkalussa?
  10. Zod käytetään syötteen validointiin varmistaen, että mukautetun työkalun syöte on oikeaa tyyppiä (esim. numero), mikä vähentää virheiden mahdollisuuksia.

Viimeisiä ajatuksia Langchain.js:n virheiden käsittelystä

"ParseResult on ToolCallingAgentOutputParser toimii vain ChatGeneration-tulosteessa" -virheen ratkaiseminen vaatii huolellista kohdistamista agenttisi tulosteen ja sen jäsennysodotusten välillä. Oikealla lähestymistavalla tämä virhe voidaan välttää.

Käyttämällä asianmukaisia ​​työkaluja, kuten Zod, validointiin ja varmistamalla, että agentit, kuten ne, jotka on rakennettu Ollamalla, käsittelevät syötteitä ja lähtöjä oikein, voit luoda kestäviä ratkaisuja Langchain.js:ssä ilman jäsennysongelmia.

Lähteet ja viitteet Langchain.js-virheenratkaisuun
  1. Käsittelee virallista Langchain-dokumentaatiota, joka tarjoaa tietoa työkalujen luomisesta ja agenttien kokoonpanoista. Langchainin dokumentaatio Sisällä.
  2. Lisäksi selitetään Zodin käyttöä syötteiden validoinnissa ja sen soveltamista Langchain.js:ssä. Zodin dokumentaatio Sisällä.
  3. Kuvaa Ollama-kielimallia ja sen toteutusta mukautetuissa agenteissa. Ollama Oy Sisällä.