Documentation Index
Fetch the complete documentation index at: https://nvd-54.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
上下文工程是构建动态系统的实践,以正确的格式提供正确的信息和工具,使 AI 应用能够完成任务。上下文可以沿两个关键维度进行表征:
- 按可变性:
- 静态上下文:在执行期间不会改变的不可变数据(例如用户元数据、数据库连接、工具)
- 动态上下文:随应用运行而演变的可变数据(例如对话历史、中间结果、工具调用观察结果)
- 按生命周期:
- 运行时上下文:限定在单次运行或调用中的数据
- 跨对话上下文:跨多个对话或会话持久化的数据
运行时上下文指的是本地上下文:你的代码运行所需的数据和依赖。它不指:
- LLM 上下文,即传入 LLM 提示的数据。
- “上下文窗口”,即可以传入 LLM 的最大 Token 数。
运行时上下文是你在智能体中传递数据的方式。与其将东西存储在全局状态中,你可以将值——如数据库连接、用户会话或配置——附加到上下文中,并在工具和中间件内访问它们。这保持了无状态、可测试和可复用性。例如,你可以使用运行时上下文中的用户元数据来获取用户偏好并将其输入到上下文窗口中。
LangGraph 提供三种管理上下文的方式,结合了可变性和生命周期两个维度:
| 上下文类型 | 描述 | 可变性 | 生命周期 |
|---|
| 配置 | 在运行开始时传入的数据 | 静态 | 单次运行 |
| 动态运行时上下文(状态) | 在单次运行期间演变的可变数据 | 动态 | 单次运行 |
| 动态跨对话上下文(存储) | 跨对话共享的持久化数据 | 动态 | 跨对话 |
配置用于不可变数据,如用户元数据或 API 密钥。当你有在运行中不会改变的值时使用它。
使用名为 “configurable” 的键来指定配置,该键专门用于此目的。
await graph.invoke(
{ messages: [{ role: "user", content: "hi!" }] },
{ configurable: { user_id: "user_123" } }
);
动态运行时上下文
动态运行时上下文代表可以在单次运行期间演变的可变数据,通过 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-6",
tools: [/* your tools here */],
middleware: [personalizedPrompt] as const,
});
await agent.invoke({
messages: [{ role: "user", content: "hi!" }],
userName: "John Smith",
});
import { z } from "zod/v4";
import { StateGraph, StateSchema, MessagesValue, START } from "@langchain/langgraph";
const CustomState = new StateSchema({
messages: MessagesValue,
extraField: z.number(),
});
const builder = new StateGraph(CustomState)
.addNode("node", async (state) => {
const messages = state.messages;
// ...
return {
extraField: state.extraField + 1,
};
})
.addEdge(START, "node");
const graph = builder.compile();
启用记忆
请参阅记忆指南了解如何启用记忆的更多详情。这是一个强大的功能,允许你跨多次调用持久化智能体的状态。否则,状态仅限于单次运行。
动态跨对话上下文
动态跨对话上下文代表跨多个对话或会话的持久化、可变数据,通过 LangGraph 存储管理。这包括用户配置文件、偏好和历史交互。LangGraph 存储充当跨多次运行的长期记忆。这可以用于读取或更新持久化的事实(例如用户配置文件、偏好、先前的交互)。
了解更多
连接这些文档到 Claude、VSCode 等工具,通过 MCP 获取实时解答。