综合介绍
Instructor 是一个流行的 Python 库,专为处理大语言模型(LLMs)的结构化输出而设计。它基于 Pydantic 构建,提供了一个简单、透明且用户友好的 API,用于管理数据验证、重试和流式响应。Instructor 每月下载量超过一百万,广泛应用于各种 LLM 工作流中。该库支持多种编程语言,包括 Python、TypeScript、Ruby、Go 和 Elixir,能够与多种 LLM 提供商无缝集成,超越了 OpenAI 的支持范围。
推荐阅读:大模型结构化数据输出方法:精选 LLM JSON 资源列表、Outlines:通过正则表达式、JSON或Pydantic模型生成结构化文本输出、AI Functions:将输入内容转换为结构化输出的(API)服务。
功能列表
- 响应模型:使用 Pydantic 模型定义 LLM 输出的结构。
- 重试管理:轻松配置请求的重试次数。
- 数据验证:确保 LLM 响应符合预期。
- 流式支持:轻松处理列表和部分响应。
- 灵活的后端:与多种 LLM 提供商无缝集成。
- 多语言支持:支持 Python、TypeScript、Ruby、Go 和 Elixir 等多种编程语言。
使用帮助
安装流程
要安装 Instructor,只需运行以下命令:
pip install -U instructor
基本使用
以下是一个简单的示例,展示了如何使用 Instructor 从自然语言中提取结构化数据:
import instructor
from pydantic import BaseModel
from openai import OpenAI
# 定义所需的输出结构
class UserInfo(BaseModel):
name: str
age: int
# 初始化 OpenAI 客户端并与 Instructor 集成
client = instructor.from_openai(OpenAI())
# 从自然语言中提取结构化数据
user_info = client.chat.completions.create(
model="gpt-4o-mini",
response_model=UserInfo,
messages=[{"role": "user", "content": "John Doe is 30 years old."}]
)
print(user_info.name) # 输出: John Doe
print(user_info.age) # 输出: 30
使用钩子
Instructor 提供了一个强大的钩子系统,允许您在 LLM 交互过程的各个阶段进行拦截和日志记录。以下是一个简单的示例,展示了如何使用钩子:
import instructor
from openai import OpenAI
from pydantic import BaseModel
class UserInfo(BaseModel):
name: str
age: int
# 初始化 OpenAI 客户端并与 Instructor 集成
client = instructor.from_openai(OpenAI())
# 使用钩子记录交互过程
client.add_hook("before_request", lambda request: print(f"Request: {request}"))
client.add_hook("after_response", lambda response: print(f"Response: {response}"))
# 从自然语言中提取结构化数据
user_info = client.chat.completions.create(
model="gpt-4o-mini",
response_model=UserInfo,
messages=[{"role": "user", "content": "Jane Doe is 25 years old."}]
)
print(user_info.name) # 输出: Jane Doe
print(user_info.age) # 输出: 25
高级用法
Instructor 还支持与其他 LLM 提供商集成,并提供了灵活的配置选项。您可以根据需要自定义请求的重试次数、数据验证规则和流式响应处理方式。