当前位置: 首页 > news >正文

【Agent智能体】36DeepAgents深度搜索项目

章节三十六:DeepAgents深度搜索项目

一、深度搜索项目概述

1.1 项目目标

本项目是DeepAgents框架的典型实践,目标是构建一个"深度搜索研究员"。

深度搜索:模拟人类高级研究员的思维,突破传统RAG单次检索的局限,通过"搜索-阅读-反思-再搜索"多轮迭代,深度挖掘信息背后的隐藏逻辑,实现广覆盖、高精准、强可靠的复杂信息处理与文档生成。

1.2 Agent设计

系统采用"1主 + N专"的多路组合模式:

主智能体(Main Agent):项目经理(Leader),不直接执行具体任务,专注于理解需求、拆解任务、调度资源、汇总报告。拥有全局视野,管理整个会话的状态和记忆。

子智能体(Sub Agent)

第一,网络搜索助手:负责公开知识的广域检索,支持由浅入深的多轮递进搜索,最多执行5次精准检索,覆盖3个以上信息维度。

第二,数据库查询助手:对接企业业务数据库,支持读取表结构、预览数据、执行自定义SQL,精准提取业务数据。

第三,RAGFlow知识库助手:对接企业私有知识库,先获取可用助手列表,再分层提问、深度检索,确保内部专有信息安全可用。

1.3 工具体系

主智能体工具:生成Markdown文档、将Markdown转为PDF。

网络搜索助手工具:Tavily互联网搜索(返回结构化结果,包含标题、链接、摘要、正文)。

数据库查询助手工具:列出数据库所有表、预览表数据、执行自定义SQL。

RAGFlow知识库助手工具:获取知识库可用助手列表、向知识库发起提问。

1.4 技术栈

技术作用
LangChain / LangGraph / DeepAgent项目的"神经中枢",LangGraph构建有状态循环工作流
OpenAI SDK调用GPT-4o / DeepSeek等大模型,通过bind_tools实现Tool Calling
Pydantic数据校验基石,定义Agent状态结构和工具输入参数
FastAPI高性能异步Web框架,提供RESTful API接口
WebSocket全双工通信,将Agent的思考过程实时推送到前端
Tavily Search API专为AI设计的搜索引擎,返回结构化清洗后的网页正文
RAGFlow企业级RAG引擎,连接本地知识库,支持文档深度解析与语义检索
PyMuPDF高性能PDF处理库,提取PDF中的文本和表格
PyMySQL / SQLAlchemy数据库连接器,赋予Agent操作结构化数据的能力
AsyncioPython异步编程,实现非阻塞IO
ContextVars线程上下文变量,在异步环境中传递thread_id和user_id,防止数据串线

二、项目实现

2.1 项目结构

项目主要包含以下模块:

  • agent/:智能体相关。包括子智能体(数据库、网络搜索、RAGFlow)、大模型初始化、提示词配置加载、主智能体组装与执行。
  • api/:接口层。包括ContextVars会话隔离、WebSocket实时监控、FastAPI服务入口。
  • prompt/:提示词配置(prompts.yaml)。
  • tools/:工具集。包括搜索工具、数据库工具、RAG工具、Markdown生成工具、PDF转换工具、文件读取工具。
  • utils/:工具模块。包括路径操作、日志配置、格式转换。

2.2 API通信核心类

server.py(服务入口):接收客户端请求,分配唯一标识(Thread ID),将任务派给后台异步处理,通过WebSocket实时反馈进度。

context.py(数据隔离):使用ContextVars为任务打上专属标识,支持任意环节快速获取任务身份,实现多任务数据隔离,避免信息串混。

monitor.py(实时反馈):单例类,收集后台任务执行状态,结合任务标识精准推送消息到前端,解决后台与前台的跨线程通信问题。

2.3 工具实现说明

联网搜索工具:基于Tavily实现,参数包括查询词、结果数量、主题类型、是否包含原始内容,返回结构化搜索结果。

数据库工具:MySQL操作工具集,包括列出所有表名、预览指定表的前N行数据、执行自定义SQL查询。

RAGFlow工具:知识库交互工具集,包括获取可用助手列表、向指定助手发起提问并获取回答。

文件生成工具:Markdown文档生成和PDF转换工具。

文件读取工具:支持多种格式(txt、md、docx、xlsx、pdf、csv等),根据文件扩展名选择对应的解析方式。

2.4 主智能体组装

主智能体的组装逻辑包括:加载提示词配置、初始化大模型、定义主智能体的工具列表、创建并配置各子智能体(网络搜索、数据库、RAGFlow)、通过create_deep_agent创建主智能体实例。

2.5 运行步骤

第一步:确保所有服务(MySQL、RAGFlow等)已启动。

第二步:配置.env文件中的API Key和数据库连接信息。

第三步:启动后端服务。

