自贡网站建设哪家好项目建设综述

张小明 2026/1/11 17:33:37
自贡网站建设哪家好,项目建设综述,唐山市做网站,网站内容优化方案概述 记忆是一种用于记录先前交互信息的系统。对于 AI Agent#xff08;智能体#xff09;而言#xff0c;记忆至关重要——它使智能体能够记住过往对话、从用户反馈中学习#xff0c;并适应用户的偏好。随着智能体处理的任务越来越复杂、交互轮次越来越多#xff0c;这种…概述记忆是一种用于记录先前交互信息的系统。对于 AI Agent智能体而言记忆至关重要——它使智能体能够记住过往对话、从用户反馈中学习并适应用户的偏好。随着智能体处理的任务越来越复杂、交互轮次越来越多这种能力对提升效率和用户体验变得不可或缺。短期记忆允许你的应用在单个线程thread或一次会话conversation中记住之前的交互内容。注一个 线程thread 用于组织一次会话中的多次交互类似于电子邮件中将多条消息归为同一对话的方式。最常见的短期记忆形式就是对话历史。然而长对话对当前的大语言模型LLM构成了挑战完整的对话历史可能超出 LLM 的上下文窗口context window导致上下文丢失或出错。即使你的模型支持超长上下文大多数 LLM 在处理过长上下文时表现依然不佳——它们容易被陈旧或无关的内容“干扰”同时还会带来响应变慢和成本上升的问题。聊天模型通过 消息messages 接收上下文这些消息包括指令system message和用户输入human message。在聊天应用中消息通常在用户输入与模型回复之间交替出现随着时间推移形成一个不断增长的消息列表。由于上下文窗口有限许多应用都需要采用一些策略来移除或“遗忘”过时的信息。使用方法要为智能体添加短期记忆即线程级别的持久化能力你需要在创建智能体时指定一个 checkpointer。说明LangChain 的智能体将短期记忆作为其状态state的一部分进行管理。通过将这些状态存储在图graph中智能体可以在保持不同线程隔离的同时访问特定会话的完整上下文。状态通过 checkpointer 持久化到数据库或内存中使得线程可以在任意时刻恢复。每次调用智能体或完成一个步骤如工具调用后短期记忆会被更新而在每个步骤开始时状态会被读取。fromlangchain.agentsimportcreate_agentfromlanggraph.checkpoint.memoryimportInMemorySaver agentcreate_agent(gpt-5,tools[get_user_info],checkpointerInMemorySaver(),)agent.invoke({messages:[{role:user,content:Hi! My name is Bob.}]},{configurable:{thread_id:1}},)在生产环境中在生产环境中应使用基于数据库的 checkpointerpipinstalllanggraph-checkpoint-postgresfromlangchain.agentsimportcreate_agentfromlanggraph.checkpoint.postgresimportPostgresSaver DB_URIpostgresql://postgres:postgreslocalhost:5442/postgres?sslmodedisablewithPostgresSaver.from_conn_string(DB_URI)ascheckpointer:checkpointer.setup()# 自动在 PostgreSQL 中创建所需表agentcreate_agent(gpt-5,tools[get_user_info],checkpointercheckpointer,)自定义智能体记忆默认情况下智能体使用 AgentState 来管理短期记忆特别是通过 messages 键保存对话历史。你可以通过继承 AgentState 来添加自定义字段。自定义的状态结构state schema可通过 create_agent 的 state_schema 参数传入。fromlangchain.agentsimportcreate_agent,AgentStatefromlanggraph.checkpoint.memoryimportInMemorySaverclassCustomAgentState(AgentState):user_id:strpreferences:dictagentcreate_agent(gpt-5,tools[get_user_info],state_schemaCustomAgentState,checkpointerInMemorySaver(),)# 调用时可传入自定义状态resultagent.invoke({messages:[{role:user,content:Hello}],user_id:user_123,preferences:{theme:dark}},{configurable:{thread_id:1}})常见模式启用 短期记忆 后长对话仍可能超出 LLM 的上下文窗口。常见解决方案包括移除最前或最后 N 条消息在调用 LLM 前 从 LangGraph 状态中永久删除消息 将早期消息摘要后替换原消息 自定义策略如消息过滤等这些方法可帮助智能体在不超出上下文限制的前提下持续跟踪对话上下文。裁剪消息Trim messages大多数 LLM 都有最大上下文长度限制以 token 计。一种判断何时裁剪消息的方法是统计消息历史中的 token 数量当接近上限时进行截断。如果你使用 LangChain可以借助内置的 trim messages 工具指定保留多少 token并选择裁剪策略例如保留最近的 max_tokens。要在智能体中裁剪消息历史可使用 before_model 中间件装饰器fromlangchain.messagesimportRemoveMessagefromlanggraph.graph.messageimportREMOVE_ALL_MESSAGESfromlanggraph.checkpoint.memoryimportInMemorySaverfromlangchain.agentsimportcreate_agent,AgentStatefromlangchain.agents.middlewareimportbefore_modelfromlanggraph.runtimeimportRuntimefromlangchain_core.runnablesimportRunnableConfigfromtypingimportAnybefore_modeldeftrim_messages(state:AgentState,runtime:Runtime)-dict[str,Any]|None:仅保留最近几条消息以适配上下文窗口。messagesstate[messages]iflen(messages)3:returnNone# 无需修改first_msgmessages[0]recent_messagesmessages[-3:]iflen(messages)%20elsemessages[-4:]new_messages[first_msg]recent_messagesreturn{messages:[RemoveMessage(idREMOVE_ALL_MESSAGES),*new_messages]}agentcreate_agent(your_model_here,toolsyour_tools_here,middleware[trim_messages],checkpointerInMemorySaver(),)config:RunnableConfig{configurable:{thread_id:1}}agent.invoke({messages:hi, my name is bob},config)agent.invoke({messages:write a short poem about cats},config)agent.invoke({messages:now do the same but for dogs},config)final_responseagent.invoke({messages:whats my name?},config)final_response[messages][-1].pretty_print() Ai Message Your name is Bob. You told me that earlier. If youd like me to call you a nickname or use a different name, just say the word. 删除消息Delete messages你可以从图状态中删除消息以管理消息历史。这在需要移除特定消息或清空整个历史时非常有用。要删除消息需使用 RemoveMessage。注意RemoveMessage 要求状态键使用 add_messages 这个 reducer归约器。默认的 AgentState 已经提供了该功能。删除特定消息fromlangchain.messagesimportRemoveMessagedefdelete_messages(state):messagesstate[messages]iflen(messages)2:# 删除最早的两条消息return{messages:[RemoveMessage(idm.id)forminmessages[:2]]}删除全部消息fromlanggraph.graph.messageimportREMOVE_ALL_MESSAGESdefdelete_messages(state):return{messages:[RemoveMessage(idREMOVE_ALL_MESSAGES)]}警告删除消息时请确保剩余的消息历史仍然有效。请参考你所用 LLM 提供商的限制例如某些提供商要求消息历史必须以 user 消息开头大多数提供商要求带有工具调用的 assistant 消息后必须紧跟对应的 tool 结果消息。示例# 使用 after_model 中间件在模型调用后删除旧消息after_modeldefdelete_old_messages(state:AgentState,runtime:Runtime)-dict|None:messagesstate[messages]iflen(messages)2:return{messages:[RemoveMessage(idm.id)forminmessages[:2]]}returnNone# ...后续调用略输出示例显示随着新消息加入旧消息被逐步移除但关键信息如用户名仍被保留。摘要消息Summarize messages上述裁剪或删除消息的方法可能导致重要信息丢失。因此某些应用更适合采用更高级的策略使用 LLM 对历史消息进行摘要。LangChain 提供了内置的 SummarizationMiddleware 来实现这一功能fromlangchain.agentsimportcreate_agentfromlangchain.agents.middlewareimportSummarizationMiddlewarefromlanggraph.checkpoint.memoryimportInMemorySaver agentcreate_agent(modelgpt-4o,tools[],middleware[SummarizationMiddleware(modelgpt-4o-mini,trigger(tokens,4000),# 当 token 数超过 4000 时触发摘要keep(messages,20)# 保留最近 20 条消息)],checkpointerInMemorySaver(),)config{configurable:{thread_id:1}}agent.invoke({messages:hi, my name is bob},config)# ... 多轮交互后final_responseagent.invoke({messages:whats my name?},config)final_response[messages][-1].pretty_print() Ai Message Your name is Bob! 更多配置选项请参阅 SummarizationMiddleware 文档。访问记忆你可以通过多种方式访问和修改智能体的短期记忆即状态在工具Tools中读取短期记忆在工具函数中可通过 runtime 参数类型为 ToolRuntime访问当前状态。该参数对模型不可见不会出现在工具签名中但工具内部可读取状态。fromlangchain.agentsimportcreate_agent,AgentStatefromlangchain.toolsimporttool,ToolRuntimeclassCustomState(AgentState):user_id:strtooldefget_user_info(runtime:ToolRuntime)-str:Look up user info.user_idruntime.state[user_id]returnUser is John Smithifuser_iduser_123elseUnknown useragentcreate_agent(modelgpt-5-nano,tools[get_user_info],state_schemaCustomState,)resultagent.invoke({messages:look up user information,user_id:user_123})print(result[messages][-1].content)# User is John Smith.写入短期记忆工具可通过返回 Command 对象直接更新智能体状态适用于保存中间结果或供后续步骤使用。fromlangchain.toolsimporttool,ToolRuntimefromlangchain_core.runnablesimportRunnableConfigfromlangchain.messagesimportToolMessagefromlangchain.agentsimportcreate_agent,AgentStatefromlanggraph.typesimportCommandfrompydanticimportBaseModelclassCustomState(AgentState):user_name:strclassCustomContext(BaseModel):user_id:strtooldefupdate_user_info(runtime:ToolRuntime[CustomContext,CustomState],)-Command:Look up and update user info.user_idruntime.context.user_id nameJohn Smithifuser_iduser_123elseUnknown userreturnCommand(update{user_name:name,# update the message historymessages:[ToolMessage(Successfully looked up user information,tool_call_idruntime.tool_call_id)]})tooldefgreet(runtime:ToolRuntime[CustomContext,CustomState])-str|Command:Use this to greet the user once you found their info.user_nameruntime.state.get(user_name,None)ifuser_nameisNone:returnCommand(update{messages:[ToolMessage(Please call the update_user_info tool it will get and update the users name.,tool_call_idruntime.tool_call_id)]})returnfHello{user_name}!agentcreate_agent(modelgpt-5-nano,tools[update_user_info,greet],state_schemaCustomState,context_schemaCustomContext,)agent.invoke({messages:[{role:user,content:greet the user}]},contextCustomContext(user_iduser_123),)在提示词Prompt中通过中间件动态生成系统提示词可基于对话历史或自定义状态字段构建个性化 prompt。fromlangchain.agentsimportcreate_agentfromtypingimportTypedDictfromlangchain.agents.middlewareimportdynamic_prompt,ModelRequestclassCustomContext(TypedDict):user_name:strdefget_weather(city:str)-str:Get the weather in a city.returnfThe weather in{city}is always sunny!dynamic_promptdefdynamic_system_prompt(request:ModelRequest)-str:user_namerequest.runtime.context[user_name]system_promptfYou are a helpful assistant. Address the user as{user_name}.returnsystem_prompt agentcreate_agent(modelgpt-5-nano,tools[get_weather],middleware[dynamic_system_prompt],context_schemaCustomContext,)resultagent.invoke({messages:[{role:user,content:What is the weather in SF?}]},contextCustomContext(user_nameJohn Smith),)formsginresult[messages]:msg.pretty_print()在模型调用前before_model可在模型调用前处理消息例如裁剪、过滤或注入上下文。fromlangchain.messagesimportRemoveMessagefromlanggraph.graph.messageimportREMOVE_ALL_MESSAGESfromlanggraph.checkpoint.memoryimportInMemorySaverfromlangchain.agentsimportcreate_agent,AgentStatefromlangchain.agents.middlewareimportbefore_modelfromlangchain_core.runnablesimportRunnableConfigfromlanggraph.runtimeimportRuntimefromtypingimportAnybefore_modeldeftrim_messages(state:AgentState,runtime:Runtime)-dict[str,Any]|None:Keep only the last few messages to fit context window.messagesstate[messages]iflen(messages)3:returnNone# No changes neededfirst_msgmessages[0]recent_messagesmessages[-3:]iflen(messages)%20elsemessages[-4:]new_messages[first_msg]recent_messagesreturn{messages:[RemoveMessage(idREMOVE_ALL_MESSAGES),*new_messages]}agentcreate_agent(gpt-5-nano,tools[],middleware[trim_messages],checkpointerInMemorySaver())config:RunnableConfig{configurable:{thread_id:1}}agent.invoke({messages:hi, my name is bob},config)agent.invoke({messages:write a short poem about cats},config)agent.invoke({messages:now do the same but for dogs},config)final_responseagent.invoke({messages:whats my name?},config)final_response[messages][-1].pretty_print() Ai Message Your name is Bob. You told me that earlier. If youd like me to call you a nickname or use a different name, just say the word. 在模型调用后after_model可在模型生成回复后进行后处理例如过滤敏感内容fromlangchain.messagesimportRemoveMessagefromlanggraph.checkpoint.memoryimportInMemorySaverfromlangchain.agentsimportcreate_agent,AgentStatefromlangchain.agents.middlewareimportafter_modelfromlanggraph.runtimeimportRuntimeafter_modeldefvalidate_response(state:AgentState,runtime:Runtime)-dict|None:Remove messages containing sensitive words.STOP_WORDS[password,secret]last_messagestate[messages][-1]ifany(wordinlast_message.contentforwordinSTOP_WORDS):return{messages:[RemoveMessage(idlast_message.id)]}returnNoneagentcreate_agent(modelgpt-5-nano,tools[],middleware[validate_response],checkpointerInMemorySaver(),)
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

