# Instructor:结构化 LLM 输出
## 何时使用此技能
在以下场景中使用 Instructor:
- **可靠地从 LLM 响应中提取结构化数据**
- **自动根据 Pydantic 模式验证输出**
- **通过自动错误处理重试失败的提取**
- **进行类型安全且经过验证的复杂 JSON 解析**
- **流式传输部分结果以进行实时处理**
- **通过一致的 API 支持多个 LLM 提供商**
**GitHub 星标**:15,000+ | **实战检验**:100,000+ 开发者使用
## 安装
bash
# 基础安装
pip install instructor
# 针对特定提供商
pip install "instructor[anthropic]" # Anthropic Claude
pip install "instructor[openai]" # OpenAI
pip install "instructor[all]" # 所有提供商
## 快速入门
### 基础示例:提取用户数据
python
import instructor
from pydantic import BaseModel
from anthropic import Anthropic
# 定义输出结构
class User(BaseModel):
name: str
age: int
email: str
# 创建 instructor 客户端
client = instructor.from_anthropic(Anthropic())
# 提取结构化数据
user = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[{
"role": "user",
"content": "John Doe 今年 30 岁。他的邮箱是
[email protected]"
}],
response_model=User
)
print(user.name) # "John Doe"
print(user.age) # 30
print(user.email) # "
[email protected]"
### 使用 OpenAI
python
from openai import OpenAI
client = instructor.from_openai(OpenAI())
user = client.chat.completions.create(
model="gpt-4o-mini",
response_model=User,
messages=[{"role": "user", "content": "提取:Alice, 25,
[email protected]"}]
)
## 核心概念
### 1. 响应模型 (Pydantic)
响应模型定义了 LLM 输出的结构和验证规则。
#### 基础模型
python
from pydantic import BaseModel, Field
class Article(BaseModel):
title: str = Field(description="文章标题")
author: str = Field(description="作者姓名")
word_count: int = Field(description="字数", gt=0)
tags: list[str] = Field(description="相关标签列表")
article = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[{
"role": "user",
"content": "分析这篇文章:[文章内容]"
}],
response_model=Article
)
**优势:**
- 通过 Python 类型提示实现类型安全
- 自动验证 (wor