Genkit এর সাথে LangChain ব্যবহার করা

ইনস্টলেশন

npm i --save genkitx-langchain

ব্যবহার

আপনি জেনকিট প্রবাহে বেশিরভাগ ল্যাংচেইন চেইন বা ইউটিলিটি ব্যবহার করতে পারেন। নীচের উদাহরণটি একটি সাদামাটা RAG নমুনা তৈরি করতে ল্যাংচেইন পুনরুদ্ধারকারী, নথি লোডার এবং চেইন নির্মাণ ব্যবহার করে।

import { initializeGenkit } from '@genkit-ai/core';
import { defineFlow, run, startFlowsServer } from '@genkit-ai/flow';
import { GoogleVertexAIEmbeddings } from '@langchain/community/embeddings/googlevertexai';
import { GoogleVertexAI } from '@langchain/community/llms/googlevertexai';
import { StringOutputParser } from '@langchain/core/output_parsers';
import { PromptTemplate } from '@langchain/core/prompts';
import {
  RunnablePassthrough,
  RunnableSequence,
} from '@langchain/core/runnables';
import { GenkitTracer } from 'genkitx-langchain';
import { PDFLoader } from 'langchain/document_loaders/fs/pdf';
import { formatDocumentsAsString } from 'langchain/util/document';
import { MemoryVectorStore } from 'langchain/vectorstores/memory';
import * as z from 'zod';

import config from './genkit.config';

initializeGenkit(config);

const vectorStore = new MemoryVectorStore(new GoogleVertexAIEmbeddings());
const model = new GoogleVertexAI();

export const indexPdf = defineFlow(
  { name: 'indexPdf', inputSchema: z.string(), outputSchema: z.void() },
  async (filePath) => {
    const docs = await run('load-pdf', async () => {
      return await new PDFLoader(filePath).load();
    });
    await run('index', async () => {
      vectorStore.addDocuments(docs);
    });
  }
);

const prompt =
  PromptTemplate.fromTemplate(`Answer the question based only on the following context:
{context}

Question: {question}`);
const retriever = vectorStore.asRetriever();

export const pdfQA = defineFlow(
  { name: 'pdfQA', inputSchema: z.string(), outputSchema: z.string() },
  async (question) => {
    const chain = RunnableSequence.from([
      {
        context: retriever.pipe(formatDocumentsAsString),
        question: new RunnablePassthrough(),
      },
      prompt,
      model,
      new StringOutputParser(),
    ]);

    return await chain.invoke(question, { callbacks: [new GenkitTracer()] });
  }
);

startFlowsServer();

উল্লেখ্য যে উদাহরণটি genkitx-langchain প্লাগইন দ্বারা প্রদত্ত GenkitTracer ব্যবহার করে Genkit অবজারবেবিলিটি বৈশিষ্ট্য সহ ল্যাংচেইন চেইনকে যন্ত্র তৈরি করতে। এখন আপনি যখন Dev UI থেকে বা উৎপাদনে প্রবাহ চালাবেন, তখন আপনি LangChain চেইনে সম্পূর্ণ দৃশ্যমানতা পাবেন।

এছাড়াও মনে রাখবেন যে ল্যাংচেইন উপাদানগুলি জেনকিট আদিম (মডেল, নথি, পুনরুদ্ধার ইত্যাদি) এর সাথে আন্তঃপ্রক্রিয়াযোগ্য নয়।

মূল্যায়নকারী (প্রিভিউ)

আপনি Genkit এর সাথে LangChain মূল্যায়নকারীদের ব্যবহার করতে পারেন। langchain প্লাগইন থেকে আপনি কোন মূল্যায়নকারীদের চান তা কনফিগার করুন এবং তারপর মানক মূল্যায়ন প্রক্রিয়া অনুসরণ করুন:

import { langchain } from 'genkitx-langchain';

configureGenkit({
  plugins: [
    langchain({
      evaluators: {
        judge: gemini15Flash,
        criteria: ['harmfulness', 'maliciousness'],
      },
    }),
  ],
});