跳到内容

您的首次提取

本指南将引导您使用 Instructor 创建您的首次结构化提取,重点介绍一个简单示例的基础知识。

基本示例

让我们从文本中提取一个人的姓名和年龄

from pydantic import BaseModel
import instructor
from openai import OpenAI

# 1. Define your data model
class Person(BaseModel):
    name: str
    age: int

# 2. Set up the Instructor client
client = instructor.from_openai(OpenAI())

# 3. Extract structured data
person = client.chat.completions.create(
    model="gpt-3.5-turbo",
    response_model=Person,
    messages=[
        {"role": "user", "content": "John Doe is 30 years old"}
    ]
)

# 4. Use the structured data
print(f"Name: {person.name}, Age: {person.age}")
# Output: Name: John Doe, Age: 30

工作原理

┌─────────────┐    ┌──────────────┐    ┌─────────────┐
│ Define      │ -> │ Instruct LLM │ -> │ Get Typed   │
│ Structure   │    │ to Extract   │    │ Response    │
└─────────────┘    └──────────────┘    └─────────────┘

让我们分解每个部分

1. 定义数据模型

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

这告诉 Instructor 要提取什么:- name:一个文本字符串 - age:一个整数

2. 设置客户端

client = instructor.from_openai(OpenAI())

这使用 Instructor 的功能封装了 OpenAI 客户端。

3. 提取结构化数据

person = client.chat.completions.create(
    model="gpt-3.5-turbo",
    response_model=Person,
    messages=[
        {"role": "user", "content": "John Doe is 30 years old"}
    ]
)

关键部分是:- model:要使用的 LLM - response_model:您的数据结构定义 - messages:要从中提取的文本

4. 使用结构化数据

print(f"Name: {person.name}, Age: {person.age}")

结果是一个具有类型安全属性的 Python 对象。

添加字段描述

您可以添加描述来帮助指导提取

from pydantic import BaseModel, Field

class Person(BaseModel):
    name: str = Field(description="Person's full name")
    age: int = Field(description="Person's age in years")

这些描述有助于模型理解要提取什么。

处理缺失信息

如果信息可能缺失,将字段设置为可选

from typing import Optional

class Person(BaseModel):
    name: str
    age: Optional[int] = None  # Now age is optional

下一步

既然您已经创建了您的首次提取,您可以:1. 了解更复杂的 响应模型 2. 设置不同的 客户端配置 3. 探索 简单对象提取