当前位置: 首页 > news >正文

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='')

http://www.rkmt.cn/news/128531.html

相关文章:

  • Linly-Talker能否接入Unity引擎实现游戏内NPC对话?
  • 我赌90%的人不知道:Word邮件合并后,3步拆成独立文件!
  • Linly-Talker项目issue响应速度与社区支持力度
  • 39、Windows 2000 中基于组策略的软件部署指南(上)
  • Linly-Talker生成视频的EXIF信息清除安全策略
  • 40、软件部署全流程解析与操作指南
  • Linly-Talker在儿童绘本朗读中的语音童趣化处理
  • Linly-Talker能否输出NFT数字藏品视频?区块链整合建议
  • Linly-Talker生成视频的动态分辨率自适应技术
  • Linly-Talker如何提升非标准普通话识别准确率?
  • Vue3_工程结构和单文件组件概念
  • Linly-Talker在天文科普中的宇宙场景合成构想
  • Linly-Talker在心理咨询服务中的共情表达研究
  • Linly-Talker如何提升低声量输入的语音识别率?
  • Linly-Talker如何优化低光照条件下的人脸输入质量?
  • 医学多模态诊断漏诊 后来才知道跨模态注意力对齐特征
  • Linly-Talker在宠物用品推荐中的萌系语音包装
  • Linly-Talker生成视频的SEO元数据嵌入建议
  • Linly-Talker在博物馆文物复活创意展中的互动设计
  • 对 |0001> 应用 Hadamard 门的演算过程
  • Java Web 宠物商城网站系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • Linly-Talker在新品发布会预录视频中的高效制作
  • Linly-Talker如何处理诗歌朗诵的韵律节奏控制?
  • MySQL基础知识Linux导入导出数据
  • Linly-Talker在残障人士辅助沟通中的社会价值
  • Linly-Talker支持H.264/H.265编码输出吗?视频格式说明
  • 前后端分离+疫情物资捐赠和分配系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • Linly-Talker项目CI/CD流程自动化程度评估
  • 基于图像处理的道路斑马线与行人运动检测系统研究
  • Linly-Talker如何保证用户上传肖像的安全性?