通过内存,AI 代理可以记住来自对话中早期或以前对话的信息。 这样,代理就可以提供上下文感知响应,并随着时间的推移生成个性化体验。 使用完全托管的 Postgres OLTP 数据库 Databricks Lakebase 管理聊天状态和历史记录。
要求
- 在工作区中启用 Databricks 应用。 请参阅 设置 Databricks Apps 工作区和开发环境。
- Lakebase 实例,请参阅 创建和管理数据库实例。
短期与长期记忆
短期记忆负责捕获在单个会话中的上下文,而长期记忆负责提取和存储在多个会话中的关键信息。 可以使用任一种类型的内存或两种类型的内存来构建代理。
| 短期内存 | 长期记忆 |
|---|---|
| 使用线程 ID 和检查点在单个会话中捕获上下文 维护会话中后续问题的上下文 |
跨多个会话自动提取和存储密钥见解 基于过去的首选项个性化交互 构建一个关于用户的知识库,以随时间推移改进响应 |
开始
若要在 Databricks Apps 上创建具有内存的代理,请克隆一个预构建的应用模板,并遵循 “创作 AI 代理”中所述的开发工作流,并将其部署到应用上。 以下模板演示如何使用常用框架向代理添加短期和长期内存。
LangGraph
克隆 代理-langgraph 高级 模板,以生成具有短期内存和长期内存的 LangGraph 代理。 该模板使用 LangGraph 的内置检查点功能与 Lakebase 来进行持久状态管理,包括基于线程的对话上下文和跨会话的持久用户见解。
git clone https://github.com/databricks/app-templates.git
cd app-templates/agent-langgraph-advanced
OpenAI 代理 SDK
克隆 agent-openai-advanced 模板,以使用具有短期内存的 OpenAI 代理 SDK 生成代理。 该模板使用 Lakebase 进行持久状态管理,通过自动聊天历史记录管理启用有状态多轮对话。
git clone https://github.com/databricks/app-templates.git
cd app-templates/agent-openai-advanced
长时间运行代理的后台执行
Databricks Apps 强制实施大约 300 秒的 HTTP 连接超时。 后台执行允许超过此限制的代理任务在连接关闭后保持运行;客户端从单独的终结点检索结果,或重新连接以恢复流式处理。
高级模板 agent-langgraph-advanced 和 agent-openai-advanced 通过 databricks-ai-bridge 的 LongRunningAgentServer 扩展基本模板,增加了短期记忆和长时间后台运行功能,从而提供:
-
后台模式:在请求正文中设置
background=true以立即返回响应 ID 并异步运行代理。 -
检索端点:发送
GET /responses/{id}以提取最终结果,或打开与正在进行的操作的流连接。 -
可恢复流式处理:每个服务器发送的事件都包含一个
sequence_number。 如果连接断开,请重新连接starting_after=N以从下一个事件恢复。 - TASK_TIMEOUT_SECONDS 限制后台任务持续时间的环境变量。 这独立于 120 秒 Databricks Apps HTTP 连接超时,该超时仅适用于单个 HTTP 请求。 (默认值:1 小时)
高级模板自述文件显示了五种客户端模式的请求示例:
- 调用:标准的非流模式 POST。
- 流:标准的流式 POST。
-
背景,然后轮询:
background=truePOST,然后轮询GET /responses/{id},直到完成。 -
后台流媒体传输,通过流恢复:使用
background=true和stream=true进行POST;如果连接断开,请使用GET /responses/{id}重新连接至stream=true。 -
后台流式传输,通过轮询恢复:启动相同,如果连接断开,则轮询
GET /responses/{id}以获得最终结果。
部署和查询代理
使用内存配置代理后,请按照 在应用上编著 AI 代理并部署 中的步骤,在本地运行代理,评估代理,并将其部署到 Databricks 应用。