LangChain.js предлагает разработчикам бесплатный фреймворк для создания приложений, использующих возможности крупномасштабных языковых моделей (LLM). Этот фреймворк предоставляет набор составных строительных блоков, включая цепочки, агенты, извлекатели и память, для создания сложных приложений искусственного интеллекта.
Введение в LangChain.js
LangChain.js позволяет разработчикам создавать приложения, которые могут искать документы, вызывать API и решать многоступенчатые проблемы. Открытый SDK от OpenAI предоставляет возможности для завершения разговоров, но LangChain.js предлагает больше возможностей, включая цепочки запросов, управление контекстными окнами, векторизацию документов и создание агентских циклов.
Быстрый Старт с LangChain.js
Чтобы начать работать с LangChain.js, необходимо установить пакеты langchain и @langchain/openai с помощью npm. После установки можно создать базовую цепочку, используя класс ChatOpenAI и шаблон запроса ChatPromptTemplate. Затем можно создать цепочку, используя метод pipe и парсер выходных данных StringOutputParser.
import { ChatOpenAI } from "@langchain/openai";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { StringOutputParser } from "@langchain/core/output_parsers";
const model = new ChatOpenAI({ modelName: "gpt-4-turbo" });
const prompt = ChatPromptTemplate.fromMessages([
["system", "You are a technical writer. Write concise explanations."],
["user", "Explain {topic} in 3 sentences for {audience}."],
]);
const chain = prompt.pipe(model).pipe(new StringOutputParser());
const result = await chain.invoke({ topic: "WebSockets", audience: "junior developers" });
Использование RAG (Retrieval Augmented Generation)
LangChain.js также поддерживает RAG, технологию, которая позволяет генерировать текст на основе контекста и извлеченных документов. Для использования RAG необходимо создать векторное хранилище и извлекатель, а затем построить цепочку RAG.
import { RecursiveCharacterTextSplitter } from "langchain/text_splitter";
import { MemoryVectorStore } from "langchain/vectorstores/memory";
import { OpenAIEmbeddings } from "@langchain/openai";
const splitter = new RecursiveCharacterTextSplitter({ chunkSize: 1000, chunkOverlap: 200 });
const docs = await splitter.createDocuments([myDocumentText]);
const vectorStore = await MemoryVectorStore.fromDocuments(docs, new OpenAIEmbeddings());
const retriever = vectorStore.asRetriever({ k: 4 });
const combineDocsChain = await createStuffDocumentsChain({ llm: model, prompt: ChatPromptTemplate.fromMessages([["system", "Answer based on the following context:\n{context}"], ["user", ""]]) });
LangChain.js предлагает разработчикам мощный инструмент для создания приложений с искусственным интеллектом. С помощью этого фреймворка можно создавать сложные приложения, которые могут решать реальные проблемы и предоставлять пользователям более эффективный и удобный опыт.