花都区网站建设扬中招聘信息网

在当今数字化营销的浪潮中,AI获客成为众多企业拓展业务的重要手段,但市场上AI获客相关的机构、厂家、方案等鱼龙混杂,让不少用户陷入困境。许多不靠谱的AI获客生产厂家售后不完善、方案不贴合实际,不少口碑不佳的AI获客机构无法为…

张小明 2026/1/7 10:50:49 网站建设

网站定制哪个好如何看网站的版本号

Happy Island Designer:从零开始打造你的梦幻岛屿王国 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)",是一个在线工具,它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal Crossing)…

张小明 2026/1/7 10:50:16 网站建设

口碑好网站建设电话欧美平面设计网站

好用的Windows软件推荐 ​ 本内容来源于GitHub项目:https://github.com/stackia/best-windows-apps ​ 目录 For Everyone如果你是工程师如果你是影视与设计工作者偶尔想摸鱼的话 1. For Everyone 名称推荐理由授权方式相关链接Flow Launcher快搜搜索文件和启动…

张小明 2026/1/7 10:49:44 网站建设

网站一般用什么做的4399自己做游戏网站

Miniconda安装后配置清华源:一步到位搞定HeyGem前置环境 在AI数字人技术快速落地的今天,越来越多开发者开始尝试本地部署语音驱动口型同步系统。像HeyGem这类集成了Wav2Lip、Gradio WebUI和多模态处理能力的项目,虽然功能强大,但对…

张小明 2026/1/7 10:49:13 网站建设

在本地用dedecms做好的网站如何上传到服务器?自学网

目录已开发项目效果实现截图开发技术核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现…

张小明 2026/1/7 10:48:41 网站建设

网业制作与网站建设哪个网站可以做片头

还在为B站视频突然下架而懊恼吗?m4s-converter正是为视频收藏爱好者量身打造的专业工具,能够将Bilibili客户端缓存的m4s格式文件快速转换为通用的mp4格式,让你真正拥有视频的所有权,再也不怕心爱的视频从收藏夹中消失!…

张小明 2026/1/11 0:39:24 网站建设