基于Python实现一个具有记忆功能的AI对话代理

 更新时间:2025年12月01日 08:31:23   作者:东方佑  
在人工智能应用蓬勃发展的今天,如何让AI系统具备记忆能力成为了提升用户体验的关键,本文将深入解析一个基于Python的AI对话代理实现,它能够记住用户的历史对话,从而实现更加连贯和个性化的交流,需要的朋友可以参考下

引言

在人工智能应用蓬勃发展的今天,如何让AI系统具备记忆能力成为了提升用户体验的关键。本文将深入解析一个基于Python的AI对话代理实现,它能够记住用户的历史对话,从而实现更加连贯和个性化的交流。

环境配置与依赖加载

任何Python项目的开始都离不开环境配置和依赖管理。我们首先导入必要的库并加载环境变量:

import os
from dotenv import load_dotenv
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.db.sqlite import SqliteDb

load_dotenv(".env")
user_id = "ava"

这段代码完成了基础的环境设置。dotenv库用于从.env文件加载环境变量,这是一种管理敏感信息(如API密钥)的最佳实践,避免将密钥硬编码在代码中。

数据库配置:记忆的存储基础

AI代理的记忆功能需要持久化存储支持,这里使用了SQLite数据库:

db = SqliteDb(
    db_file="mem.db",
    memory_table="user_memories",  # 为记忆数据指定表名
)

SQLite是一个轻量级的文件型数据库,无需单独部署数据库服务器,非常适合小型项目和个人使用。我们指定了数据库文件名为mem.db,并创建了专门的user_memories表来存储用户记忆数据。

智能体初始化:核心功能实现

下面是AI代理的核心初始化代码:

memory_agent = Agent(
    model=OpenAIChat(
        id="qwen/qwen3-4b-thinking-2507", 
        base_url=os.getenv("BASE_URL"), 
        api_key=os.getenv("OPENAI_API_KEY")
    ),
    db=db,
    enable_agentic_memory=True,
    enable_user_memories=True,
    markdown=True,
)

这里创建了一个Agent实例,并配置了多个重要参数:

  • model:指定使用的AI模型,这里使用的是OpenAI兼容的API接口
  • db:连接前面配置的数据库,实现记忆持久化
  • enable_agentic_memoryenable_user_memories:启用不同类型的记忆功能
  • markdown:支持Markdown格式的输出,提升可读性

记忆管理与对话循环

在开始对话前,我们先清空现有记忆,然后启动对话循环:

db.clear_memories()

while True:
    user_input = input("user:")
    print("agent:")
    memory_agent.print_response(
        user_input,
        user_id=user_id,
        stream=True,
    )

这个简单的循环实现了持续的对话交互。stream=True参数使响应以流式方式输出,模仿人类逐字思考的对话体验,大大提升了交互的自然度。

应用场景与扩展方向

这个具有记忆功能的AI对话代理可以应用于多个场景:

  1. 个性化助手:通过记忆用户偏好和历史对话,提供更加个性化的服务
  2. 教育工具:记住学生的学习进度和薄弱点,实施因材施教
  3. 客户服务:持续跟踪客户问题,提供连贯的支持体验
  4. 心理咨询:建立长期的对话记录,帮助跟踪情绪变化趋势

要进一步扩展此系统,可以考虑以下方向:

  • 实现短期记忆与长期记忆的分层存储
  • 添加记忆重要性评估机制,自动过滤无关信息
  • 引入记忆检索优化,提高相关记忆的召回效率
  • 增加多模态记忆能力,支持图像、音频等格式

总结

本文介绍了一个具有记忆功能的AI对话代理的完整实现。通过结合强大的AI模型和持久化存储技术,我们能够创建更加智能、个性化的对话体验。这种技术不仅可以用于简单的聊天机器人,更是构建真正智能助手的基础。

记忆功能是AI系统从工具向伙伴演进的关键一步。随着技术的不断发展,我们有理由相信,能够理解和记住用户需求的AI将在更多领域发挥重要作用。

