主题
核心功能
(1) 链式调用(Chains)
将多个操作(如调用 LLM、数据处理、工具调用等)串联起来,形成一个完整的任务流程。
常见链类型
LLMChain
:最基本的链,用于调用 LLM。SequentialChain
:按顺序执行多个链。
示例
javascript
import { LLMChain, PromptTemplate, OpenAI } from "langchain";
const llm = new OpenAI({ temperature: 0.7 });
const prompt = new PromptTemplate({
inputVariables: ["product"],
template: "What is a good name for a company that makes {product}?",
});
const chain = new LLMChain({ llm, prompt });
const result = await chain.call({ product: "colorful socks" });
console.log(result.text);
(2) 记忆(Memory)
用于在多轮对话中存储和传递上下文信息。
常见记忆类型
ConversationBufferMemory
:存储完整的对话历史。ConversationSummaryMemory
:存储对话的摘要。
示例:
javascript
import { ConversationBufferMemory } from "langchain/memory";
const memory = new ConversationBufferMemory();
await memory.saveContext({ input: "Hi!" }, { output: "Hello! How can I help you?" });
console.log(await memory.loadMemoryVariables({}));
(3) 工具集成(Tools)
允许 LLM 调用外部工具(如搜索引擎、API、数据库等)。
常见工具
SerpAPI
:调用搜索引擎。Calculator
:执行数学计算。
示例
javascript
import { initializeAgentExecutor, Tool, SerpAPI } from "langchain/tools";
const tools = [new SerpAPI()];
const executor = await initializeAgentExecutor(tools, "zero-shot-react-description");
const result = await executor.run("What is LangChain?");
console.log(result);
(4) 数据加载(Document Loaders)
从不同来源(如文件、网页、数据库)加载数据。
常见加载器:
TextLoader
:加载文本文件。WebBaseLoader
:加载网页内容。
示例
javascript
import { TextLoader } from "langchain/document_loaders";
const loader = new TextLoader("example.txt");
const docs = await loader.load();
console.log(docs);
(5) 代理(Agents)
代理是一个高级组件,可以根据输入动态选择工具或链。
常见代理类型
ZeroShotAgent
:基于零样本学习的代理。ConversationalAgent
:支持对话的代理。
示例
javascript
import { initializeAgentExecutor, Tool, SerpAPI } from "langchain/tools";
const tools = [new SerpAPI()];
const executor = await initializeAgentExecutor(tools, "zero-shot-react-description");
const result = await executor.run("What is LangChain?");
console.log(result);
(6) 提示模板(Prompt Templates)
用于定义 LLM 的输入格式,使得输入更加结构化和可复用。
示例
javascript
import { PromptTemplate } from "langchain/prompts";
const template = "What is a good name for a company that makes {product}?";
const prompt = new PromptTemplate({ template, inputVariables: ["product"] });
const formattedPrompt = await prompt.format({ product: "colorful socks" });
console.log(formattedPrompt);
(7) 回调(Callbacks)
用于在链式调用过程中执行自定义逻辑(如日志记录、调试)。
示例
javascript
import { CallbackManager } from "langchain/callbacks";
const callbackManager = CallbackManager.fromHandlers({
handleLLMStart: async (llm, prompts) => {
console.log("LLM started:", prompts);
},
});
const llm = new OpenAI({ callbackManager });
await llm.call("Hello, world!");