深度智能体的中间件

1.概述

与langchian agent一样,深度智能体也使用中间件,不过二者是有区别的,langchain agent的中间件是通过在模型调用、工具调用时插入实现对智能体运行的细粒度控制,而深度智能体的中间件则抽象层次更高,主要支持规划、持久化和创建子智能体。深度智能体支持模块化的中间件架构,当深度智能体被创建时自带以上所说的三种中间件,待办列表中间件(TodoListMiddleware),文件系统中间件( FilesystemMiddleware)和子智能体中间件(SubAgentMiddleware),同时这些中间件是可编排的,可以根据需要配置中间件。

2.代办列表中间件

规划是解决处理复杂多步任务所必须的,智能体会对复杂的任务进行分析,生成待办事项列表,并且在执行过程中对待办列表进行更新。使用TodoListMiddleware中间件,智能体会按照指示使用write_todos工具来跟踪"正在做什么,还需要做什么"。

创建深度智能体时,缺省挂载了该中间件,如果想对待办列表中间件进行定制,比如修改改中间件的系统提示词,则必须使用create_agent,示例代码如下:

from langchain.agents import create_agent

from langchain.agents.middleware import TodoListMiddleware

agent = create_agent(

model=llm,

Custom planning instructions can be added via middleware

middleware=[

TodoListMiddleware(#根据自己的需要修改提示词

system_prompt="Use the write_todos tool to..."

),

],

)

3.文件系统中间件

上下文工程是构建有效代理的主要挑战。当工具调用结果很长时,上下文将快速膨胀,超出大模型可处理的范围,或者形成过多的噪声。使用文件系统中间件,可以把工具调用中间结果保存的长短期记忆中,仅返回经过汇总的结果。

FilesystemMiddleware中间件提供了四个工具:ls、read_file、write_file和edit_file。中间件可以配置使用的持久化后端,缺省是基于state的后端,一般在开发和测试时使用,在生产系统则必须采用混合持久化后端。

创建深度智能体时,缺省挂载了基于状态的持久化后端,如果要定制持久化后端,则必须使用create_agent,如下代码使用定制系统提示词的基于状态的持久化后端:

from langchain.agents import create_agent

from deepagents.middleware.filesystem import FilesystemMiddleware

agent = create_agent(

model=llm

middleware=[

FilesystemMiddleware(

backend=None, #使用基于状态的持久化后端

system_prompt="Write to the filesystem when...", # 可根据需要修改

custom_tool_descriptions={

"ls": "Use the ls tool when...",

"read_file": "Use the read_file tool to..."

}

),

],

)

如下代码通过中间指定使用混合持久化架构:

from deepagents.backends import CompositeBackend, StateBackend, FilesystemBackend

from langchain.agents import create_agent

from deepagents.middleware.filesystem import FilesystemMiddleware

composite_backend = lambda rt: CompositeBackend(

default=StateBackend(rt),

routes={

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

},

)

agent = create_agent(

model=llm,

middleware=[

FilesystemMiddleware(

backend=composite_backend,

custom_tool_descriptions={

"ls": "Use the ls tool when...",

"read_file": "Use the read_file tool to..."

}

),

],

)

4.子智能体中间件

深度智能体在创建时缺省挂载了该中间件,可以对子智能体中间件进行定制,此时需要使用create_agent创建智能体,如下代码对子智能体进行定制:

import os

from tavily import TavilyClient

from typing import Literal

os.environ"TAVILY_API_KEY" = "tvly-*"

tavily_client = TavilyClient(api_key=os.environ"TAVILY_API_KEY")

from langchain.tools import tool

@tool

def internet_search(

query: str,

max_results: int = 5,

topic: Literal"general", "news", "finance" = "general",

include_raw_content: bool = False,

):

"""Run a web search"""

return tavily_client.search(

query,

max_results=max_results,

include_raw_content=include_raw_content,

topic=topic,

)

from langchain_core.tools import tool

from langchain.agents import create_agent

from deepagents.middleware.subagents import SubAgentMiddleware

agent = create_agent(

model=llm,

middleware=[

SubAgentMiddleware(

default_model=llm,

default_tools=\[\],

subagents=[

{

"name": "research-agent",

"description": "Used to research more in depth questions",

"system_prompt": "你是一位史学研究专家。你的工作是进行对历史问题进行透彻的研究,然后写一份专业的报告。您可以借助搜索工具从互联网收集信息作为你的研究素材.",

"tools": internet_search,

"middleware":\[\],

}

],

)

],

)

相关推荐
circuitsosk7 小时前
AI输出的“质检员”:构建智能体质量评估、异常检测与人工兜底的三层防线
人工智能·python·microsoft·正则表达式·langchain
l12586511 小时前
# RAG重排序实战:硅基流动bge-reranker-v2-m3在线API vs 本地CrossEncoder,一篇讲透两种方案
数据库·人工智能·python·深度学习·算法·机器学习·langchain
JaydenAI13 小时前
[基于AgentEvals的自动化评估-06]以LLM-as-a-Judge评估LangGraph执行轨迹
ai·langchain·agent·evaluation·openevals·agentevals
lazy H14 小时前
不同的消息队列有什么区别?Kafka、RabbitMQ、RocketMQ、Pulsar、ActiveMQ 选型对比
后端·中间件·kafka·rabbitmq·rocketmq
北斗落凡尘15 小时前
LangGraph 入门实战(10)--时光回溯
python·langchain
拾年27515 小时前
让 AI 自己卷自己:50 行代码实现「LLM 当评委 + 多选一」的 Harness 工程
langchain·llm
漂流瓶jz15 小时前
一文读懂大模型生态:分类/参数/结构/训练/GPU/评测/排行/社区
人工智能·大模型·llm·openai·nvidia·deepseek·anthropic
Raas10015 小时前
MAI Gateway(魔芋企业级AI网关):私有化部署的身份同步与数据内控设计
网关·网络安全·大模型·gateway·mai gateway·企业级网关
虎鲸不是鱼15 小时前
【RTX Pro 4500】Qwen3.8 27B NVFP4在LM Studio挂载多模态模型
大模型·多模态·qwen·lm studio·千问