6. 结构化生成与 API

结构化生成与 API#

这一部分在第一版里会被明确拆成两个子主题:一类是结构化生成本身,例如 constrained decoding、schema 或 regex 约束、tool parser / function call;另一类是对外接口和协议表面,例如 OpenAI-compatible API、native/offline API 以及协议适配。

这一节最容易写歪的地方,是把“生成约束”与“协议兼容”混成一件事。实际上,前者回答的是模型输出怎样被限制,后者回答的是调用方怎样把请求送进系统。因此这一节虽然放在同一 section 下,但必须拆成两章写,才能保持术语和职责清晰。

本节包含什么#

本节包含两章:

  1. 6.1 结构化生成与约束解码,负责解释 json_schemaregex、EBNF、tool parser / function calling 怎样接入 generation path。
  2. 6.2 API 表面与协议集成,负责解释 OpenAI-compatible APIs、native APIs、offline engine surface 与内部 runtime path 的关系。

这一节与前后章节的关系#

这一节放在 5. 执行模型 之后,是因为如果不知道 ForwardBatch、sampling 和 decode loop 怎样运转,就很难说明约束究竟插在什么位置;它又放在 7. 代码导读 之前,是因为在理解了“结构化生成”和“接口表面”之后,再去读仓库目录和测试材料,代码路径会更容易对齐到正确语义层。

本节对应哪些代码路径#

这一节的主锚点包括 python/sglang/srt/sampling/sampling_params.pypython/sglang/lang/api.pypython/sglang/launch_server.pypython/sglang/srt/entrypoints/http_server.pydocs/advanced_features/structured_outputs.ipynbdocs/advanced_features/tool_parser.ipynbdocs/basic_usage/openai_api.rstdocs/basic_usage/native_api.ipynbdocs/basic_usage/offline_engine_api.ipynb。它们共同回答的是“约束怎样进入 generation path、协议表面怎样回到 runtime”。