AI大模型企业应用实战-为Langchain Agent添加记忆功能

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
视觉智能开放平台,图像资源包5000点
NLP自然语言处理_高级版,每接口累计50万次
简介: 【8月更文挑战第18天】

0 前言

在开发复杂的AI应用时,赋予Agent记忆能力是一个关键步骤。这不仅能提高Agent的性能,还能使其在多轮对话中保持上下文连贯性。本文将详细介绍如何在Langchain框架中为Agent添加记忆功能,并深入解析每个步骤的原理和最佳实践。

Agent记忆功能的核心组件

在Langchain中,构建具有记忆功能的Agent主要涉及三个核心组件:

  1. 工具(Tools): Agent用来执行特定任务的功能模块。
  2. 记忆(Memory): 存储和检索对话历史的组件。
  3. 大语言模型(LLM): 负责理解输入、决策和生成响应的核心智能体。

这三个组件的协同工作使Agent能够在多轮对话中保持连贯性并做出明智的决策。

1 构建Agent可用工具

首先,我们需要定义Agent可以使用的工具。

# 构建一个搜索工具,Langchain提供的一个封装,用于进行网络搜索。
search = SerpAPIWrapper()
# 创建一个数学计算工具,特殊的链,它使用LLM来解析和解决数学问题。
llm_math_chain = LLMMathChain(
    llm=llm,
    verbose=True
)
tools = [
    Tool(
        name = "Search",
        func=search.run,
        description="useful for when you need to answer questions about current events or the current state of the world"
    ),
    Tool(
        name="Calculator",
        func=llm_math_chain.run,
        description="useful for when you need to answer questions about math"
    ),
]
print(tools)

2 增加memory组件

接下来,我们需要为Agent添加记忆功能。Langchain提供了多种记忆组件,这里我们使用ConversationBufferMemory:

from langchain.memory import ConversationBufferMemory

# 记忆组件
memory = ConversationBufferMemory(
    # 指定了存储对话历史的键名
    memory_key="chat_history",
      # 确保返回的是消息对象,而不是字符串,这对于某些Agent类型很重要
    return_messages=True
)

3 定义agent

现在我们有了工具和记忆组件,可以初始化我们的Agent了:

from langchain.agents import AgentType, initialize_agent

agent_chain = initialize_agent(
    tools, 
    llm, 
    agent=AgentType.OPENAI_FUNCTIONS, 
    verbose=True, 
    handle_parsing_errors=True,
    memory=memory
)

这里的关键点是:

  • AgentType.OPENAI_FUNCTIONS: 这种Agent类型特别适合使用OpenAI的function calling特性。
  • verbose=True: 启用详细输出,有助于调试。
  • handle_parsing_errors=True: 自动处理解析错误,提高Agent的稳定性。
  • memory=memory: 将我们之前定义的记忆组件传递给Agent。

4 查看默认的agents prompt啥样

了解Agent使用的默认提示词模板非常重要,这有助于我们理解Agent的行为并进行必要的调整:

print(agent_chain.agent.prompt.messages)
print(agent_chain.agent.prompt.messages[0])
print(agent_chain.agent.prompt.messages[1])
print(agent_chain.agent.prompt.messages[2])

这将输出Agent使用的默认提示词模板。通常包括系统消息、人类消息提示词模板和AI消息模板。

5 优化Agent配置

为了更好地利用记忆功能,我们需要修改Agent的配置,确保它在每次交互中都能访问对话历史。

需要使用agent_kwargs传递参数,将chat_history传入

agent_chain = initialize_agent(
    tools, 
    llm, 
    agent=AgentType.OPENAI_FUNCTIONS, 
    verbose=True, 
    handle_parsing_errors=True,#处理解析错误
    agent_kwargs={
   
   
        "extra_prompt_messages":[MessagesPlaceholder(variable_name="chat_history"),MessagesPlaceholder(variable_name="agent_scratchpad")],
    },
    memory=memory #记忆组件
    )

这里的关键改变是:

  • agent_kwargs: 通过这个参数,我们可以自定义Agent的行为

  • extra_prompt_messages:我们添加了两个MessagesPlaceholder:

    • chat_history: 用于插入对话历史。
    • agent_scratchpad: 用于Agent的中间思考过程。

这样配置确保了Agent在每次决策时都能考虑到之前的对话内容。

6 验证优化后的提示词模板

最后,让我们检查一下优化后的提示词模板:

