
Instructor 框架评测:结构化输出的优雅方案
结构化输出的痛点 让 LLM 输出结构化数据是工程落地中最常见的需求:解析简历提取字段、分类用户意图、生成配置文件。传统做法是在 Prompt 里写"请输出 JSON",然后祈祷模型不要在 JSON 前面加一句"好的,这是你要的结果:"。Instructor 框架优雅地解决了这个问题。 Instructor 核心原理 Instructor 的设计哲学极其简洁:用 Python 类型注解定义结构,让 LLM 填充结构,自动验证和修复。 工作流程: 你定义一个 Pydantic 模型(即期望的输出结构) Instructor 将模型 Schema 注入 Prompt LLM 生成输出 Pydantic 验证输出 验证失败 → 自动将错误信息反馈给 LLM 重试 快速上手 安装与基础用法 pip install instructor import instructor from pydantic import BaseModel, Field from openai import OpenAI # 启用 Instructor client = instructor.from_openai(OpenAI()) # 定义输出结构 class UserInfo(BaseModel): name: str = Field(description="用户全名") age: int = Field(description="用户年龄", ge=0, le=150) email: str = Field(description="邮箱地址") role: str = Field(description="职位", default="unknown") # 调用——直接返回结构化对象 user = client.chat.completions.create( model="gpt-4o", response_model=UserInfo, messages=[{"role": "user", "content": "张三,28岁,邮箱 zhangsan@example.com,高级工程师"}], ) print(user.name) # "张三" print(user.age) # 28 print(user.email) # "zhangsan@example.com" print(user.role) # "高级工程师" print(type(user)) # <class 'UserInfo'> 注意:返回的不是字典,是经过验证的 Pydantic 对象。类型安全,IDE 补全全开。 ...