基于 Pydantic 的结构化输出库:定义一个模型类,就能拿到校验过的对象,自动处理 JSON 解析、校验失败重试、部分流式结果。做信息抽取、打标、表单填充的事实标准之一。
适用场景:从文本里抽字段、批量分类打标、把模型输出直接喂给数据库/API,不想再手写
json.loads + 一堆容错。structured-output pydantic json extraction instructor
操作步骤
- pip install instructor。
- 用 Pydantic 定义
response_model(字段、类型、说明写清楚,说明就是给模型的提示)。 - 用
instructor.from_openai(OpenAI(base_url=..., api_key=...))包一层,其余调用方式不变。
代码示例
import instructor
from openai import OpenAI
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
client = instructor.from_openai(OpenAI(base_url="https://tokenbuddy.cc/v1", api_key="{{API_KEY}}"))
user = client.chat.completions.create(model="your-model-id", response_model=User,
messages=[{"role": "user", "content": "John is 25 years old"}])
print(user) # User(name='John', age=25)开源项目信息
- 仓库:https://github.com/567-labs/instructor
- Stars 口径:第三方技能页称 15,000+,非官方口径,仅作参考
- 许可:本次检索未明示,以仓库 LICENSE 为准
接入本站 API:前提是所选模型在本站能稳定返回可解析的 JSON/工具调用;先拿本站便宜模型跑抽取,校验通过率不够再升档,不要默认用最贵模型抽字段。
注意事项
- ⚠️ 校验失败会触发重试 = 多花钱,高吞吐场景要测延迟和成本
- ⚠️ schema 写得含糊,模型就填得含糊——字段描述要像写给实习生
- ⚠️ 结构正确 ≠ 内容正确,业务规则(范围、ID 是否存在)仍要自己校验