结构化输出
有两种定义数据结构的方式,一种是用类定义(Pydantic),一种是用使用 JSON Schema 字典(tool use时接触的)
方式一:使用 Pydantic BaseModel
Pydantic 是一个数据验证库,通过继承 BaseModel 来定义数据结构:
from pydantic import BaseModel
from typing import List
class QAPair(BaseModel):
question: str
answer: str
# 使用示例
response_format = QAPair
优点:
- 提供完整的数据验证功能
- 自动类型转换,支持嵌套结构
- 与 OpenAI API 完全兼容,官方给出的最佳实践
方式二:直接使用 JSON Schema 字典
这种方式直接定义 JSON Schema:
schema = {
"type": "object",
"properties": {
"question": {"type": "string"},
"answer": {"type": "string"}
},
"required": ["question", "answer"],
"additionalProperties": false
}
# 使用示例
response_format = {"type": "json_schema", "schema": schema}
优点:
- 直接使用 JSON Schema 规范
- 灵活的结构定义,直白的添加更多验证规则