news 2026/4/16 19:57:38

Agent的上下文和记忆

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Agent的上下文和记忆

上下文包括消息列表之外的任何数据,这些数据可以影响代理行为或工具执行。

1.运行时传入的信息,如 `user_id` 或 API 凭据。

2.多步推理过程中更新的内部状态。

3.来自先前交互的持久记忆或事实。

LangGraph 提供了三种提供上下文的主要方式:

类型描述可变?生命周期
Configurable在运行开始时传入的数据每次运行
AgentState执行期间可更改的动态数据每次运行或对话
长期记忆 (存储)可在对话之间共享的数据跨对话

可以使用上下文来:

  • 调整模型看到的系统提示
  • 为工具提供必要的输入
  • 在正在进行的对话中跟踪事实

①.Configurable

配置适用于不可变数据,如用户元数据或 API 密钥。当您有在运行期间不会更改的值时使用。使用保留用于此目的的键"configurable"指定配置。这里工具和graph.py是彼此分开两个.py文件的

from langchain_core.runnables import RunnableConfig from langchain_core.tools import tool @tool def get_user_info_by_name(config:RunnableConfig) -> float: """获取用户的所有信息,包括性别年龄""" user_name=config['configurable'].get('user_name','zs') print(f"调用工具,传入的用户名为:{user_name}") return {'uesr_name':user_name,'sex':'男','age':18}
#05 from langchain_core.messages import AnyMessage from langchain_core.runnables import RunnableConfig from langchain_openai import ChatOpenAI from langgraph.prebuilt.chat_agent_executor import AgentState, create_react_agent from agent.tools.tool_demo2 import calculate2 from agent.tools.tool_demo6 import runnable_tool from agent.tools.tool_demo7 import search_tool from agent.tools.tool_demo8 import get_user_info_by_name #这是一个动态提示词模板,为大语言模型(LLM)生成包含「系统指令 + 对话上下文」的完整输入消息列表 def prompt(state:AgentState,config:RunnableConfig) -> list[AnyMessage]: user_name=config['configurable'].get('user_name','zs') print(user_name) system_message=f"你是一个智能助手,当前的用户名字是:{'user_name'}" return [{'role':'system','content':system_message}] + state['messages'] llm = ChatOpenAI( model='deepseek-chat', temperature=0.8, api_key='XXXXX', base_url="https://api.deepseek.com/v1", extra_body={'chat_template_kwargs': {'enable_thinking': False}}, ) graph = create_react_agent( llm, tools=[search_tool,calculate2,runnable_tool,get_user_info_by_name], prompt=prompt )

在test脚本中运行后结果如下

#测试脚本 from langgraph_sdk import get_client import asyncio #调用agent发布的API接口 client = get_client(url="http://localhost:2024") from langgraph_sdk import get_sync_client client = get_sync_client(url="http://localhost:2024") for chunk in client.runs.stream( None, # Threadless run "agent", # Name of assistant. Defined in langgraph.json. input={ "messages": [{ "role": "human", "content": "告诉我当前用户的年龄?", }], }, stream_mode="messages-tuple", ): if isinstance(chunk.data,list) and 'type' in chunk.data[0] and chunk.data[0]['type'] == 'AIMessageChunk': print(chunk.data[0]['content'],end='')

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:12:36

虚拟机只能在公司用?VMware 加个cpolar在家也能轻松连

文章目录前言1. 在VMware ESXI中创建Ubuntu虚拟机2. Ubuntu开启SSH远程服务3. 安装Cpolar工具4. 使用SSH客户端远程访问Ubuntu5. 固定TCP公网地址前言 VMware 的 Workstation 和 ESXi 是常用的虚拟化工具,前者适合在个人电脑上搭建多个系统环境,后者能在…

作者头像 李华
网站建设 2026/4/16 13:02:39

33、活动目录优化与可靠性管理全解析

活动目录优化与可靠性管理全解析 在当今的网络环境中,活动目录(Active Directory)的性能和可靠性对于企业的正常运营至关重要。本文将详细介绍如何监控活动目录的性能,以及如何进行备份和恢复操作,以确保系统的稳定运行。 1. 使用性能日志和警报监控活动目录性能 除了利…

作者头像 李华
网站建设 2026/4/16 9:24:05

Linly-Talker在智能手表小屏幕上的微型界面适配挑战

Linly-Talker在智能手表小屏幕上的微型界面适配挑战 如今,一块智能手表不再只是显示时间与心率的工具。当用户抬起手腕轻声问“我今天的日程是什么”,他们期待的不只是文字播报,而是一个能“看见”的回应——哪怕只是一张微缩的脸&#xff0c…

作者头像 李华
网站建设 2026/4/16 9:25:25

Linly-Talker如何设置停顿间隔提升听觉舒适度?

Linly-Talker如何设置停顿间隔提升听觉舒适度? 在数字人系统逐渐从技术演示走向真实场景落地的今天,一个常被忽视却至关重要的问题浮出水面:为什么有些AI主播听起来“像人”,而另一些却让人听着疲惫、甚至烦躁?答案往往…

作者头像 李华
网站建设 2026/4/16 9:21:35

Linly-Talker如何优化远距离拾音的噪音抑制?

Linly-Talker如何优化远距离拾音的噪音抑制? 在展厅嘈杂的人声中,一位参观者站在三米外向虚拟导览员发问:“这件展品是哪个朝代的?”空调的低频嗡鸣、远处交谈的碎片语音、房间墙壁带来的回声层层叠加——这本该是一段几乎无法识别…

作者头像 李华
网站建设 2026/4/16 9:20:53

Linly-Talker如何处理复合句式的重音停顿逻辑?

Linly-Talker如何处理复合句式的重音停顿逻辑? 在虚拟主播流畅播报一条促销信息,或AI教师清晰讲解一个复杂知识点的那一刻,你是否曾好奇:机器是如何“读懂”句子中的轻重缓急,像真人一样自然地强调重点、合理换气的&am…

作者头像 李华