Skip to main content
上下文工程是构建动态系统的实践,旨在以正确的格式提供正确的信息和工具,使AI应用程序能够完成任务。上下文可以从两个关键维度进行描述:
  1. 可变性划分:
    • 静态上下文:在执行过程中不会改变的不可变数据(例如,用户元数据、数据库连接、工具)
    • 动态上下文:随着应用程序运行而演变的可变数据(例如,对话历史、中间结果、工具调用观察结果)
  2. 生命周期划分:
    • 运行时上下文:作用域限于单次运行或调用的数据
    • 跨对话上下文:在多个对话或会话中持续存在的数据
运行时上下文指的是本地上下文:你的代码运行所需的数据和依赖项。它指:
  • LLM上下文,即传递给LLM提示词的数据。
  • “上下文窗口”,即可以传递给LLM的最大令牌数。
运行时上下文是你在代理中串联数据的方式。你可以将值(如数据库连接、用户会话或配置)附加到上下文,并在工具和中间件中访问它们,而不是将内容存储在全局状态中。这使得内容保持无状态、可测试和可重用。例如,你可以使用运行时上下文中的用户元数据来获取用户偏好,并将其输入到上下文窗口中。
LangGraph提供了三种管理上下文的方式,结合了可变性和生命周期维度:

配置

配置用于不可变数据,如用户元数据或API密钥。当你拥有在运行过程中不会改变的值时使用此方式。 使用名为 “configurable” 的键来指定配置,该键为此目的保留。

动态运行时上下文

动态运行时上下文代表在单次运行期间可以演变的可变数据,通过LangGraph状态对象进行管理。这包括对话历史、中间结果以及从工具或LLM输出派生的值。在LangGraph中,状态对象在运行期间充当短期记忆
示例展示了如何将状态整合到代理的提示词中。代理的工具也可以访问状态,它们可以根据需要读取或更新状态。详情请参阅工具调用指南
启用记忆 有关如何启用记忆的更多详细信息,请参阅记忆指南。这是一个强大的功能,允许你跨多次调用持久化代理的状态。否则,状态仅作用于单次运行。

动态跨对话上下文

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

了解更多