ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;display: flex;align-items: center;gap: 0.5em;color: rgb(87, 171, 90);">TipingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;display: block;letter-spacing: 0.1em;color: rgb(63, 63, 63);">多代理工作流架构,不同的专业代理协作处理用户查询,并生成一份全面的研究报告
| ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;"> | ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;"> | ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;padding: 0.25em 0.5em;color: rgb(63, 63, 63);word-break: keep-all;"> |
将用户的请求分为三类
将复杂查询分解为可管理的步骤,以便创建详细的研究计划
执行需要收集信息的研究步骤
web_search_tool和crawl_tool执行涉及到 Python 代码的数据处理
负责所有收集的信息综合成完整的最终报告
将代理的提示映射到定义其行为的实际代码文件
步骤分为研究、处理两种类型
StepType.RESEARCH
need_web_search: trueStepType.PROCESSING
need_web_search: falseDeerFlow 集成了代理可用于收集信息和处理数据的各种工具
支持通过 MCP 动态加载其他工具
这里给出 GitHub 趋势存储库的 MCP 示例
"mcp_settings":{
"servers":{
"mcp-github-trending":{
"transport":"stdio",
"command":"uvx",
"args":["mcp-github-trending"],
"enabled_tools":["get_github_trending_repositories"],
"add_to_agents":["researcher"]
}
}
}Tip
本文的记录数据的流转,用户输入到最终研究报告的产出,前后端交互时的消息、事件、状态,以及每个组件内的内部数据转换
sendMessage 函数(web/src/core/store/store.ts 76-154)的处理流程如下:
getChatStreamSettings()chatStream()chat 的 Stream 参数包括如下
前端使用 Zustand 来管理应用状态,关键状态组件包括
当后端接收到事件时,它们会被处理并更新上述状态
以下这些状态更新函数用于管理聊天、研究过程中的状态变化,确保前端能够正确显示对话和研究进度
前后端通过 SSE 进行流式响应,支持两种模式
当后端接收到聊天请求时,通过/api/chat/stream断点进行处理
_astream_workflow_generator()处理请求并生成流式响应_astream_workflow_generator()职责如下
管理 Agent 节点之间的状态转换,每个节点处理当前状态,并返回一个对象,该对象用于更新状态并引导工作流进入下一个节点
LangGraph 的状态对象包含
Message 是 DeerFlow 系统的主要数据结构,在前后端之间流动
从后端流式传递到前端的事件具有如下结构
{
"event":"<event_type>",
"data":"<JSON 数据>"
}其中 event_type 可以是:
从前端传递到后端的请求结构如下
{
"messages":[{"role":"user","content":"string"}],
"thread_id":"string",
"auto_accepted_plan":true,
"max_plan_iterations":3,
"max_step_num":5,
"interrupt_feedback":"string",
"enable_background_investigation":true,
"mcp_settings":{
"servers":{
"server_name":{
"transport":"string",
"command":"string",
"args":["string"],
"url":"string",
"env":{"key":"value"},
"enabled_tools":["string"],
"add_to_agents":["string"]
}
}
}
}| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |