Memperbaiki Kesalahan ToolCallingAgentOutputParser Langchain.js dengan Ollama LLM dan Alat Kustom

Temp mail SuperHeros
Memperbaiki Kesalahan ToolCallingAgentOutputParser Langchain.js dengan Ollama LLM dan Alat Kustom
Memperbaiki Kesalahan ToolCallingAgentOutputParser Langchain.js dengan Ollama LLM dan Alat Kustom

Memahami dan Memperbaiki Kesalahan ToolCallingAgentOutputParser di Langchain.js

Saat bekerja dengan Langchain.js v2, pengembang sering kali bertujuan untuk membuat agen yang efisien menggunakan alat khusus dan model bahasa seperti Ollama. Namun, pengintegrasian komponen-komponen ini terkadang dapat menyebabkan kesalahan yang sulit untuk di-debug.

Salah satu kesalahan tersebut adalah "parseResult pada ToolCallingAgentOutputParser hanya berfungsi pada keluaran ChatGeneration," yang dapat terjadi saat membuat alat kustom dalam kerangka agen. Memahami akar penyebab masalah ini sangat penting untuk memastikan agen dan alat berfungsi dengan benar.

Artikel ini mengeksplorasi implementasi sederhana alat kustom yang menambahkan 2 ke input angka, menggunakan createToolCallingAgent Langchain dan model Ollama. Dengan menganalisis kesalahan dan konteksnya, kita dapat lebih memahami cara memecahkan masalah tersebut.

Bagian berikut akan memandu Anda memahami kode, menjelaskan kesalahan, dan memberikan solusi untuk mengatasi masalah ini. Baik Anda baru menggunakan Langchain.js atau sudah berpengalaman, panduan ini akan membantu Anda mengatasi masalah ini secara efisien.

Memerintah Contoh Penggunaan
tool() Fungsi dari Langchain.js ini mendefinisikan alat khusus yang melakukan operasi. Dalam artikel ini, digunakan untuk membuat alat yang menambahkan 2 ke nomor masukan, membungkus logika dalam struktur yang mudah dipanggil.
z.object() Bagian dari perpustakaan Zod, digunakan untuk validasi skema di Langchain. Hal ini memastikan bahwa masukan ke alat kustom adalah angka, memberikan validasi masukan yang kuat untuk mencegah kesalahan selama eksekusi.
createToolCallingAgent() Perintah ini membuat agen yang dapat memanggil alat yang ditentukan sebagai respons terhadap pertanyaan pengguna. Ini adalah kunci untuk mengintegrasikan alat dengan model bahasa seperti Ollama, sehingga memungkinkan untuk memanggil alat selama percakapan.
ChatPromptTemplate.fromMessages() Digunakan untuk menghasilkan template prompt obrolan dengan placeholder. Templat ini mengatur berbagai jenis pesan (sistem, manusia, placeholder) untuk digunakan agen, sehingga meningkatkan alur percakapannya.
MessagesPlaceholder Bertindak sebagai pengganti dalam templat perintah untuk konten dinamis, seperti riwayat obrolan atau papan awal agen. Hal ini memungkinkan konteks percakapan dimasukkan secara dinamis selama eksekusi.
AgentExecutor() Kelas ini mengelola eksekusi agen dan alat. Dalam contoh ini, ini membantu dalam menjalankan kueri melalui agen dan mengumpulkan hasil dari keluaran alat.
await agentExecutor.invoke() Digunakan untuk menjalankan kueri melalui agen dan menunggu hasilnya secara asinkron. Hal ini penting untuk berinteraksi dengan model dan alat bahasa, karena memastikan kode menunggu hingga operasi selesai sebelum melanjutkan.
try-catch Struktur penanganan kesalahan ini digunakan dalam alat kustom untuk menangkap jenis masukan yang tidak valid. Dengan menangkap pengecualian, ini memastikan bahwa sistem mengembalikan pesan kesalahan yang berguna tanpa mengganggu alur eksekusi.
expect() Dari perpustakaan pernyataan Chai, ekspektasi() digunakan dalam pengujian unit untuk memverifikasi keluaran alat kustom. Penting untuk menguji apakah alat berfungsi sesuai harapan.

