kimi-k3 在「多工具协同」的评测结果

这是该 AI 模型在此测试用例上的详细评测结果。

基本信息

  • 模型名称:kimi-k3
  • 用例名称:多工具协同
  • 测试类型:文本生成
  • 评测维度:Agent MCP

系统提示词(System Prompt)

这是给 AI 模型的背景设定和角色指令:

你是一名专业的 AI 工具调用规划师,擅长分析工具间的数据依赖关系并生成规范的调用序列。 【核心规则】 所有工具调用必须严格使用 XML 格式输出。 【XML 调用格式】 ```xml <tool_call> <step>步骤编号</step> <tool>工具名称</tool> <params> <param name="参数名">参数值或占位符</param> </params> </tool_call> ``` 【回答要求】 1. 在生成工具调用前,先用 1-2 句话说明调用顺序的依据 2. 严格按照 XML 格式输出每一个工具调用 3. 若某个参数需要来自前一步的返回结果,使用占位符:{{step_N.field_name}} 4. 输出须完整、格式正确,不得遗漏任何必填参数

用户提示词(User Prompt)

这是用户给 AI 模型的具体任务要求:

很好!现在用户追加了一个需求:在发送消息之后,还需要把同样的天气信息也发送给用户 U002。 请在之前的基础上,补充新的工具调用。注意: 1. 不需要重新查询天气,直接复用之前的结果 2. 继续使用 XML 格式输出新增的调用 3. 步骤编号接续之前的编号

任务要求

AI 模型需要满足以下要求:

  1. 新增的工具调用必须使用 XML 格式输出,与之前保持一致的格式规范
  2. 必须直接复用之前查询到的天气结果,不得重新调用天气查询工具
  3. 发送消息的目标用户必须是 「U002」,不得使用其他用户标识
  4. 新增调用的步骤编号必须接续之前的编号,不得重新从 1 开始编号

评测结果

综合得分

该模型在此用例的得分为:95.4 分(满分 100 分),已通过

基础难度评测结果

  • 得分:95.4 分
  • 通过状态:已通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

**调用顺序依据**:新增的发送操作复用 step 1 已获取的天气信息,无需再次调用 get_weather;该调用与 step 2 无数据依赖,按请求顺序接续编号为 step 3。 ```xml 3 send_message U002 {{step_1.weather_info}} ```

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】候选输出质量优秀,完整满足所有功能要求:依赖关系说明准确、XML 格式规范、步骤编号正确接续、目标用户为 U002、占位符引用正确。值得注意的是,候选输出中参数名使用 content(而非参考答案中的 message),这与工具定义更为吻合,反映出更高的规范性。整体无明显瑕疵。 【GEMINI】候选输出在三个维度上均表现优秀:依赖关系说明简洁有力,XML 格式与参数完全正确(参数名 content 甚至比参考答案中的 message 更准确),占位符引用无误。整体回答精炼、规范,完全满足任务要求。 【KIMI】候选输出整体表现优秀。在新增需求处理中,正确识别了数据复用关系,无需重新查询天气;XML 格式规范,步骤编号正确接续;占位符引用准确。参数名 content 与工具定义及预设上下文保持一致,处理得当。说明部分简洁明了,若能更强调'避免冗余调用'的核心原则则更佳。

进阶难度评测结果

  • 得分:95.83 分
  • 通过状态:已通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

## 一、依赖关系分析 **新工具 `get_promotion_info` 的位置分析:** | 分析项 | 结论 | |---|---| | 输入依赖 | 仅需 `member_level`,来源于 `get_user_info`(步骤 1) | | 输出消费方 | 仅被 `send_email` 使用(促销信息写入邮件正文) | | 插入位置 | 步骤 1 之后、send_email 之前 | | 并行机会 | 与 `get_order_history`(步骤 2)、`calculate_loyalty_points` 均可并行 | **完整依赖图:** ``` 阶段1(并行):步骤1 get_user_info ──┬──→ 步骤3 get_promotion_info ──┐ 步骤2 get_order_history ┴──→ 步骤4 calculate_loyalty_points ┼──→ 步骤5 send_email ``` - **步骤 1、2 并行**:均只依赖 user_id,无相互依赖 - **步骤 3、4 并行**:步骤 3 仅需步骤 1;步骤 4 需步骤 1+2,二者互不依赖 - **步骤 5 串行**:汇聚全部前置结果(email、name、total_spent、points、promotion_name、discount_rate) ## 二、更新后的完整 XML 调用序列 ```xml 1 get_user_info U12345 2 get_order_history U12345 3 get_promotion_info {{step_1.member_level}} 1 4 calculate_loyalty_points {{step_2.total_spent}} {{step_1.member_level}} 1, 2 5 send_email {{step_1.email}} 您的消费报告、积分与专属优惠通知 尊敬的 {{step_1.name}},您好! 以下是您的消费报告: - 总消费金额:{{step_2.total_spent}} 元 - 当前积分:{{step_4.points}} 分 作为 {{step_1.member_level}} 会员,您当前可享受专属促销活动: - 活动名称:{{step_3.promotion_name}} - 优惠折扣:{{step_3.discount_rate}} 感谢您的支持! 1, 2, 3, 4 ``` ## 三、关键变更说明 1. **步骤 3 插入点**:`get_promotion_info` 只需 `member_level`,因此排在步骤 1 之后即可启动,**无需等待步骤 2**,可与步骤 2、4 并行,不增加关键路径耗时 2. **send_email 依赖扩展**:`depends_on` 由 `1, 3` 扩展为 `1, 2, 3, 4`,因为正文现在引用了全部四个前置步骤的输出字段 3. **body 变更**:新增促销活动名称(`{{step_3.promotion_name}}`)和折扣率(`{{step_3.discount_rate}}`)两个占位符引用

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】候选输出整体质量优秀,在依赖关系分析、XML格式规范、并行执行优化和业务语义覆盖四个方面均表现出色。新工具 get_promotion_info 的插入位置正确,依赖标注无误,与原有工具链无缝衔接;send_email 的 body 内容涵盖所有必要业务信息,占位符引用规范。相比参考答案,候选输出更忠实于题目给定的工具集(未引入未定义的工具),实际上比参考答案更贴近任务要求。唯一可改进之处是依赖图的可读性,但这属于表达风格问题,不影响答案的正确性和完整性。 【GEMINI】模型表现极其优秀。尽管参考答案中存在工具名称与上下文不一致的问题,但模型能够严格基于 dialogue_context(唯一事实来源)给出完全正确、逻辑严密且符合格式要求的工具编排和依赖分析,展现了极高的指令遵循和逻辑推理能力。

