AI Agent开发学习系列 - langchain之Agent智能体(3):给agent增加记忆
摘要:LangChain框架通过内存机制实现智能体多轮对话记忆。核心步骤包括:1)初始化腾讯混元大模型;2)加载搜索和数学工具;3)配置ConversationBufferMemory存储对话历史;4)创建agent时嵌入记忆模块。代码示例显示,agent能准确记忆用户名称并实现上下文应答。该方案采用MessagesPlaceholder处理历史消息,是构建带记忆的多工具智能体的标准实现方式,有效
·
在 LangChain 框架中,给 agent 增加记忆(memory)非常简单,只需在 initialize_agent 时传入 memory 参数即可。这样 agent 就能自动记录和利用对话历史,实现多轮对话的上下文记忆和智能响应。
from langchain.agents import (
load_tools,
initialize_agent,
AgentType
)
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI
from langchain.utilities import SerpAPIWrapper
from langchain.chains import LLMMathChain
from langchain.prompts import MessagesPlaceholder
from pydantic import SecretStr
import os
from dotenv import load_dotenv
load_dotenv()
#定义使用的大模型
llm = ChatOpenAI(
api_key=SecretStr(os.environ.get("HUNYUAN_API_KEY","")), # 混元 APIKey
base_url="https://api.hunyuan.cloud.tencent.com/v1", # 混元 endpoint
model="hunyuan-lite", # 模型名称
temperature=0,
)
#定义工具
tools = load_tools(["serpapi","llm-math"],llm=llm)
#增加memory组件
memory = ConversationBufferMemory(
memory_key="Memory",
return_messages=True
)
#定义agent
agent_chain = initialize_agent(
tools,
llm,
agent=AgentType.OPENAI_FUNCTIONS,
memory=memory,
agent_kwargs={"extra_prompt_messages":[MessagesPlaceholder(variable_name="Memory")]},
verbose=True
)
#查看一下默认的prompts北渲染后是什么样子
print(agent_chain.agent.prompt.messages[0])
print(agent_chain.agent.prompt.messages[1])
print(agent_chain.agent.prompt.messages[2])
agent_chain.run(input="你好,我叫Alex。")
agent_chain.run(input="我叫什么?")
结果:
content='You are a helpful AI assistant.'
variable_name='Memory'
prompt=PromptTemplate(input_variables=['input'], template='{input}')
> Entering new AgentExecutor chain...
你好,Alex!很高兴认识你。请问有什么我可以帮助你的吗?
> Finished chain.
> Entering new AgentExecutor chain...
你好,Alex。你的名字是Alex。
> Finished chain.
'你好,Alex。你的名字是Alex。'
这段代码展示了如何在 LangChain 框架中为 agent 正确增加记忆(memory),并结合腾讯混元大模型和多工具实现多轮对话。关键点如下:
- 大模型初始化:用 ChatOpenAI 配置腾讯混元大模型(hunyuan-lite)。
- 工具加载:通过 load_tools 加载 serpapi(搜索)和 llm-math(数学计算)工具,赋能 agent 多种能力。
- 记忆组件:用 ConversationBufferMemory 创建对话记忆,memory_key=“Memory” 并设置 return_messages=True,以消息对象形式存储历史。
- agent 初始化:initialize_agent 时传入 memory,并通过 agent_kwargs 用 MessagesPlaceholder 显式指定记忆变量,确保 prompt 能正确引用历史消息。
- 多轮对话:agent 支持连续对话,能记住并利用历史内容,实现上下文追踪和智能问答。
整体实现了“带记忆的多工具智能体”,是多轮对话 agent 的标准写法。
更多推荐
所有评论(0)