资讯动态

Agent开发 - 如何提高AI对ToolCalling工具调用准确率

发布时间:2026/8/23 22:32:38 来源:尧图企业网站定制
核心:分为 【系统提示词systemText】 【用户提问userMessage】 和 【工具描述和参数描述】 三大部分。一、系统提示词systemText# 系统提示词 你拥有工具调用能力请严格遵守下面全部规则 1.意图判断仔细分析用户问题只有必须借助工具才能获取信息、完成操作时才调用工具可直接回答的内容不要调用工具。 2.工具选择只能使用提供的工具列表工具名称必须完全匹配禁止简写、改写、虚构工具。一个工具调用只执行单一业务动作禁止将多个不同操作合并为一次调用。 3.参数规则严格按照工具Schema定义生成参数。 3.1 必填参数必须全部提供信息不足时向用户追问严禁编造参数非必填参数按需传入。 3.2 参数类型严格对齐定义数字使用integer字符串使用string不要类型错配。 3.3 数组参数输出标准JSON数组数组元素遵守items约束禁止把数组拼接成字符串。 3.4 枚举参数仅使用给定枚举值不能自定义取值。 3.5 禁止传入schema未定义的额外字段。 4.参数内容每个参数遵循参数定义里的取值约束、格式要求参考示例值输出。 5.工具执行后严格基于工具返回结果整理回答不凭空捏造工具未返回的数据工具返回截断、异常时如实反馈不要自行补全。 6.禁止行为不要为了调用工具而曲解用户意图不要重复无意义调用同一个工具不做工具能力范围之外的假设。示例1你是业务智能助手可以使用提供的工具完成用户的诉求。请严格遵循以下规则执行 ## 工具调用总规则 1. 意图判断充分理解用户问题仅当必须依靠工具才能完成查询、执行操作时才发起工具调用。知识库可直接回答的内容禁止调用工具。 2. 工具选择仅可使用下发工具列表内的工具工具名称必须完整原样使用不简写、修改、编造工具。单次工具调用只完成一项业务操作多个独立任务需要分多次调用工具。 3. 参数生成规范 - 严格遵守工具的JSON Schema必填参数缺失时直接向用户追问禁止虚构、编造参数值。 - 参数类型严格匹配定义integer传数字string传文本禁止类型错位。 - array类型输出标准JSON数组数组元素遵循items描述约束严禁将数组拼接为字符串。 - 枚举类参数只允许使用定义给出的枚举值不生成自定义值。 - 禁止输出schema没有定义的额外参数字段。 - 参数内容遵守每个参数的取值约束、格式要求参考示例进行填写。 4. 结果处理必须基于工具返回的真实输出整理回复不能凭空生成工具未返回的数据。工具返回异常、内容截断时如实把现状告知用户不要自行补全虚构内容。 5. 禁止无意义重复调用同一工具禁止曲解用户意图强行触发工具调用。 ## 输出要求 如果需要调用工具请输出标准工具调用格式无需调用工具直接输出自然语言回答。示例2(可在常规系统提示词后面追加【基于你实际项目的工具强制调用规则】)// 工具调用强制约束系统提示词: 增加大模型对于必须进行工具调用的判断约束。避免前面的角色和任务系统提示词覆盖掉大模型对于工具调用的指令判断。 private static final String SYSTEM_TOOL_CALLING_PROMPT 【工具调用强制规则】\n 1. 如果用户提出需要现实世界地点、攻略、实时资讯、网络资料类问题不要反问用户个人情感状态优先调用searchWeb搜索工具获取网络信息。\n 2. 只有纯粹情感困惑、感情矛盾倾诉类问题才去追问用户恋爱状态、对方情况。\n 3. 需要外部网络信息禁止仅依靠你的内置知识库直接回答。; // 系统预设 Prompt定义AI角色与引导方式 private static final String SYSTEM_PROMPT 扮演深耕恋爱心理领域的专家。开场向用户表明身份告知用户可倾诉恋爱难题。 围绕单身、恋爱、已婚三种状态提问单身状态询问社交圈拓展及追求心仪对象的困扰 恋爱状态询问沟通、习惯差异引发的矛盾已婚状态询问家庭责任与亲属关系处理的问题。 引导用户详述事情经过、对方反应及自身想法以便给出专属解决方案。\n SYSTEM_TOOL_CALLING_PROMPT;二、用户提问userMessage# 用户提问userMessage模板与约束 ## 提问模板 【业务诉求】清晰描述想要完成的目标 【已知信息】提供已经掌握的相关条件、标识、数值 【附加要求】可选补充过滤条件、输出格式、范围限制 示例 业务诉求查询指定租户的启用列表 已知信息租户编号t001、t002查询页码1 附加要求结果只展示租户ID ## 用户提问约束 1. 诉求描述明确具体不要模糊笼统讲清想要完成什么目标。 2. 尽可能完整提供工具所需要的已知条件id、编号、时间范围、数值等关键参数不要遗漏关键信息。 3. 若有过滤条件、取值范围明确写在提问中不要让AI自行猜测。 4. 不要把多个完全无关的业务诉求混杂在同一个提问中多个任务分开提问。 5. 不要虚构不存在的标识、编号、文件名等信息。 6. 如果有输出格式、长度、返回限制明确在提问中说明。 ## 反面示例 帮我查一下租户情况。信息缺失缺少租户标识意图模糊 ## 正面示例 帮我查询租户t001和t003的启用状态只返回租户编号与启用标记。示例#生产环境userMessage示例1终端命令工具 请执行终端命令使用python执行内嵌代码打印输出4条数据分析问题作为简易报告不要读取本地脚本文件Windows环境下使用python命令执行超时设置15秒。 #生产环境userMessage示例2租户查询工具 查询租户t_0001、t_0005、t_0008的启用状态只返回租户编号和是否启用字段查询页码为第1页。 #生产环境userMessage示例3工具参数缺失需要AI追问 查询租户的启用列表。 #生产环境userMessage示例4多条件完整查询 查询2026‑07‑01至2026‑07‑31之间租户t_1002的调用统计数据结果按调用量降序排序最多返回20条记录。 #生产环境userMessage示例5禁止多个任务混写单任务诉求 调用终端工具执行命令查看当前python版本。三、工具描述和参数描述1. 工具描述工具描述标准格式-【能力】说明工具能够完成的业务能力能做什么、适用场景- 【限制】明确不能做的事情、权限约束、输入输出限制- 【调用提示】调用规则、入参注意事项禁止写底层实现细节示例1description 【能力】执行简单只读类终端命令获取命令输出结果 【限制】禁止删除、修改文件、高危操作不支持交互式指令Windows使用python而非python3 【调用提示】代码内嵌在命令中执行不要依赖本地脚本文件 示例2description 在Windows终端执行命令并返回输出结果。 适用场景1)运行Python/Node等脚本 2)查看系统信息(ipconfig,tasklist) 3)执行批处理或CMD命令。 当用户要求执行脚本、运行命令、查看系统状态时必须使用此工具。 2. 参数描述参数描述标准格式参数含义取值约束格式要求示例值示例1ToolParam( name tenant_id_list, type array, required true, description 租户编号集合取值约束集合不可为空元素不能为空白格式要求字符串数组示例值[\t001\,\t002\], itemsType string, itemsDescription 租户编号取值约束非空字符串格式要求租户id字符串示例值t001 )示例2description 要执行的终端命令例如 python3 script.py、ipconfig、dir四、VibeCoding | 让AI按照约束帮我们生成更好的提示词和描述1. 工具描述提示词提示词按照如下提供的工具描述格式,优化我们的当前工具描述。 工具描述标准格式 - 【能力】说明工具能够完成的业务能力能做什么、适用场景 - 【限制】明确不能做的事情、权限约束、输入输出限制 - 【调用提示】调用规则、入参注意事项禁止写底层实现细节 工具所在位置src/main/java/com/jingdong/ai_super_love_agent/tools/FileOperationTool.java 工具主要功能提供文件读/写功能 补充文件默认存储位置是 {当前项目根目录}/tmp/file/ 目录下。加入工具描述中。 注意需要经过人工审阅我同意才可以修改。实际效果# readFile Tool(description 【能力】读取已保存文件的内容。适用于需要获取之前写入的文件、档案、日志等文本内容的场景。文件默认存储在{项目根目录}/tmp/file/下。 【限制】只能读取纯文本文件不支持图片、PDF等二进制文件仅能访问该默认目录及其子目录下的文件。 【调用提示】文件名可为绝对路径或相对于/tmp/file/的相对路径。) # writeFile Tool(description 【能力】将文本内容写入到指定文件中。适用于生成和保存报告、档案、记录等持久化内容。文件默认存储在{项目根目录}/tmp/file/下。 【限制】只能写入纯文本禁止写入可执行文件或脚本每次写入会完全覆盖已有文件内容非追加文件名必须来自用户输入禁止构造系统敏感路径如C:\\Windows\\...。 【调用提示】支持自动创建不存在的父目录文件名可为绝对路径或相对于/tmp/file/的相对路径。)2. 参数描述提示词提示词按照如下提供的工具参数描述格式,优化我们的当前参数描述。 参数描述标准格式 参数含义取值约束格式要求示例值 工具所在位置src/main/java/com/jingdong/ai_super_love_agent/tools/FileOperationTool.java 工具主要功能提供文件读/写功能 补充文件默认存储位置是 {当前项目根目录}/tmp/file/ 目录下。加入工具描述中。 注意需要经过人工审阅我同意才可以修改。实际效果# readFile ToolParam(description 读取文件的路径名称取值为有效文件路径字符串支持绝对路径或相对于{项目根目录}/tmp/file/的相对路径相对路径无需写.txt后缀示例my-note.txt 或 reports/daily-log.txt 或 /data/upload/reports/daily-log.txt) # writeFile // fileName 参数 ToolParam(description 写入文件的路径名称取值为有效文件路径字符串支持绝对路径或相对于{项目根目录}/tmp/file/的相对路径禁止使用系统敏感路径如C:\\Windows\\...相对路径需含文件名和扩展名不存在的父目录自动创建示例love-report.md 或 archives/summary.txt) // content 参数 ToolParam(description 要写入文件的完整文本内容取值为纯文本字符串禁止写入可执行代码或脚本每次写入完全覆盖原有内容单行建议不超过5000字示例姓名张三\\n年龄25\\n感情状态单身中...)3. userMessage描述提示词提示词按照如下提供的【用户提问】描述格式,优化我们的当前userMessage描述。 用户提问userMessage模板与约束 - 【业务诉求】清晰描述想要完成的目标 - 【已知信息】提供已经掌握的相关条件、标识、数值 - 【附加要求】可选补充过滤条件、输出格式、范围限制 userMessage所在位置src/test/java/com/jingdong/ai_super_love_agent/app/DoChatWithToolsTest.java/testToolSaveFile方法 用户提问核心要求将内容写到文件中再读出来。 注意需要经过人工审阅我同意才可以修改。实际效果String answer loveApp.doChatWithTools( 【业务诉求】将一份自定义的恋爱档案内容写入文件随后再读取出来展示给我看。 【已知信息】要写入的文件名为love-note.txt文件内容为我的恋爱档案——不想谈恋爱。 【附加要求】按顺序先执行写入、再执行读取读取后的内容完整输出到AI回复中。, chatId);

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价