掘金 人工智能 14小时前
老顾深度解析【字节跳动的AI项目DeerFlow】源码之执行者(五)
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入解析了DeerFlow开源项目中AI Agent的“执行者”(Executor)角色。执行者负责接收“规划者”(Planner)的任务,并通过搜索、代码执行等方式进行实际操作。文章详细阐述了执行者的触发机制、在LangGraph流程图中的位置,以及其核心逻辑代码。重点介绍了执行者如何根据任务类型调用不同的工具,如“研究者”(Researcher)用于搜索,以及“编码者”(Coder)用于代码执行。此外,文章还探讨了执行者如何整合MCP Server提供的工具,并对“研究者”和“编码者”的提示词进行了详细分析,展示了AI Agent在实际应用中的工作流程和技术细节。

🎯 **执行者角色定位与触发**:执行者是DeerFlow AI Agent的核心组成部分,其主要职责是执行由规划者生成的任务。执行者可以通过两种方式被触发:一是规划者在人工中断后用户点击“Start Research”按钮,二是系统配置了“自动接收规划者内容”的开关。这确保了AI Agent能够根据预设流程或用户指令进行主动或被动地任务处理。

🔍 **任务执行流程与工具调用**:执行者通过分析规划者提供的任务步骤来决定下一步行动。如果任务尚未开始或有未完成的步骤,执行者会根据步骤的类型(如RESEARCH或PROCESSING)调度相应的工具。例如,研究类任务会调用Researcher节点,而代码处理类任务则会调用Coder节点,并传入相应的工具(如搜索工具或Python REPL工具)来执行具体操作。

⚙️ **MCP Server工具集成**:执行者在创建Agent时,能够集成MCP Server提供的工具。当配置了MCP Server时,系统会读取其配置信息,通过MultiServerMCPClient获取远程服务提供的工具,并将这些工具动态添加到Agent的工具集中。这一机制极大地扩展了AI Agent的能力范围,使其能够利用分布式服务资源来完成复杂任务。

📝 **提示词设计与Agent行为塑造**:文章详细解析了“研究者”和“编码者”节点的提示词(prompt)。这些提示词包含了对Agent身份的定位、工具的详细说明、执行步骤的指导、输出格式的要求以及注意事项等关键信息。精心设计的提示词是引导AI Agent高效、准确地完成任务的关键,确保其行为符合预期。

💡 **DeerFlow的工程实践价值**:通过对DeerFlow项目执行者角色的深入剖析,文章不仅展示了AI Agent在任务执行和工具整合方面的具体实现,也为AI Agent技术的使用和Python工程化实践提供了宝贵的学习经验和启发。项目在工程结构和AI Agent的落地应用方面具有很高的参考价值。

前言

今天老顾给大家介绍另一个关键角色执行者Tools,此角色主要的作用是对规划者Planner出来的内容进行执行,执行的方式包含搜索、代码执行,如果配置了MCP Server也会包含里面包含的工具。

执行者的触发

触发执行者有2个场景,第一个场景是规划者经过人工中断,前端选择Start Research按钮,或者配置了【自动接收规划者内容的配置】开关开启

代码都在人工中断节点中,如下

Agent流程图

我们再来看看整体的LangGraph的流程图

这个源码就是我们前一篇文章中介绍的交互流程。我们看一下执行者research_team在哪个位置

builder.add_node("research_team", research_team_node)

这个节点的原作者取的名字research,可以优化为executor,哈哈;但不重要

那么我们看看执行者具体的逻辑代码

执行者Agent

来看看源码

def research_team_node(state: State):    """Research team node that collaborates on tasks."""    logger.info("Research team is collaborating on tasks is running........")    pass

这个函数啥事都没有做,执行完了后,后续怎么处理呢?

builder.add_conditional_edges(        "research_team",        continue_to_running_research_team,        ["planner", "researcher", "coder"],    )

上面是条件边的定义,指明了后续会走到哪个节点,我们再来聚焦一下,看看continue_to_running_research_team这个方法。

我们来分析一下代码

if not current_plan or not current_plan.steps:        return "planner"

这段代码表示 还没有规划内容,应该交给规划者Planner。

if all(step.execution_res for step in current_plan.steps):        return "planner"

step.execution_res这个属性有值,代表已经执行处理过了。

那上面的代码for循环表示是不是所有的步骤都执行过了,如果执行过了就直接返回到planner规划者Agent

for step in current_plan.steps:        if not step.execution_res:            break

遍历当前的规则的步骤,哪些步骤是没有执行的,就返回那个没有执行的步骤

if step.step_type and step.step_type == StepType.RESEARCH:    return "researcher"if step.step_type and step.step_type == StepType.PROCESSING:    return "coder"return "planner"

上面的代码是根据步骤类型的step_type的值,执行不同的工具节点。我们具体看看步骤的结构体

上图的step_type类型的值,就是规划者Planner与大模型进行交互时,大模型给出的执行类型。具体可以看前面介绍规划者Agent的文章。

执行Research

我们看看research节点代码

上面的代码的核心逻辑是增加搜索tools工具

retriever_tool这个变量大家可以忽略,这个是为了检索本地知识库的,不妨碍我们分析源码

_setup_and_execute_agent_step方法就是创建agent,此agent包含了工具tools,以及researcher这个参数值

执行Coder

执行Coder比Research更简单,也是调用了 _setup_and_execute_agent_step方法就是创建agent,此agent包含了python_repl_tool这个工具,以及coder这个参数值

下面我们来具体看看创建Agent的方法_setup_and_execute_agent_step

创建Agent

我们先看看 _setup_and_execute_agent_step源码

里面有个核心的支持MCP的代码逻辑

if configurable.mcp_settings:

如果配置了mcp,就需要读取mcp server的配置信息,设置mcp_servers和enabled_tools这2个变量。

if mcp_servers:   async with MultiServerMCPClient(mcp_servers) as client:

如果有mcp servers,就通过client.get_tools()获得mcp的tools,加入到我们定义的工具,再加入到create_agent函数中。

create_agent方法里面定义了 大模型的,以及提示词的获取。大模型和提示词的获取 之前文章已经介绍过了。

我们下面来介绍Research提示词和Coder提示词

Research提示词

提示词是存放再researcher.md,里面内容还挺多,老顾这边只介绍比较核心的内容

1、身份定位

2、工具说明

3、执行步骤

里面有个if resources动态判断,就是要不要增加本地检索知识库的tool工具。

4、输出格式

里面有个locale变量,指明需要什么语言输出。

5、注意事项

Coder提示词

1、身份定位

2、执行步骤

3、注意事项

总结

至此就介绍了执行者这个角色的核心逻辑,到此5大角色就全部介绍完了。结合之前的介绍DeerFlow的核心流程就全部介绍完了。此外项目还有生成播客的功能,代码比较简单,老顾就不介绍了。

研究了DeerFlow这个开源项目后,对老顾的关于AI Agent的相关技术的使用,有很大的帮助和启发。

DeerFlow再Python的工程结构上面也有很多学习的地方,下一篇我们来介绍一下DeerFlow工程方式的知识。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

AI Agent DeerFlow 执行者 任务执行 工具集成
相关文章