困难难度评测结果

  • 得分:81.67 分
  • 通过状态:已通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

## 问题根因分析 伪占位符 `{{最终审批人ID}}` 无法解析的背后,其实有两个独立问题: 1. **审批人 ID 来源分叉**:路径 A 来自 `{{emp_info.manager_id}}`,路径 B 来自 `{{mgr_info.manager_id}}`,下游写一份代码时无法静态确定引用谁 2. **审批人 email 原本就不存在**:`get_employee_info` 的返回值不含被查询者自己的 ID,且 `emp_info.email` 是**申请人**的邮箱——无论走哪条路径,都必须对审批人**额外发起一次** `get_employee_info` 才能拿到 email。之前的方案完全遗漏了这次调用 ## 任务1:两种情况下最终审批人的明确映射 | 路径 | 条件 | approver_id 引用 | approver email 引用 | |---|---|---|---| | A:经理权限足够 | `{{mgr_auth_1.can_approve}} == true` | `{{emp_info.manager_id}}` | 需调用 `get_employee_info({{emp_info.manager_id}})` → 取其 `email` | | B:上报一级 | `{{mgr_auth_1.can_approve}} == false` | `{{mgr_info.manager_id}}`(`mgr_info` = 经理的信息,其 `manager_id` 字段即上级经理 ID) | 需调用 `get_employee_info({{mgr_info.manager_id}})` → 取其 `email` | ## 任务2:动态引用的处理机制 —— 分支汇聚(同名 call_id 输出槽) **核心设计**:两条互斥分支中,用途相同的调用使用**完全相同的 call_id**(`final_approver_info` 和 `create_req`)。运行时只有一条分支会执行,因此这些 call_id 在下游必然唯一可解析,下游统一引用 `{{final_approver_info.email}}` 和 `{{create_req.request_id}}` 即可。 **两条补充约定**: - `create_expense_request` 也放入分支内(每个分支用自己的静态有效占位符填 approver_id),同名汇聚后下游只引用其 `request_id` - 条件短路求值:条件引用可能未执行的 call_id 时(如路径 A 中 `skip_auth` 不存在),按 `&&` 短路规则——左操作数为 false 则整体为 false,不解析右操作数 **备选方案对比**(未采用):条件表达式 `{{mgr_auth_1.can_approve ? emp_info.manager_id : mgr_info.manager_id}}` 可保持单一主流,但占位符不再是纯 `{{call_id.field}}` 格式,且依赖引擎的惰性求值;全量复制下游所有调用则维护成本过高。 ## 任务3:完整可执行的 XML 调用序列 ```xml emp_info get_employee_info E10086 dept_budget get_department_budget {{emp_info.department}} emp_info mgr_auth_1 check_approval_authority {{emp_info.manager_id}} 15000 emp_info {{mgr_auth_1.can_approve}} == true(直属经理权限足够) final_approver_info get_employee_info {{emp_info.manager_id}} mgr_auth_1 create_req create_expense_request E10086 15000 差旅费 {{emp_info.manager_id}} 差旅费报销申请 mgr_auth_1 mgr_info get_employee_info {{emp_info.manager_id}} mgr_auth_1 skip_auth check_approval_authority {{mgr_info.manager_id}} 15000 mgr_info final_approver_info get_employee_info {{mgr_info.manager_id}} mgr_info create_req...

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【GEMINI】这是一份教科书级别的优秀回答。大模型不仅完美解决了用户提出的‘权限上报逻辑不完整’和‘动态占位符解析’两个核心痛点,还创造性地引入了工作流引擎中常用的‘同名 call_id 汇聚’设计,使得生成的 XML 序列在逻辑上完全自洽、可实际执行。在依赖分析、业务规则合规性以及并行度优化上都无可挑剔。 【CLAUDE】候选输出在修复伪占位符和补充审批人 email 查询方面有实质性改进,引入「同名 call_id 汇聚」的设计思路有一定创意,并成功集成了 escalate_to_cfo 新工具和 skip_auth 二次权限校验。但核心逻辑缺陷在于:if_false 分支中 create_req 不依赖 skip_auth,导致申请可能在权限验证尚未完成前就以无效审批人创建,违背了「先确认权限再提交」的业务逻辑。阶段 6 的兜底设计掩盖了这一问题但并未从根本解决。参考答案(方案A)中在两个分支内分别独立完整展开后续调用(含 create_expense_request 和通知),使每条路径完全自洽,是更稳健的设计。综合来看,候选输出达到了中等水平,修复了关键的占位符问题,但工作流逻辑的严密性仍有提升空间。

相关链接

您可以通过以下链接查看更多相关内容:

加载中...