X-hub

Instructor AI: 强大的结构化输出提示工具

Instructor AI 介绍

Instructor 是一个强大的 Python 工具,它通过结构化提示和验证来增强大语言模型(LLM)的输出能力。它的主要目标是让 LLM 的输出更加可控、规范和可靠。

主要特点

  1. 结构化输出: 使用 Pydantic 模型定义输出结构,确保 LLM 生成符合预期格式的内容
  2. 类型安全: 自动验证输出是否符合定义的数据类型和约束条件
  3. 多模型支持: 支持 OpenAI、Anthropic Claude 等多个 LLM 模型
  4. 简单易用: 通过简洁的 API 设计,让开发者能够快速上手

安装使用

pip install instructor

基本用法示例

以下是一个简单的示例,展示如何使用 Instructor 来获取结构化的输出:

import instructor
from pydantic import BaseModel
from openai import OpenAI

# 启用 instructor
client = instructor.patch(OpenAI())

# 定义输出结构
class UserInfo(BaseModel):
    name: str
    age: int
    interests: list[str]

# 使用模型生成结构化输出
user = client.chat.completions.create(
    model="gpt-3.5-turbo",
    response_model=UserInfo,
    messages=[
        {"role": "user", "content": "张三是一个 25 岁的程序员,喜欢编程、阅读和旅行"}
    ]
)

print(user.name)  # 输出: 张三
print(user.age)   # 输出: 25
print(user.interests)  # 输出: ['编程', '阅读', '旅行']

高级特性

1. 嵌套模型支持

Instructor 支持复杂的嵌套数据结构:

from pydantic import BaseModel
from typing import List

class Address(BaseModel):
    street: str
    city: str
    country: str

class Person(BaseModel):
    name: str
    addresses: List[Address]

2. 验证器和约束条件

可以添加自定义验证规则:

from pydantic import BaseModel, Field

class User(BaseModel):
    age: int = Field(gt=0, lt=150)  # 年龄必须在 0-150 之间
    email: str = Field(regex=r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")

3. 部分响应处理

支持处理部分完成的响应:

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    response_model=UserInfo,
    messages=[...],
    partial=True
)

实际应用场景

  1. 数据提取: 从非结构化文本中提取结构化信息
  2. API 响应解析: 规范化 API 响应的格式
  3. 内容生成: 生成符合特定格式要求的内容
  4. 数据验证: 确保生成的数据符合业务规则

最佳实践

  1. 定义清晰的模型: 使用明确的字段名称和类型
  2. 添加适当的验证: 使用验证器确保数据质量
  3. 处理异常情况: 妥善处理验证失败的情况
  4. 使用类型注解: 充分利用 Python 的类型系统

总结

Instructor 是一个非常实用的工具,它通过结构化输出和验证机制,大大提高了使用 LLM 开发应用的效率和可靠性。无论是数据提取、内容生成还是其他 AI 应用场景,Instructor 都能帮助开发者更好地控制和规范 LLM 的输出。

参考资源

评论