项目使用了哪些工具,分别承担什么任务?
未标记
询问 AI
考查重点:工具职责与结果汇总。按一次任务说明工具输入和输出,例如搜索补公开信息、数据库取内部指标、知识库查文档,再讲结果如何汇总
本题目录
参考答案
核心回答
以企业研搜助手为参考示例,项目把业务工具按公开搜索、内部数据、内部文档和文件交付分组,由三个业务专家和主 Agent 分别使用。
- 网络搜索工具交给网络专家:输入搜索问题和检索参数,调用 Tavily,返回包含标题、链接和内容等字段的搜索结果,用来补充公开资料。
- 数据库工具交给数据库专家:先获取表名,再查看列名与样例数据,最后输入 SQL 执行查询,返回带列头的数据文本,用来回答库存、销售等具体业务问题。
- 知识库工具交给 RAGFlow 专家:先列出可用助手及知识库信息,再输入助手名称和问题,返回内部文档问答结果。
- 文件工具由主 Agent 使用:读取上传材料,把整理好的内容写成 Markdown,再按需要转换成 PDF,完成用户要求的文件交付。
框架还提供 task 委派和 write_todos 计划管理:前者把子任务交给专家,后者记录计划状态。它们属于通用编排能力;搜索、查库和生成报告等业务能力则由项目工具接入。
展开说明
1. 每组工具的输入、输出和职责
公开搜索只有一个业务工具:internet_search。 输入包括 query、搜索主题、最大结果数和是否返回网页原文。工具调用 Tavily,返回结构化搜索结果,网络专家再阅读、筛选和汇总。它适合查公开政策、新闻和行业背景;企业内部销量、库存和私有制度应查询相应内部来源。
数据库专家有三个工具。 list_sql_tables 不需要业务参数,返回真实表名;get_table_data(table_name) 返回指定表的列名与前 100 行数据,帮助理解字段和取值;execute_sql_query(query) 接收 SQL,执行筛选、关联或聚合,并返回含列头的数据文本。先发现表、再了解数据、最后查询的顺序由提示词引导。当前执行工具直接调用数据库游标执行传入 SQL,没有在工具层实现完整的只读校验。
知识库专家有两个工具。 get_assistant_list 返回 RAGFlow 助手名称、描述及关联知识库信息;create_ask_delete(chat_name, question) 选择助手,创建临时会话并提问,成功获取回答后删除会话。这个包装函数最终返回拼接后的答案文本。它查询的是已经入库的内部资料,上传到本次任务的临时附件则由主 Agent 的文件工具读取。
主 Agent 有三个自定义文件工具。 read_file_content(filename, instruction) 根据文件类型提取文本或表格摘要;其中 instruction 记录读取意图,用于监控展示,不会把底层解析器变成任意文档分析程序。generate_markdown(content, filename, path) 把提供的内容写入文件并返回生成说明;convert_md_to_pdf(md_filename, pdf_filename) 读取已有 Markdown,生成 PDF 并返回转换结果。因此,主 Agent 需要先组织好报告内容,再调用写入工具。
2. 工具如何进入 Agent 的执行循环
业务函数通过 LangChain 工具接口暴露名称、用途和参数。主 Agent 注册自己的文件工具,每个专家只注册对应的信息获取工具。主 Agent 通过框架的 task 工具,传入目标专家类型和具体子任务;专家在自身上下文中选择业务工具、填写参数、读取返回结果,再把结论交回主 Agent。
实际访问搜索 API、连接 MySQL、调用 RAGFlow 或写文件的都是应用代码。模型生成调用请求,运行时执行相应函数,再把返回值作为工具结果交回模型。这个参考实现里,搜索返回对象,多数数据库、知识库和文件工具返回文本或错误说明,并没有统一采用结构化业务结果。
write_todos 管理待办事项,帮助主 Agent 跟踪计划;task 发起专家委派。它们也不会替代业务工具的执行逻辑。框架还可能提供文件系统等基础工具,因此介绍项目时,先说清自定义业务工具及其任务,比只报一个运行时工具总数更有意义。
3. 一个请求会怎样调用这些工具
例如用户要求:“读取上传的产品资料,结合内部销售数据和相关公开政策,生成一份 PDF 分析报告。”主 Agent 先用 read_file_content 读取附件,确定研究对象;随后分别委派数据库专家查询销售数据、网络专家搜索政策。若需要补充内部制度或长期知识库资料,再调用 RAGFlow 专家。
数据库专家先发现真实表和字段,再执行具体查询;网络专家接收针对公开政策的检索问题。主 Agent 拿到所需结果后组织报告,把完整内容传给 generate_markdown,文件生成成功后再传给 convert_md_to_pdf。PDF 转换依赖 Markdown 文件已经存在,不能把两步当作相互独立的调用。
失败结果也会影响下一步。例如查询出错时应根据错误补充字段或调整查询;附件不存在、文本无法提取或转换失败时,应明确处理相应问题。项目工具已经返回部分中文错误提示;若需要更稳定的程序处理,可以进一步统一成功状态、错误码和产物引用,并分别落实 SQL 权限、参数校验与文件访问范围。
常见追问
工具和子 Agent 的区别是什么?
工具执行一项已定义的操作,例如输入 SQL 返回查询结果;子 Agent 则围绕一个目标,在自己的上下文中选择工具并完成多步处理。数据库专家可能连续查看表、预览数据、生成查询;主 Agent 通过 task 委派的是这一项完整子任务。
get_table_data 就是数据库 Schema 工具吗?
它返回列名和样例行,可帮助模型理解数据,但没有专门返回完整 DDL、索引和所有约束。若复杂查询需要这些信息,应增加相应元数据接口,避免把样例数据当成数据库全部结构信息。
返回了“文件已生成”,如何确认交付完成?
写入或转换函数的返回值说明该步骤结果,还需要确认目标文件存在、可读,并通过应用文件接口交给用户。报告内容是否满足需求,则应另查所用数据、引用和结论;文件生成与内容质量分别验收。
对应教程
- 网络搜索子智能体与 Tavily 工具:查看公开搜索工具的参数、返回结果,以及它与内部数据和知识库查询的边界。
- 数据库查询子智能体与 MySQL 工具:对照发现表、查看样例和执行 SQL 三个工具,理解每一步为后续查询补充什么信息。
- RAGFlow 子智能体与知识库准备:阅读可用助手发现、临时会话问答与内部文档入口,理解知识库工具的实际任务。
- 主智能体搭建与异步执行:查看主 Agent 注册的附件读取、Markdown 和 PDF 工具,以及专家委派与最终交付的连接。
参考资料
- 国内:JavaGuide:大模型结构化输出——从 JSON 契约到 Function Calling 落地:依据工具定义、调用意图、业务执行与结果返回的过程,说明正文中模型参数如何衔接到真实操作。
- 国内:zero2Agent:工具管理——参数校验、工具路由与百级工具库:借鉴工具范围、输入校验与依赖调度,解释正文中生成 PDF 为何要等待文件写入,以及业务参数为何仍需执行层检查。
- 国内:Datawhale:第四章 智能体经典范式构建:依据工具名称、描述、执行逻辑和外部反馈的分工,说明正文中工具为何按具体任务定义能力。
- 国外:LangChain:Deep Agents overview:依据规划、专家委派与自定义工具的区分,说明正文中框架通用能力和项目业务工具各自的职责。
- 国外:LangChain:Tools:依据函数签名、工具描述及返回值约定,说明正文中文本或对象结果如何返回给模型继续处理。