Memahami Alat Kustom dan Penanganan Kesalahan Agen di Langchain.js

Dalam contoh yang diberikan, kami bekerja dengan Langchain.js v2 untuk membuat alat khusus yang terintegrasi dengan Ollama model bahasa. Tujuan utama alat ini adalah untuk melakukan operasi matematika sederhana: menambahkan 2 ke nilai masukan. Alat ini dibuat menggunakan Langchain alat function, yang mendefinisikan fungsi yang dapat digunakan kembali yang dapat dipanggil oleh agen. Untuk memastikan alat berfungsi dengan benar, skema masukan divalidasi dengan perpustakaan Zod, menjamin bahwa masukan adalah angka yang valid. Hal ini memastikan penanganan kesalahan yang tepat dan mencegah alat gagal karena masukan yang tidak valid.

Alat kustom kemudian dimasukkan ke dalam agen menggunakan buatToolCallingAgent fungsi. Perintah ini memungkinkan agen untuk memanggil alat saat diperlukan, dan agen didukung oleh model Ollama, yang dikonfigurasi dengan parameter tertentu seperti suhu untuk mengontrol kreativitas respons. Untuk memfasilitasi kelancaran interaksi antara agen dan alat, templat prompt obrolan digunakan. Templat ini mengatur percakapan dengan menentukan berbagai jenis pesan, seperti pesan sistem, masukan manusia, dan placeholder. Placeholder, seperti Placeholder Pesan, biarkan percakapan menjadi dinamis, dengan menyertakan elemen seperti riwayat obrolan.

Salah satu masalah utama yang dibahas dalam contoh ini adalah penanganan kesalahan di sekitar penguraian keluaran agen Langchain. Pesan kesalahan "parseResult pada ToolCallingAgentOutputParser hanya berfungsi pada keluaran ChatGeneration" berasal dari ketidakcocokan antara jenis keluaran yang diharapkan oleh parser dan keluaran aktual yang dihasilkan. Untuk menangani kesalahan ini, alat kustom dibungkus dengan logika yang kuat, memastikan bahwa semua input dan output sesuai dengan format yang diharapkan. Hal ini selanjutnya dikelola oleh Agen Pelaksana kelas, yang mengoordinasikan eksekusi agen dan alat, memastikan bahwa kueri dan keluaran alat disinkronkan dengan benar.

Terakhir, skrip mengimplementasikan eksekusi asinkron menggunakan menunggu, memungkinkan sistem menangani operasi tanpa memblokir proses lain. Agen menunggu alat tersebut mengembalikan hasilnya sebelum melanjutkan, memastikan bahwa responsnya akurat dan tepat waktu. Selain itu, pengujian unit disertakan untuk memvalidasi fungsionalitas alat, memastikan bahwa alat tersebut secara konsisten menghasilkan keluaran yang benar. Pengujian ini tidak hanya mengkonfirmasi operasi matematis alat tersebut tetapi juga memeriksa seberapa baik alat tersebut menangani masukan yang tidak valid, sehingga meningkatkan keandalan solusi secara keseluruhan. Desain modular dan tahan kesalahan ini membuat skrip dapat digunakan kembali dan efektif untuk berbagai aplikasi dalam Langchain.js.

Memperbaiki Kesalahan Langchain.js dengan Pendekatan Modular

Solusi 1: JavaScript dengan pendekatan modular dan penanganan kesalahan menggunakan Langchain.js dan 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 });

Penanganan Kesalahan yang Ditingkatkan untuk Agen Langchain.js

Solusi 2: Penanganan kesalahan dengan pengujian unit untuk memvalidasi keluaran alat khusus di 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);
});

Menjelajahi Peran Agen dalam Integrasi Langchain.js dan Ollama LLM

Saat bekerja dengan Langchain.js, mengintegrasikan agen dengan alat dan model bahasa seperti Ollama merupakan aspek penting dalam membangun aplikasi dinamis. Agen memungkinkan Anda menghubungkan alat kustom, yang melakukan tugas tertentu, ke model bahasa, yang menangani lebih banyak tugas percakapan atau generatif. Dengan menggunakan agen, pengembang dapat mengotomatiskan alur kerja di mana model tidak hanya menghasilkan respons tetapi juga memanggil alat untuk melakukan penghitungan atau pemrosesan data.

