深度智能体-长短期记忆

     1.概述

        创建深度智能体时,如果不配置持久化存储,缺省使用基于状态的持久化后端。此时,文件系统保存在状态中,对话结束保存在其中的数据将丢失。为了跨线程共享数据,可以使用混合持久化后端,把不同路径的文件分别保存在状态中或者本地文件系统或数据库中。

     2.使用长短期记忆

        如下示例代码,创建一个深度智能体,把/memories路由的文件保存在文件系统,其他的保存在状态中。

from deepagents import create_deep_agent
from deepagents.backends import CompositeBackend, StateBackend, FilesystemBackend

#创建混合持久化后端。缺省为基于状态的后端,另外一个是基于文件系统的后端

composite_backend = lambda rt: CompositeBackend(
    default=StateBackend(rt),

    """

    基于文件系统后端通过root_dir指定具体的路径。/memories/是路由,所有以/memories

    开头的路径均指向基于文件系统的后端,非/memories开头的路径指向缺省的持久化后端

    """
    routes={
        "/memories/": FilesystemBackend(root_dir="./myagent", virtual_mode=True),
    },
)

agent = create_deep_agent(
    model=llm,
    backend=composite_backend)

        工作原理分析:

        1)短期记忆保存在StateBackend中,通过标准的路径访问(非/memories开头)

        2)生命周期与线程生命周期相同,线程结束则数据丢失

        3)长期记忆保存在FilesystemBackend中,通过标准路径访问(以/memories开头)

        4)长期记忆生命周期为从深度智能体启动到退出,跨线程和对话

     3.长短期记忆验证

      3.1短期记忆验证

        如下代码把数据保存在短期记忆中(也就是基于状态的持久化后端):

agent.invoke({
    "messages": [{"role": "user", "content": "Write hello world  to /draft.txt"}]
})

        再次调用,不能获取到文件数据:

agent.invoke({
    "messages": [{"role": "user", "content": "read draft from /draft.txt"}]
})

      3.2.长期记忆验证

        如下代码把个人业务爱好数据保存在长期记忆中(./myagent/hobbys.txt):

import uuid

# Thread 1: Write to long-term memory
config1 = {"configurable": {"thread_id": str(uuid.uuid4())}}
agent.invoke({
    "messages": [{"role": "user", "content": "Save my hobbys ##sports, noval### to /memories/hobbyes.txt"}]
}, config=config1)

        再次调用,能够从长期记忆获取到保存的数据:

config2 = {"configurable": {"thread_id": str(uuid.uuid4())}}
agent.invoke({
    "messages": [{"role": "user", "content": "What are my hobbys? read from /memories/preferences.txt"}]
}, config=config2)

      4.长期记忆应用场景

        长期记忆可用于指令进化、构建知识基和研究项目。

      4.1指令进化

        在创建深度智能体时提供一个初始提示词,在初始提示词中要求智能体后继根据用户的反馈更新提示词,不断迭代,使智能体定位更清晰、准确,更加符合用户的调性。如下代码中的提示词说明如何实现指自进化:

    

agent = create_deep_agent(
    store=InMemoryStore(),
    backend=lambda rt: CompositeBackend(
        default=StateBackend(rt),
        "/memories/": FilesystemBackend(root_dir="./myagent", virtual_mode=True),
    ),

    """

        每次调用时从文件读取,每次结束前根据用户反馈更新提示词并保存到文件中。

    """
    system_prompt="""You have a file at /memories/instructions.txt with additional
    instructions and preferences.

    Read this file at the start of conversations to understand user preferences.

    When users provide feedback like "please always do X" or "I prefer Y",
    update /memories/instructions.txt using the edit_file tool."""
)

      4.2构建知识基

        把需要跨线程共享的数据保存到基于文件系统的持久化后端,智能体可以把这些数据作为上下文执行推理。

      4.3构建研究智能体

        智能体执行研究任务时,把每一步的研究结果保存在文件系统中,在智能体执行过程中总是可以从文件系统获取研究结果数据作为上下文。以下代码说明,在构建研究智能体时如何保存研究结果:

research_agent = create_deep_agent(
    store=InMemoryStore(),
    backend=lambda rt: CompositeBackend(
        default=StateBackend(rt),
        routes={"/memories/": StoreBackend(rt)}
    ),
    system_prompt="""You are a research assistant.

    Save your research progress to /memories/research/:
    - /memories/research/sources.txt - List of sources found
    - /memories/research/notes.txt - Key findings and notes
    - /memories/research/report.md - Final report draft

    This allows research to continue across multiple sessions."""
)

    5.好的实践

      在深度智能使用长短期记忆时的好的实践包括:

       1)使用语义化路径。就像程序中被变量命名一样,文件路径定义要望文知义。比如:

/memories/users/preferences.txt
/memories/research/topic_a/sources.txt
/memories/research/topic_a/notes.txt

        2)存储结构文档化。在提示词中针对每个文件说明其存储的内容是什么,比如:

Your persistent memory structure:
- /memories/preferences.txt: User preferences and settings
- /memories/research/topic_a/: research information  about topic a

        3)持久化存储管理。定时清理长期记忆中的文件,以免数据无序膨胀,最后不可管理和使用

【最优潮流】直流最优潮流(OPF)课设(Matlab代码实现)内容概要:本文档主要围绕“直流最优潮流(OPF)课设”的Matlab代码实现展开,属于电力系统优化领域的教学与科研实践内容。文档介绍了通过Matlab进行电力系统最优潮流计算的基本原理与编程实现方法,重点聚焦于直流最优潮流模型的构建与求解过程,适用于课程设计或科研入门实践。文中提及使用YALMIP等优化工具包进行建模,并提供了相关资源下载链接,便于读者复现与学习。此外,文档还列举了大量与电力系统、智能优化算法、机器学习、路径规划等相关的Matlab仿真案例,体现出其服务于科研仿真辅导的综合性平台性质。; 适合人群:电气工程、自动化、电力系统及相关专业的本科生、研究生,以及从事电力系统优化、智能算法应用研究的科研人员。; 使用场景及目标:①掌握直流最优潮流的基本原理与Matlab实现方法;②完成课程设计或科研项目中的电力系统优化任务;③借助提供的丰富案例资源,拓展在智能优化、状态估计、微电网调度等方向的研究思路与技术手段。; 阅读建议:建议读者结合文档中提供的网盘资源,下载完整代码与工具包,边学习理论边动手实践。重点关注YALMIP工具的使用方法,并通过复现文中提到的多个案例,加深对电力系统优化问题建模与求解的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值