跳到主要内容
上下文工程是构建动态系统的实践,这些系统以正确的格式提供正确的信息和工具,以便AI应用程序能够完成任务。上下文可以从两个关键维度进行描述
  1. 可变性
  • 静态上下文:在执行期间不会更改的不可变数据(例如,用户元数据、数据库连接、工具)
  • 动态上下文:随应用程序运行而演变的 Mutable 数据(例如,对话历史、中间结果、工具调用观察)
  1. 生命周期
  • 运行时上下文:作用域为单个运行或调用的数据
  • 跨对话上下文:在多个对话或会话中持续存在的数据
运行时上下文指本地上下文:代码运行所需的数据和依赖项。它
  • 传递到LLM提示中的LLM上下文。
  • “上下文窗口”,即可以传递给LLM的最大token数量。
运行时上下文可用于优化LLM上下文。例如,您可以使用运行时上下文中的用户元数据来获取用户偏好,并将其输入到上下文窗口中。
LangGraph提供了三种管理上下文的方式,它结合了可变性和生命周期维度
上下文类型描述可变性生命周期
配置在运行开始时传递的数据静态单次运行
动态运行时上下文(状态)在单次运行期间演变的 Mutable 数据动态单次运行
动态跨对话上下文(存储)跨对话共享的持久数据动态跨对话

配置

配置用于不可变数据,例如用户元数据或API密钥。当您有在运行期间不会更改的值时使用此选项。 使用名为“configurable”的键指定配置,该键专门用于此目的。
await graph.invoke(
  { messages: [{ role: "user", content: "hi!" }] },
  { configurable: { user_id: "user_123" } } 
);

动态运行时上下文

动态运行时上下文表示在单次运行期间可以演变的 Mutable 数据,并通过LangGraph状态对象进行管理。这包括对话历史、中间结果以及从工具或LLM输出派生的值。在LangGraph中,状态对象充当运行期间的短期记忆
  • 在代理中
  • 在工作流程中
示例展示了如何将状态合并到代理提示中。代理的工具也可以访问状态,这些工具可以根据需要读取或更新状态。有关详细信息,请参阅工具调用指南
import { createAgent, createMiddleware } from "langchain";
import type { AgentState } from "langchain";
import * as z from "zod";

const CustomState = z.object({ 
  userName: z.string(),
});

const personalizedPrompt = createMiddleware({ 
  name: "PersonalizedPrompt",
  stateSchema: CustomState,
  wrapModelCall: (request, handler) => {
    const userName = request.state.userName || "User";
    const systemPrompt = `You are a helpful assistant. User's name is ${userName}`;
    return handler({ ...request, systemPrompt });
  },
});

const agent = createAgent({  
  model: "claude-sonnet-4-5-20250929",
  tools: [/* your tools here */],
  middleware: [personalizedPrompt] as const, 
});

await agent.invoke({
  messages: [{ role: "user", content: "hi!" }],
  userName: "John Smith",
});
开启记忆 有关如何启用记忆的更多详细信息,请参阅记忆指南。这是一个强大的功能,允许您在多次调用中保留代理的状态。否则,状态仅限于单次运行。

动态跨对话上下文

动态跨对话上下文表示跨多个对话或会话的持久、可变数据,并通过LangGraph存储进行管理。这包括用户配置文件、偏好和历史交互。LangGraph存储充当多次运行之间的长期记忆。这可用于读取或更新持久事实(例如,用户配置文件、偏好、先前的交互)。

另请参见


以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.