Instructor 使用介绍:功能、价格与上手指南
Instructor 是一个基于 Pydantic 的 Python 库,用于从大语言模型获取结构化输出。本文介绍其核心功能、价格方案和上手指南,帮助开发者快速集成。
Instructor 是一个开源的 Python 库,专门用于从大语言模型(LLM)中获取结构化、可验证的输出。它基于 Pydantic 模型定义响应格式,自动处理提示、解析和验证,让开发者无需手动编写复杂的解析逻辑。
核心功能
- 结构化输出:通过 Pydantic 模型定义期望的 JSON 结构,Instructor 自动引导 LLM 返回符合格式的数据。
- 自动验证与重试:当模型输出不符合模型定义时,Instructor 会自动捕获验证错误并重新请求,直到成功或达到最大重试次数。
- 多模型支持:兼容 OpenAI、Anthropic、Google Gemini、Mistral、Ollama 等主流 LLM 提供商。
- 流式处理:支持流式提取部分结果,适合实时应用。
- 嵌套模型:可定义复杂的嵌套 Pydantic 模型,处理层级数据结构。
价格方案
Instructor 本身是开源库,采用 MIT 许可证,完全免费。你只需支付所调用 LLM API 的费用。官方还提供托管平台(Instructor Cloud),目前处于早期访问阶段,具体定价需联系官方。对于大多数开发者,直接使用开源版本即可。
上手指南
1. 安装
pip install instructor openai
2. 定义数据模型
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
email: str
3. 使用 Instructor 获取结构化输出
import instructor
from openai import OpenAI
from pydantic import BaseModel
client = instructor.from_openai(OpenAI())
class User(BaseModel):
name: str
age: int
email: str
user = client.chat.completions.create(
model="gpt-4o-mini",
response_model=User,
messages=[{"role": "user", "content": "提取:张三,28岁,zhangsan@example.com"}]
)
print(user)
运行后,你将获得一个已验证的 User 对象,可直接访问 user.name、user.age 等属性。
4. 处理验证错误
Instructor 会自动重试。你也可以自定义最大重试次数:
user = client.chat.completions.create(
model="gpt-4o-mini",
response_model=User,
max_retries=3,
messages=[...]
)
适用场景
- 从非结构化文本中提取实体(如姓名、日期、金额)
- 构建 API 响应格式化层
- 多步骤代理工作流中的状态管理
- 数据清洗与转换管道
结论
Instructor 是连接 LLM 与业务逻辑的实用桥梁。它免费、易用、支持多模型,能显著减少解析和验证代码。如果你需要从 LLM 获取可靠的结构化数据,Instructor 值得一试。