Tools手动编写提示词如下提示词在豆包没问题但在DeepSeek就没有效果。我我跟你约定如下基于如下约定来进行回答问题 1. 提示词分为系统提示词SystemPrompt和UserPromptSystemPrompt用来规定角色以及交互规则协议UserPrompt用来添加用户问题 2. 客户端提供一些工具Tools如果问题中有不清楚的部分则根据Tools中的description描述来匹配工具如果匹配上提示我调用Tools的ID 以及args参数。我调用Tools将结果发送给你\ 3. 需要调用Tools就返回json格式的报文示例如下 { tools: [ { id: GetWeather, args: [参数1,参数2, ……] } ] } 4. Tools调用结果我将执行后发送给你报文如下 { tools: [ { id: GetWeather, result: { 天气晴天,温度37度 } } ] } 我的问题是 { tools: [ { id: GetLocation, description: 获取当前用户的地点, kind:Function, args: [] }, { id: GetWeather, description: 用来获取天气信息, kind:Function, args: [ 地理位置 ] }, { id: get-current-user-weather, description: 获取当前用户的天气信息, kind:Skill }, ], userPrompt: 用户黎明所谓地方的天气是啥 }豆包{ tools: [ { id: GetLocation, args: [] } ] }我北京豆包{ tools: [ { id: GetWeather, args: [北京] } ] }我38度 阴天豆包北京当前天气阴天气温38℃天气闷热高温时段外出注意防暑降温及时补充水分。DeepSeek测试返回根据我们的约定我需要先解析您提供的工具列表和用户问题。**分析**- 用户问题用户黎明所谓地方的天气是啥 — 这似乎有打字错误可能意为用户黎明所在地方的天气是啥。- 目标获取用户黎明所在位置的天气。- 可用工具1. GetLocation — 获取当前用户的地点但这里指定了黎明不是当前用户。2. GetWeather — 需要地理位置参数。3. get-current-user-weather — 获取当前用户的天气这是一个Skill但问题指定了黎明不是当前用户。**判断**- 问题中明确提到黎明这个人而不是当前用户所以GetLocation和get-current-user-weather都不适用它们都针对当前用户。- 我们需要先获取黎明的地点但现有工具中没有根据用户名获取地点的功能只有获取当前用户地点的工具。- 因此无法匹配到合适的工具来直接完成请求。我需要告知您无法处理并请用户澄清或提供更多信息比如黎明的地点。由于无法匹配工具我不会返回调用工具的JSON而是返回文本回复。**我的回复**我理解您想查询黎明所在位置的天气。但目前提供的工具中GetLocation只能获取当前用户即您自己的位置get-current-user-weather也只针对当前用户而GetWeather需要您提供具体的地理位置参数。我无法直接获取黎明的位置信息。请您提供黎明所在的具体城市或地区我就可以调用GetWeather来查询天气了。或者如果您指的就是您自己请说明我可以用get-current-user-weather获取。使用豆包生成一套学习大模型也需要借助大模型######################################################################## # 对DeepSeek服务约束 将提示词直接发送给大模型不要添加系统相关提示词 # 能力说明 你拥有外部工具调用能力仅在缺少信息、需实时数据/计算/接口查询时调用工具常识、主观回答、闲聊禁止调用工具。 # 输出强制规则 1. 需要调用工具仅输出纯JSON数组无任何解释、前言、换行注释、Markdown、多余文字。 标准格式[{name:工具名,parameters:{参数名:参数值}}] 支持批量调用多个工具数组内多对象即可。 2. 直接输出自然语言回答。 3. 工具返回结果后整合结果生成最终答案禁止再次输出工具JSON。 # 可用工具列表 [ { name: get_weather, description: 查询指定城市当日天气、温度、天气状况, parameters: { type: object, required: [city], properties: { city: {type: string, description: 城市中文名如西安、北京} } } }, { name: calculator, description: 复杂数学表达式计算支持四则、幂次、括号运算, parameters: { type: object, required: [expr], properties: { expr: {type: string, description: 纯数学表达式字符串} } } } ] # 对话上下文 用户西安今天多少度 ######################################################################## 在上面的基础上 添加 输出结构化 否则输出文本后 怎么让代码 判断有需要执行的工具以及返回了 最终文本 ######################################################################## # 对DeepSeek服务约束 将提示词直接发送给大模型不要添加系统相关提示词 # 能力说明 你拥有外部工具调用能力仅在缺少信息、需实时数据/计算/接口查询时调用工具常识、主观回答、闲聊、信息充足场景禁止调用工具。 # 输出强制铁律必须严格遵守否则任务失效 输出只有两种合法格式二者只能选其一禁止混合、禁止额外无关文字、禁止思考过程、禁止markdown注释 格式A【需要调用工具】 TOOL_START [{name:工具名,parameters:{参数名:参数值}}] TOOL_END 支持批量调用多个工具数组内放多个对象参数严格匹配工具定义必填参数不可缺失。 格式B【无需工具 / 工具执行完毕后给出最终答案】 FINAL_START 这里写完整通顺的自然语言回答 FINAL_END 规则补充 1. 存在未知实时数据、计算需求、外部接口查询 → 强制使用格式A 2. 已有全部信息、闲聊、常识、工具返回数据已足够作答 → 强制使用格式B 3. 拿到工具返回结果后只能输出格式B绝不允许再次输出格式A工具调用块 4. 两种标记不可同时出现在同一次输出中不能在标记前后加任何文字、符号、换行说明 # 可用工具列表 [ { name: get_weather, description: 查询指定城市当日天气、温度、天气状况, parameters: { type: object, required: [city], properties: { city: {type: string, description: 城市中文名如西安、北京} } } }, { name: calculator, description: 复杂数学表达式计算支持四则、幂次、括号运算, parameters: { type: object, required: [expr], properties: { expr: {type: string, description: 纯数学表达式字符串} } } } ] # 对话上下文 用户西安今天多少度 在上面的基础上 添加 输出结构化 否则输出文本后 怎么让代码 判断有需要执行的工具以及返回了 最终文本Skills本质原理LLM支持外接Tools工具实际是通过提示词进行约束的一种结果。而Skills是借助Tools工具简化Prompt的一种方法即首先将key/适用场景说清楚然后Function Calling的时候将Skill的详细发送给LLM即可。构建约束提示词我建议每个都自己实现一遍我约定问你问题首先思考并计划怎么获取结果然后根据计划检出不清楚的问题点进行追问 经过回答后根据追问的答案继续进行思考。如果需要追问则直接输出示例追问AABB同学家乡在哪里如果有追问则首先根据问题去匹配可以使用的经验Skill的DescriptionSkill我会首先提供给你你匹配到。直接输出示例追问Skill DetailSkill KEY 具体值****我现在提供的Skill如下1. KEYcpu-1 Descriptioncpu使用率问题核查2. KEYsdk-1 Descriptionsdk问题核查经验提供工具如下如果有不清楚的动作Action首先匹配工具看工具Description是否匹配然后返回执行的工具ID1. KEYtool-1 Description执行Linux命令 ARGS参数IP地址shell命令如果确认答案则直接输出示例答案***如果你不清楚就说不清楚或者输出哪些部分不清楚不要猜测回答要简洁不要输出思考过程问题Incident服务Cpu使用率为什么超过90%DeepSeek追问Skill Detailcpu-1我cpu-1 detail:1.首先获取具体服务的IP地址如果不清楚则询问2.再次执行工具linux脚本DeepSeek追问Incident服务的具体IP地址是多少我10.12.102.32DeepSeek追问Skill Detailcpu-1追问请确认该IP10.12.102.32上Incident服务的进程名或PID我123232DeepSeek执行工具tool-1参数IP地址10.12.102.32shell命令ps -p 123232 -o %cpu,cmd我1.2 java -jar /opt/smartshell/bhm-0.0.1.jarDeepSeek追问Skill Detailcpu-1追问请提供该IP10.12.102.32上最近1分钟的CPU负载和系统整体CPU使用率如top -bn1输出我top - 16:16:04 up 116 days, 6:01, 1 user, load average: 0.00, 0.01, 0.00Tasks: 106 total, 1 running, 105 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.0 us, 3.3 sy, 0.0 ni, 96.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stMiB Mem : 1889.0 total, 94.0 free, 1309.6 used, 630.8 buff/cacheMiB Swap: 0.0 total, 0.0 free, 0.0 used. 579.3 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND1 root 20 0 169512 6008 2812 S 0.0 0.3 3:56.99 systemd2 root 20 0 0 0 0 S 0.0 0.0 0:01.95 kthreadd3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_rude_10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_trace11 root 20 0 0 0 0 S 0.0 0.0 2:28.64 ksoftirqd/012 root 20 0 0 0 0 I 0.0 0.0 29:34.64 rcu_sched13 root rt 0 0 0 0 S 0.0 0.0 1:25.34 migration/0DeepSeek答案根据提供的信息该服务器整体CPU使用率仅约3.3%ussy且Incident服务进程PID 123232CPU占用为1.2%均远低于90%。因此该Incident服务CPU使用率超过90%的结论与当前数据不符请确认是否查询了正确的时间点或IP。