Skip to content

核心功能

(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!");