AI 工具
这篇解决什么
Function Calling 工具名存在哪、怎么挂到角色。读完能对上 ai_tool.name 必须能被 toolCallbackResolver 解析,不要手填一个不存在的 Bean。
默认端口 48080。开启见 AI 功能设计。对话绑工具见 AI 聊天对话。
示意图:角色多选工具 id。发送时按 name 注入 ChatOptions.toolCallbacks。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 工具 | @RequestMapping("/ai/tool") | ruoyi-office/yudao-module-ai/.../controller/admin/model/AiToolController.java |
| 下拉 | GET /simple-list | 角色表单用 |
| 工具表 | ai_tool | AiToolDO |
| 管理端 | 控制台 | ruoyi-office-vben/apps/web-antd/src/views/ai/model/tool/ |
官方菜单:工具管理 2920(挂在控制台 2760)。权限 ai:tool:query / create / update / delete。
validateToolNameExists 调 toolCallbackResolver.resolve(name),解析不到就保存失败。status:0 开启,1 关闭。
静态数据常见 name:directory_list、weather_query、user_profile_query、ps_get_person_by_id。前三个是 @Component("…"),人事查询是 @Tool 注册。另有 mcp_filesystem_read_file 来自 MCP,不是 Java @Component。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
name | Tool / Bean 名 | AiToolDO |
description | 给模型看的说明 | 同上 |
status | 启用 | 同上 |
toolIds | 角色绑定的本地 id | AiChatRoleDO |
聊天实现:getToolCallbackListByRoleId 按角色 toolIds 查 name 再注入。MCP 客户端名单在角色的 mcpClientNames,和本表并行。
name 不是展示标题
改成中文名后解析失败,对话不会调到工具。展示文案写 description。
先有实现再入库
只插 ai_tool 行、工程里没有对应 Tool,创建接口会拒。新工具要同时加 Java(或 MCP)和这一行。
按本仓库 DO 生成的 ER。角色存的是工具 id 列表。
配置与操作
走 控制台 → 工具管理(2920,/ai/console/tool)。name 必须能被 toolCallbackResolver.resolve 解析,常见 directory_list / weather_query / user_profile_query / ps_get_person_by_id。展示文案写 description,不要把 name 改成中文。角色在 聊天角色(2773)勾 toolIds。
只插表、工程里没有对应 Tool,创建会拒。MCP 工具走角色 mcpClientNames,和本表并行。开启见 AI 功能设计。

本系统截图:控制台 → 工具管理。name 必须能解析到 Bean 或 MCP。
