Skip to content

Instructor 简介

Instructor 是一个基于 Pydantic 的库,旨在简化从 LLM 获取结构化输出的过程。

为什么选择 Instructor?

在传统的 LLM 开发中,我们通常需要手动解析 JSON 字符串,这不仅容易出错,而且缺乏类型安全。Instructor 通过与 Pydantic 的深度集成,解决了这个问题。

传统 API vs Instructor

python
import openai
import json

client = openai.OpenAI()
response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Extract: John is 30"}],
)
# 需要手动解析 JSON,容易出错
data = json.loads(response.choices[0].message.content)
print(data["name"])  # 没有任何类型提示
python
import instructor
from openai import OpenAI
from pydantic import BaseModel

class User(BaseModel):
    name: str
    age: int

# Patch the client
client = instructor.from_openai(OpenAI())

# 直接返回 User 对象,拥有完整的类型提示
user = client.chat.completions.create(
    model="gpt-3.5-turbo",
    response_model=User,
    messages=[{"role": "user", "content": "Extract: John is 30"}],
)

print(user.name)  # IDE 会自动补全

核心特性

  • 类型安全:基于 Pydantic,提供完整的 IDE 自动补全和类型检查。
  • 自动验证:利用 LLM 的重试机制,自动修正格式错误的输出。
  • 多模型支持:支持 OpenAI, Anthropic, Gemini 等多种模型。
  • 灵活性:可以随时切换回原始 API,无缝集成到现有项目。

适用场景

  • 数据提取(从文本中提取结构化数据)
  • 实体识别
  • 文本分类
  • 增强 RAG(生成结构化查询)

学习文档整合站点