执行摘要
- 一句话:修复工具调用测试的随机失败问题,通过添加strict=True确保参数模式强制约束。
- 推荐动作:该PR变更简单直接,无需深入阅读。值得关注的是gemini-code-assist[bot]的建议——考虑将strict=True一致地应用于其他相关测试用例,以全面消除随机失败风险。
功能与动机
PR #21593之后,tool_choice="required" + strict=false(默认)不再通过约束解码强制执行参数模式——只保证产生工具调用,参数是尽力而为的。小型模型(如Llama-3.2-1B)偶尔在没有模式约束的情况下生成空{}参数,导致约30%的随机失败。PR #21593正确更改了协议语义,但遗漏了更新此测试文件(只有test_tool_choice.py更新了strict=True)。
实现拆解
实现非常简单:在test/registered/openai_server/function_call/test_openai_function_calling.py文件的test_function_call_required方法中,为tools列表中的每个工具添加strict=True字段。这确保了约束解码强制执行参数模式,防止小型模型生成空参数。
关键文件:
test/registered/openai_server/function_call/test_openai_function_calling.py(模块 测试/OpenAI服务器/函数调用): 唯一修改的文件,修复了test_function_call_required测试用例的随机失败问题。
关键符号:test_function_call_required
评论区精华
gemini-code-assist[bot]在review中建议将此修复一致地应用于同一文件中使用tool_choice='required'的其他测试用例(如test_function_call_specific和test_streaming_multiple_choices_finish_reason),以避免类似随机失败。但PR作者未回应此建议,PR已合并。
- 测试用例一致性修复 (testing): PR作者未回应此建议,PR已合并,其他测试用例未修改。
风险与影响
- 风险:风险极低:仅修改测试文件,不涉及生产代码。潜在风险是其他使用tool_choice='required'的测试用例可能仍然存在随机失败,但不会影响系统功能。
- 影响:影响范围仅限于测试稳定性:修复了特定测试用例的随机失败,提高了CI可靠性。对用户、系统或团队无直接影响。
- 风险标记:测试覆盖不完整
关联脉络
- PR #21593 Fix tool call constrained decoding and parsing for models with native formats: 该PR引入了协议语义更改,导致本PR修复的测试随机失败问题。本PR是#21593的后续修复。
参与讨论