
instructor
用Pydantic定义LLM输出,自动校验重试
Instructor 是一个 Python 库,用于让大语言模型(LLM)输出结构化数据。它通过 Pydantic 模型定义期望的输出格式,自动生成 JSON Schema 或函数调用参数,并验证模型返回的结果,从而解决 LLM 输出不可靠、格式混乱的问题。核心能力包括:支持 OpenAI、Anthropic、Cohere 等多种模型提供商;自动重试与错误修复;流式解析部分结果;与 Pydantic v2 深度集成,支持嵌套模型、枚举、日期等复杂类型。开发者只需定义数据类,即可获得类型安全、可验证的 LLM 响应,大幅简化从 LLM 提取结构化信息的流程。
项目数据
使用教程
环境要求
- Python 环境(Instructor 是 Python 库)
- 已选好包管理器:pip、uv 或 poetry 之一
- 用于调用的 LLM 提供商凭证
安装与启动步骤
-
1用 pip 安装
最通用的安装方式,在已激活的虚拟环境中执行,几秒即可完成。
pip install instructor -
2或用 uv 安装
如果你用 uv 管理依赖,用这条命令把 instructor 加入项目依赖。
uv add instructor -
3或用 poetry 安装
Poetry 项目使用这条命令添加依赖,二选一即可,不要重复安装。
poetry add instructor -
4定义模型并调用
用 Pydantic 定义期望结构,通过 from_provider 创建客户端并传入 response_model。
import instructor from pydantic import BaseModel # Define what you want class User(BaseModel): name: str age: int # Extract it from natural language client = instructor.from_provider("openai/gpt-4o-mini") user = client.chat.completions.create( response_model=User, messages=[{"role": "user", "content": "John is 25 years old"}], ) print(user) # User(name='John', age=25)
如何确认成功
运行脚本后打印出 User(name='John', age=25) 形式的 Pydantic 对象,而非原始 JSON 字符串,即表示成功。
常见问题
Q:还需要自己解析 JSON 或写重试逻辑吗?
A:不需要。README 明确说明无需 JSON 解析、错误处理和重试,只要定义好 Pydantic 模型即可拿到结构化数据。
Q:Instructor 和 PydanticAI 该怎么选?
A:快速、低成本的结构化抽取用 Instructor;如果应用需要更丰富的 agent 运行、内置可观测性或可分享的 trace,则改用 PydanticAI。
Q:支持哪些模型提供商?
A:通过 from_provider 指定,例如 "openai/gpt-4o-mini",项目也支持 Anthropic、Cohere 等多种提供商。
Q:返回结果为什么是对象而不是字典?
A:Instructor 基于 Pydantic 做校验和类型转换,返回的是模型实例,因此可直接用属性访问并享受 IDE 类型提示。
注意事项
- 使用前需按所选提供商要求配置对应的 API Key(README 未给出具体环境变量名,请以提供商文档为准)。
- Instructor 定位是 schema-first 的结构化抽取,保持简单和低成本;复杂 agent 场景建议换用 PydanticAI。
- pip、uv、poetry 三种安装方式任选其一,避免在同一环境中混用造成依赖冲突。
核心亮点
- 基于Pydantic模型自动生成JSON Schema,无需手写提示词约束格式
- 内置重试与错误修复机制,当模型输出不符合结构时自动重新请求
- 支持流式解析,可边生成边获取部分结构化结果,适合实时应用
不足之处
- 强依赖OpenAI等API的function calling能力,对本地模型支持有限
- 文档和示例主要围绕OpenAI,其他提供商集成细节较少
适用场景
- 从用户评论中提取情感、实体和评分等结构化信息
- 将LLM生成的自由文本转换为数据库可存储的JSON对象
- 构建多步骤Agent时,确保每一步的工具调用参数格式正确
替代项目
outlines、guidance
项目介绍
上一篇:llm
下一篇:llm-agents.nix
同类项目推荐
ComfyUI_Custom_Nodes_AlekPet
开源
给 ComfyUI 装上语音翻译和姿态检测,工作流更全能
Custom nodes that extend the capabilities of Comfyui
langchain
开源
组装 AI 应用的乐高积木,从想法到上线不换工具
The agent engineering platform.
transformers
开源
全球最大的模型仓库全家桶,想用的模型一把抓
Transformers: the model-definition framework for state-of-the-art machine learning m···
bruno
开源
把 API 测试当代码管理,用 Git 搞定协作与版本追踪
Opensource IDE For Exploring and Testing API's (lightweight alternative to Postman/I···