Prhub

#21756 [diffusion] fix: wire --prompt-path into _resolve_prompts

原始 PR 作者 mickqian 合并时间 2026-04-01 16:47 文件变更 3 提交数 6 评论 4 代码增减 +111 / -4

执行摘要

修复 diffusion 生成器中 --prompt-path 参数未消费的 bug,确保优先从 SamplingParams 读取提示文件。

PR body中明确指出:'--prompt-path (SamplingParams CLI arg) was parsed but never consumed by the runtime. Only --prompt-file-path (ServerArgs) was checked in _resolve_prompts()',即--prompt-path参数在CLI中被解析但未被实际消费,仅--prompt-file-path有效,因此需要修复以支持SamplingParams中的prompt_path参数。

该PR值得精读,特别是_resolve_prompts方法中的优先级处理和错误逻辑设计,可作为参数解析和文件读取的范例。建议关注generate方法中sampling_params_kwargs的null安全处理,以及测试用例的完整性。

讨论亮点

review中gemini-code-assist[bot]提出了两个关键点:

  1. generate方法中sampling_params_kwargs可能为None,直接调用.get()会引发AttributeError,建议初始化为空字典以确保健壮性。
  2. help text更改不当,从'one per line'改为'the prompt'不准确,因为实现仍支持多行提示,建议改回原版。这两个建议在提交历史中被采纳(如提交'Apply suggestion from @gemini-code-assist[bot]'),解决了潜在问题和文档准确性。

实现拆解

  1. 修改diffusion_generator.py的generate方法:将prompt_path参数从sampling_params_kwargs传递给_resolve_prompts。
  2. 更新_resolve_prompts方法:新增prompt_path参数,并在路径解析时优先使用prompt_path,若为None则回退到server_args.prompt_file_path,并添加文件存在性检查和错误处理。
  3. 新增单元测试文件test_resolve_prompts.py,覆盖内联提示、prompt_path、server_args.prompt_file_path及错误场景。
  4. 在run_suite.py中集成新测试到测试套件。
文件 模块 状态 重要度
python/sglang/multimodal_gen/runtime/entrypoints/diffusion_generator.py diffusion_generator modified 5.0
python/sglang/multimodal_gen/test/unit/test_resolve_prompts.py test added 4.0
python/sglang/multimodal_gen/test/run_suite.py test modified 3.0

关键符号

generate _resolve_prompts

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

评论区精华

sampling_params_kwargs 的 null 安全性 正确性

gemini-code-assist[bot] 指出 generate 方法中 sampling_params_kwargs 参数可能为 None,直接调用 .get() 会引发 AttributeError,建议初始化为空字典以确保健壮性。

结论:建议被采纳,在代码中初始化 sampling_params_kwargs 为字典,避免了潜在崩溃。 · 已解决

help text 的准确性 documentation

gemini-code-assist[bot] 指出 help text 从 'one per line' 改为 'the prompt' 不准确,因为实现仍支持多行提示,与 --prompt-file-path 的文档不一致。

结论:建议改回原版,被采纳,确保了文档与实现一致。 · 已解决

风险与影响

技术风险包括:

  1. sampling_params_kwargs为None时可能引发AttributeError,但通过review建议已修复。
  2. prompt_path优先级引入可能影响向后兼容性,但测试表明--prompt-file-path仍正常工作,且单元测试覆盖了此场景。
  3. 文件路径处理中,若路径不存在会引发FileNotFoundError,已通过错误处理缓解。整体风险较低,因变更范围小且测试覆盖充分。

影响范围限于diffusion生成器的提示解析逻辑:用户现在可以通过--prompt-path正确指定提示文件,优先级高于--prompt-file-path,提高了参数使用的灵活性。对系统其他部分无影响,是局部修复,不影响核心扩散模型或服务器运行。测试添加提升了代码可靠性,为未来类似参数处理提供范例。

潜在 null 引用风险 向后兼容性

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论