在 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),并结合腾讯混元大模型和多工具实现多轮对话。关键点如下:

  1. 大模型初始化:用 ChatOpenAI 配置腾讯混元大模型(hunyuan-lite)。
  2. 工具加载:通过 load_tools 加载 serpapi(搜索)和 llm-math(数学计算)工具,赋能 agent 多种能力。
  3. 记忆组件:用 ConversationBufferMemory 创建对话记忆,memory_key=“Memory” 并设置 return_messages=True,以消息对象形式存储历史。
  4. agent 初始化:initialize_agent 时传入 memory,并通过 agent_kwargs 用 MessagesPlaceholder 显式指定记忆变量,确保 prompt 能正确引用历史消息。
  5. 多轮对话:agent 支持连续对话,能记住并利用历史内容,实现上下文追踪和智能问答。

整体实现了“带记忆的多工具智能体”,是多轮对话 agent 的标准写法。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