
# 参考：Structured Outputs
#### 什么是Structured Outputs
Structured Outputs是指在大模型请求中通过用户给定的指定格式信息（如json格式，sql格式），生成严格符合格式要求的相关文本。Guided Decoding相关特性可以支持用户给定格式的文本生成。
#### 什么是Guided Decoding
Guided Decoding是一种用于生成文本的策略，通过提供额外的上下文或约束，来引导模型生成更符合预期的结果。
比如使用OpenAI启动服务，通过配置guided_json参数使用JSON Schema的架构来举例。
JSON Schema使用专门的关键字来描述数据结构，例如标题title、 类型type、属性properties，必须属性required 、定义definitions等，JSON Schema通过定义对象属性、类型、格式的方式来引导模型生成一个包含用户信息的JSON对象。
其优势主要如下：
- **上下文引导**：通过提供特定的格式规范模板，模型可以更好地理解每个字段生成内容的属性并过滤无关信息。
- **约束生成**：可以设定某些限制条件，如关键词、主题或风格，使生成的内容更加一致和相关。
- **提高质量**：通过引导，生成的文本通常严格符合用户指定格式要求，逻辑严密严谨性强。
 
#### 实现原理
通过将用户给定的内容格式模板（json schema，CFG语言，正则表达式等）转换为FSM，对于输出tokens进行引导和过滤。通过FSM各状态之间的转移规则限定格式化输出中每个字段的内容，通过概率干预的方式排除不符合条件的tokens，从而规范化生成文本。
