Prhub

sgl-project/sglang · 标签视图

标签列表

聚合结果

grammar 相关 PR

2026-09-15
功能 重要性 8.93 洞察度 7.00

为 GLM47 非 strict 工具调用新增 EBNF 约束

值得精读,但重点不在体量而在几处设计取舍:① `glm4_moe_detector.py` 的 `_glm_has_complete_properties` 递归完备性判定与 `_glm_cached_string_exclude` 的 Aho-Corasick → EBNF 状态编译,是判断「哪些 schema 值得收紧」的通用范式;② `function_call_parser.get_structure_constraint` 的新分支展示了「约束类型 + 优先级 + 原生解析声明」三件事如何在一次调用里同时决策;③ `protocol.py` 把冲突从 raise 降级为 warning 的理由(默认注入 vs 用户显式),是 API 兼容性的典型处理方式。建议阅读时同步核对三件事:`_effective_tools` 与 `request.tools` 的差异是否会破坏 strict 判定、`enable_thinking` 默认值是否与 chat template 实际行为一致、`tool_choice="none"` 也注入文法是否符合产品预期。测试文件中的 `TestGlm47FullAssistantGrammar` 值得作为文法回归的参考实现。