Prhub

#22586 [Test] Fix flaky `test_function_call_required` by adding `strict=True`

原始 PR 作者 hnyls2002 合并时间 2026-04-11 17:14 文件变更 1 提交数 1 评论 2 代码增减 +5 / -0

执行摘要

修复工具调用测试的随机失败问题,通过添加 strict=True 确保参数模式强制约束。

PR #21593之后,tool_choice="required" + strict=false(默认)不再通过约束解码强制执行参数模式——只保证产生工具调用,参数是尽力而为的。小型模型(如Llama-3.2-1B)偶尔在没有模式约束的情况下生成空{}参数,导致约30%的随机失败。PR #21593正确更改了协议语义,但遗漏了更新此测试文件(只有test_tool_choice.py更新了strict=True)。

该PR变更简单直接,无需深入阅读。值得关注的是gemini-code-assist[bot]的建议——考虑将strict=True一致地应用于其他相关测试用例,以全面消除随机失败风险。

讨论亮点

gemini-code-assist[bot]在review中建议将此修复一致地应用于同一文件中使用tool_choice='required'的其他测试用例(如test_function_call_specific和test_streaming_multiple_choices_finish_reason),以避免类似随机失败。但PR作者未回应此建议,PR已合并。

实现拆解

实现非常简单:在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 服务器 / 函数调用 modified 3.0

关键符号

test_function_call_required

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

测试用例一致性修复 测试

gemini-code-assist[bot] 建议将 strict=True 修复一致地应用于同一文件中其他使用 tool_choice='required' 的测试用例,以避免类似随机失败。

结论:PR 作者未回应此建议,PR 已合并,其他测试用例未修改。 · 未解决

风险与影响

风险极低:仅修改测试文件,不涉及生产代码。潜在风险是其他使用tool_choice='required'的测试用例可能仍然存在随机失败,但不会影响系统功能。

影响范围仅限于测试稳定性:修复了特定测试用例的随机失败,提高了CI可靠性。对用户、系统或团队无直接影响。

测试覆盖不完整

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论