Komponen kunci dalam integrasi ini adalah buatToolCallingAgent fungsi. Fungsi ini memungkinkan agen memicu alat tertentu bila diperlukan, memastikan bahwa tugas diselesaikan secara akurat dan efisien. Meskipun fokus utamanya sering kali adalah pada pembuatan alat itu sendiri, memahami cara mengelola alur kerja agen dan menghindari kesalahan penguraian juga sama pentingnya. Kesalahan seperti "parseResult pada ToolCallingAgentOutputParser hanya berfungsi pada keluaran ChatGeneration" biasanya terjadi ketika keluaran agen tidak kompatibel dengan sistem penguraian, sehingga menyoroti perlunya penyelarasan yang tepat antara keluaran agen dan format yang diharapkan.

Penggunaan template prompt, seperti Templat Prompt Obrolan, semakin memperkaya interaksi dengan mengizinkan pesan dinamis dan placeholder konteks. Hal ini memungkinkan agen untuk menyesuaikan tanggapannya berdasarkan riwayat obrolan atau catatan awal agen. Mengoptimalkan templat prompt dan memastikan keluaran agen diurai dengan benar dapat mencegah banyak kesalahan umum, menjadikan aplikasi Langchain.js Anda lebih andal dan efisien.

Pertanyaan Umum Tentang Langchain.js, Agen, dan Alat

  1. Apa itu agen di Langchain.js?
  2. Agen adalah komponen yang berinteraksi dengan alat dan model bahasa untuk melakukan tugas tertentu berdasarkan permintaan pengguna. Ini menggunakan createToolCallingAgent berfungsi untuk memicu alat.
  3. Bagaimana Anda mengatasi kesalahan "parseResult pada ToolCallingAgentOutputParser"?
  4. Kesalahan ini terjadi ketika keluaran agen tidak kompatibel dengan parser. Pastikan output sesuai dengan apa yang diharapkan parser dan gunakan a ChatGeneration format keluaran.
  5. Apa tujuan dari AgentExecutor?
  6. Itu AgentExecutor mengelola eksekusi agen dan alatnya, memungkinkan Anda menjalankan alur kerja yang kompleks di aplikasi Langchain.js.
  7. Bagaimana caranya ChatPromptTemplate bekerja?
  8. ChatPromptTemplate mengatur pesan obrolan dalam format terstruktur, memungkinkan konten dinamis seperti riwayat obrolan dan papan awal agen untuk dimasukkan ke dalam alur percakapan.
  9. Mengapa demikian Zod digunakan pada alat tersebut?
  10. Zod digunakan untuk validasi masukan, memastikan bahwa masukan ke alat kustom adalah jenis yang benar (misalnya angka), yang mengurangi kemungkinan kesalahan.

Pemikiran Akhir tentang Penanganan Kesalahan di Langchain.js

Memecahkan kesalahan "parseResult pada ToolCallingAgentOutputParser hanya berfungsi pada keluaran ChatGeneration" memerlukan penyelarasan yang cermat antara keluaran agen Anda dan ekspektasi penguraiannya. Dengan pendekatan yang tepat, kesalahan ini bisa dihindari.

Dengan menggunakan alat yang sesuai seperti Zod untuk validasi dan memastikan bahwa agen, seperti yang dibangun dengan Ollama, menangani input dan output dengan benar, Anda dapat membuat solusi yang kuat di Langchain.js tanpa mengalami masalah penguraian.

Sumber dan Referensi untuk Resolusi Kesalahan Langchain.js
  1. Menguraikan dokumentasi resmi Langchain, yang memberikan wawasan tentang pembuatan alat dan konfigurasi agen. Dokumentasi Langchain Di dalam.
  2. Menjelaskan lebih lanjut penggunaan Zod untuk validasi input dan penerapannya di Langchain.js. Dokumentasi Zod Di dalam.
  3. Menjelaskan model bahasa Ollama dan implementasinya dalam agen kustom. Ollama LLM Di dalam.