第四步:启动前端服务(安装Node.js不低于20.19.0版本,复制UI目录,执行npm run dev,访问http://localhost:5173)。

第五步:浏览器访问前端地址,输入任务指令测试。

第六步:观察WebSocket实时推送的执行过程和最终结果。

三、API接口文档

3.1 基础信息

  • 基础地址http://<host>:8000
  • WebSocket地址ws://<host>:8000

3.2 智能体任务启动接口

启动一个新的智能体任务,任务在后台异步执行,实时进度通过WebSocket推送到前端。

  • 地址/api/task
  • 方法:POST
  • 请求参数:query(用户输入的任务指令,必填)、thread_id(任务唯一标识,可选,不提供则自动生成UUID)
  • 响应参数:status(固定为"started")、thread_id(任务唯一标识)

3.3 文件上传接口

上传文件到指定会话的上下文目录,供Agent读取和分析。

  • 地址/api/upload
  • 方法:POST
  • 请求格式:multipart/form-data
  • 请求参数:files(一个或多个文件对象,必填)、thread_id(关联的任务ID,必填)
  • 响应参数:status(固定为"uploaded")、files(成功保存的文件名列表)

3.4 文件下载接口

根据绝对路径下载文件,有安全检查(只能下载output目录下的文件)。

  • 地址/api/download
  • 方法:GET
  • 请求参数:path(文件的绝对路径)

3.5 文件列表查询接口

列出指定目录下的所有生成文件,支持递归遍历。

  • 地址/api/files
  • 方法:GET
  • 请求参数:path(目标目录的绝对路径,必须在output目录下)
  • 响应参数:files数组,包含文件名、类型、路径、大小、修改时间等信息

3.6 WebSocket实时通讯

用于前端实时接收智能体执行过程中的状态反馈和工具调用详情。

  • 地址/ws/{thread_id}

服务端推送的消息都是JSON格式,包含type(消息类型)、event(事件类型)、message(提示文字)、data(附加数据)、timestamp(时间)。

前端根据event字段做不同展示:

事件类型触发时机前端建议动作
session_created工作目录创建成功记录路径
tool_startAgent开始调用工具展示执行详情
assistant_call委派给子Agent展示咨询信息
task_result任务完成追加到对话框
error发生异常提示错误信息

心跳保活:客户端发送任意文本,服务端回显pong。

http://www.cnnetsun.cn/news/3242894.html

相关文章:

  • 工程车预约调度平台开发案例:基于小程序、APP与后台管理系统的一体化平台建设
  • NAU8224与MKV44F64VLH16音频系统设计与优化
  • 新一代IM即时通讯系统:高效连接,稳定运营,打造企业级沟通新体验#灰鲸IM#极光鸟IM
  • 微信聊天记录永久保存指南:用WeChatMsg轻松备份与分析你的珍贵对话
  • Claude助力智能测试全流程
  • PUBG罗技鼠标宏压枪脚本:三步实现精准射击的终极指南
  • TDA7468与TM4C129ENCZAD构建高性能音频处理系统
  • 深度揭秘:Play Integrity API Checker - Android设备安全检测终极指南
  • Linux中Vim编辑器
  • 让 Claude Code 学会走命令行这条近路
  • 如何在LeRobot中实现Waveshare ST3215舵机高精度控制实战
  • 基础利益、差异利益、未来利益:B2B理性利益三层模型
  • 基于NAU8224与STM32的高效嵌入式音频系统设计
  • OpenClaw智能代理平台扩展开发全解析
  • 【Bug已解决】CC Switch configuration conflict / Multiple API keys mixed — Claude Code 多配置冲突解决方案
  • 工业负载控制方案:TPD2015FN与STM32F411RE应用指南
  • RAG召回策略深度解析:新手必看,收藏这份高薪秘籍!
  • 5分钟快速上手Vosk:强大的离线语音识别解决方案
  • L9958与PIC18F47Q10组合驱动电机的优势与实践
  • TegraRcmGUI深度解析:从图形化界面到高级系统维护的完整指南
  • GetQzonehistory终极指南:5分钟找回QQ空间消失的青春记忆
  • 187、并发踩坑合集:竞态条件、死锁、活锁、aiohttp 连接泄漏与调试工具
  • 终极无损视频剪辑指南:如何用LosslessCut极速处理视频音频文件
  • AI漏洞挖掘与社会工程——当最锋利的矛遇上最脆弱的人
  • JPDA 联合概率数据关联算法 Python 实现:处理密集目标与波门重叠的 3 个关键步骤
  • MP2672A双节锂电池充电管理与PIC18F4585系统设计
  • WeChatIntercept终极指南:3分钟掌握微信防撤回完整方案
  • 幼儿玩手机,把控时长避免影响视力发展
  • gofile-downloader:如何通过Python实现高速下载Gofile文件
  • Keep开源AIOps平台:5分钟部署,彻底终结告警风暴的终极指南