代码实现基于agno框架,需要配置相应的API密钥才能正常运行。建议在虚拟环境中部署此项目,以避免依赖冲突。

from agno.workflow import Workflow, Step, Parallel
from agno.agent import Agent

# 1. 定义多个专业化的智能体
web_researcher = Agent(
    name="网络研究员",
    role="从互联网搜索最新信息和新闻",
    # ... 配置工具和指令
)

academic_researcher = Agent(
    name="学术研究员",
    role="从学术数据库查找研究和论文",
    # ... 配置工具和指令
)

social_media_analyst = Agent(
    name="社交媒体分析师",
    role="分析社交媒体平台上的趋势和观点",
    # ... 配置工具和指令
)

# 2. 定义总结智能体
summarizer = Agent(
    name="首席分析官",
    role="整合多来源信息,生成一份全面、结构化的总结报告",
    instructions="综合所有研究员的发现,识别共同点和关键差异,形成权威结论。"
)

# 3. 构建工作流
research_workflow = Workflow(
    name="综合研究工作流",
    steps=[
        Parallel(  # 并行执行以下所有研究步骤

            [
                Step(name="网络研究", agent=web_researcher),
                Step(name="学术研究", agent=academic_researcher),
                Step(name="社媒分析", agent=social_media_analyst),
            ]
        ),
        Step(name="生成总结报告", agent=summarizer)  # 汇总并行结果
    ]
)

# 4. 运行工作流
response = research_workflow.run("关于神经形态计算的最新发展")

到此这篇关于基于Python实现一个具有记忆功能的AI对话代理的文章就介绍到这了,更多相关Python AI对话代理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于微信小程序爬虫token自动更新问题

    关于微信小程序爬虫token自动更新问题

    本文主要介绍了关于微信小程序爬虫关于token自动更新问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 对python字典过滤条件的实例详解

    对python字典过滤条件的实例详解

    今天小编就为大家分享一篇对python字典过滤条件的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • matplotlib实现数据实时刷新的示例代码

    matplotlib实现数据实时刷新的示例代码

    这篇文章主要介绍了matplotlib实现数据实时刷新的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • python进行相关性分析并绘制散点图详解

    python进行相关性分析并绘制散点图详解

    这篇文章主要介绍了python进行相关性分析并绘制散点图,具有一定借鉴价值,需要的朋友可以参考下,希望能够给你带来帮助
    2021-09-09
  • python多进程控制学习小结

    python多进程控制学习小结

    这篇文章主要介绍了python多进程控制学习小结,想要充分利用多核CPU资源,Python中大部分情况下都需要使用多进程,Python中提供了multiprocessing这个包实现多进程。感兴趣的小伙伴们可以参考一下
    2018-10-10
  • 使用Python开发一个PDF文本提取工具

    使用Python开发一个PDF文本提取工具

    在日常工作中,我们经常需要从PDF文档中提取文本内容,虽然市面上有不少相关工具,但它们要么功能过于复杂,要么使用不够方便,本文将介绍如何使用Python开发一个简单实用的PDF文本提取工具,需要的朋友可以参考下
    2025-02-02
  • 解决出现Incorrect integer value: '''' for column ''id'' at row 1的问题

    解决出现Incorrect integer value: '''' for column ''id'' at row 1

    这篇文章主要介绍了解决出现Incorrect integer value: '' for column 'id' at row 1的问题的相关资料,希望通过本文能帮助到大家,让大家遇到这样的问题及时的解决,需要的朋友可以参考下
    2017-10-10
  • python中常用的九个语法技巧

    python中常用的九个语法技巧

    大家好,本篇文章主要讲的是python中常用的九个语法技巧,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 浅谈Python如何获取excel数据

    浅谈Python如何获取excel数据

    这篇文章主要介绍了Python如何获取excel数据,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • Python自动化办公之编写PDF拆分工具

    Python自动化办公之编写PDF拆分工具

    这篇文章主要为大家分享一个Python自动化办公的小工具——PDF拆分工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试
    2022-03-03

最新评论