print(agent_chain.agent.prompt.messages)
print(agent_chain.agent.prompt.messages[0])
print(agent_chain.agent.prompt.messages[1])
print(agent_chain.agent.prompt.messages[2])

能看到新添加的chat_historyagent_scratchpad占位符。

7 总结

通过以上步骤,我们成功地为Langchain Agent添加了记忆功能。这使得Agent能够在多轮对话中保持上下文连贯性,大大提高了其在复杂任务中的表现。

添加记忆功能只是构建高效Agent的第一步。在实际应用中,你可能需要根据具体需求调整记忆组件的类型和参数,或者实现更复杂的记忆管理策略。

始终要注意平衡记忆的深度和Agent的响应速度。过多的历史信息可能会导致决策缓慢或偏离主题。因此,在生产环境中,你可能需要实现某种形式的记忆修剪或总结机制。

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
8天前
|
人工智能
AI大模型初体验
为了实现真正的A,需不断学习以提升能力。
39 3
AI大模型初体验
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
【9月更文挑战第4天】赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
AI人工智能大模型的架构演进
随着深度学习的发展,AI大模型(Large Language Models, LLMs)在自然语言处理、计算机视觉等领域取得了革命性的进展。本文将详细探讨AI大模型的架构演进,包括从Transformer的提出到GPT、BERT、T5等模型的历史演变,并探讨这些模型的技术细节及其在现代人工智能中的核心作用。
28 9
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
AI战略丨物流 AI 新变化,用大模型定义
物流企业在大模型上纷纷主动探索,也在推动物流行业实现智能化加速。
|
8天前
|
人工智能 自然语言处理 安全
【通义】AI视界|谷歌推出AI搜索功能“问照片”,照片一问即得……
本文汇总了AI领域的最新动态,包括谷歌推出的“问照片”功能,使用户能用自然语言检索Google Photos;OpenAI的商业用户激增及ChatGPT的广泛应用;Anthropic发布的企业级AI助手Claude Enterprise;美英欧盟首个人工智能法律约束条约;OpenAI前首席科学家新公司获巨额融资;以及比尔·盖茨对AI前景的乐观展望与安全建议。
|
6天前
|
机器学习/深度学习 人工智能 搜索推荐
如何让你的Uno Platform应用秒变AI大神?从零开始,轻松集成机器学习功能,让应用智能起来,用户惊呼太神奇!
【9月更文挑战第8天】随着技术的发展,人工智能与机器学习已融入日常生活,特别是在移动应用开发中。Uno Platform 是一个强大的框架,支持使用 C# 和 XAML 开发跨平台应用(涵盖 Windows、macOS、iOS、Android 和 Web)。本文探讨如何在 Uno Platform 中集成机器学习功能,通过示例代码展示从模型选择、训练到应用集成的全过程,并介绍如何利用 Onnx Runtime 等库实现在 Uno 平台上的模型运行,最终提升应用智能化水平和用户体验。
16 1
|
9天前
|
人工智能 JSON 自然语言处理
你的Agent稳定吗?——基于大模型的AI工程实践思考
本文总结了作者在盒马智能客服的落地场景下的一些思考,从工程的角度阐述对Agent应用重要的稳定性因素和一些解法。
|
12天前
|
人工智能 算法 测试技术
AI战略丨大模型重塑长安新汽车新场景
长安科技内部一边基于大模型进行技术研发,一边也在不断反思:大模型究竟还能带来什么?长安科技最初是希望将尽可能多的控制能力接入到大模型中,如今,其对大模型的能力有了新的理解。
|
12天前
|
数据采集 人工智能 自然语言处理
AI战略丨赋能更好的教育, 大模型应用再提效
采用成熟厂商的解决方案,不仅仅是因为过硬的技术,还有对客户业务的理解,以及顺畅的沟通和服务能力。
|
3天前
|
存储 机器学习/深度学习 人工智能
深入浅出 AI 智能体(AI Agent)|技术干货
随着人工智能技术的发展,智能体(AI Agents)逐渐成为人与大模型交互的主要方式。智能体能执行任务、解决问题,并提供个性化服务。其关键组成部分包括规划、记忆和工具使用,使交互更加高效、自然。智能体的应用涵盖专业领域问答、资讯整理、角色扮演等场景,极大地提升了用户体验与工作效率。借助智能体开发平台,用户可以轻松打造定制化AI应用,推动AI技术在各领域的广泛应用与深度融合。
74 0