AI Engineering Academy · Pelajaran

Instructor: Pengekstrakan Bertatip dengan Pydantic

Gunakan pustaka instructor untuk menampal klien OpenAI supaya ia mencuba semula secara automatik dan mengesahkan respons terhadap skema Pydantic sehingga pengekstrakan berjaya.

Pelajaran 1 daripada 413 langkah

Instructor: Pengekstrakan Bertatip dengan Pydantic ialah pelajaran AI Engineering Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran AI Engineering Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus AI Engineering Academy merangkumi sejumlah 4 pelajaran.

Apakah Pustaka Instructor?

Pustaka instructor ialah pembalut nipis di sekeliling klien OpenAI yang menjadikan pengekstrakan berstruktur lebih boleh dipercayai. Daripada berharap model mengembalikan JSON yang sah, instructor menguatkuasakan skema Pydantic anda dan mencuba semula secara automatik jika pengesahan gagal. Ini menghapuskan keperluan untuk anda menulis logik penguraian dan percubaan semula tersuai.

Memasang Instructor

Pasang instructor dengan satu perintah pip. Ia memerlukan pydantic v2 dan SDK openai. Selepas dipasang, tampal klien OpenAI dengan instructor.patch() untuk mendapatkan klien dipertingkat yang menyokong parameter response_model pada setiap panggilan.

pip install instructor openai pydantic

Menampal Klien OpenAI

Instructor berfungsi dengan menampal klien OpenAI standard. Memanggil instructor.from_openai(client) mengembalikan klien baharu yang membolehkan setiap panggilan chat.completions.create menerima argumen kata kunci response_model. Panggilan API asas adalah sama — instructor hanya menambahkan penguatkuasaan skema di atasnya.

import instructor
from openai import OpenAI

client = instructor.from_openai(OpenAI())

Mentakrifkan Skema Pydantic Anda

Takrifkan bentuk data yang anda mahu terima daripada model sebagai Pydantic BaseModel. Nama medan, jenis dan rentetan dokumentasi ditukar secara automatik kepada Skema JSON yang dihantar kepada model. Gunakan nama medan yang jelas dan deskriptif supaya model memahami perkara yang perlu diisi. Tambahkan pengesah untuk peraturan perniagaan.

from pydantic import BaseModel, Field
from typing import Optional

class PersonExtract(BaseModel):
    name: str = Field(description='Full name of the person')
    age: Optional[int] = Field(None, description='Age in years if mentioned')
    email: Optional[str] = Field(None, description='Email address if present')
    company: Optional[str] = Field(None, description='Company or employer')

Membuat Panggilan Pengekstrakan

Hantar kelas model Pydantic anda sebagai response_model kepada klien yang telah ditampal. Instructor membina panggilan alat di sebalik tabir, model mengisi medan dan instructor menyahsiri hasilnya menjadi objek Python bertjenis. Anda mendapat pelengkapan automatik IDE sepenuhnya serta keselamatan jenis pada data yang dikembalikan.

result = client.chat.completions.create(
    model='gpt-4o-mini',
    response_model=PersonExtract,
    messages=[
        {'role': 'user', 'content': 'Alice Smith, 34, works at Acme Corp. Email: alice@acme.com'}
    ]
)
print(result.name)   # Alice Smith
print(result.email)  # alice@acme.com

Percubaan Semula Automatik Apabila Pengesahan Gagal

Jika model mengembalikan data yang gagal dalam pengesahan Pydantic, instructor secara automatik menghantar ralat pengesahan kembali kepada model dan memintanya membetulkan respons. Anda boleh menetapkan bilangan maksimum percubaan semula dengan parameter max_retries. Gelung pemulihan kendiri ini menghapuskan kebanyakan kegagalan pengekstrakan terpencil tanpa kod tambahan.

import instructor
from openai import OpenAI
from pydantic import BaseModel, field_validator

client = instructor.from_openai(OpenAI())

class Product(BaseModel):
    name: str
    price_usd: float

    @field_validator('price_usd')
    @classmethod
    def must_be_positive(cls, v):
        if v <= 0:
            raise ValueError('Price must be positive')
        return v

result = client.chat.completions.create(
    model='gpt-4o-mini',
    response_model=Product,
    max_retries=3,
    messages=[{'role': 'user', 'content': 'Widget costs $12.99'}]
)

Model Bersarang untuk Struktur Kompleks

Instructor mengendalikan model Pydantic bersarang dengan lancar. Anda boleh mentakrifkan skema bersarang mendalam dengan senarai, subobjek pilihan dan kesatuan berbeza. Model menerima Skema JSON penuh dan mesti mengisi semua medan wajib, menjadikannya sesuai untuk mengekstrak objek berstruktur seperti invois atau resume dengan berbilang bahagian.

from pydantic import BaseModel
from typing import List

class LineItem(BaseModel):
    description: str
    quantity: int
    unit_price: float

class Invoice(BaseModel):
    vendor: str
    invoice_number: str
    total_amount: float
    line_items: List[LineItem]

result = client.chat.completions.create(
    model='gpt-4o',
    response_model=Invoice,
    messages=[{'role': 'user', 'content': invoice_text}]
)

Menstrim Pengekstrakan Separa

Untuk tugasan pengekstrakan besar, instructor menyokong penstriman separa melalui instructor.Partial[YourModel]. Apabila model menjana token, anda menerima tika model yang diisi sebahagiannya dalam masa nyata. Ini berguna untuk memaparkan kemajuan dalam UI atau memproses medan sebaik sahaja diterima, berbanding menunggu respons lengkap.

import instructor
from openai import OpenAI

client = instructor.from_openai(OpenAI())

for partial in client.chat.completions.create_partial(
    model='gpt-4o-mini',
    response_model=PersonExtract,
    messages=[{'role': 'user', 'content': long_text}]
):
    print(partial.name, partial.email)

Mengekstrak Senarai Objek

Apabila anda perlu mengekstrak berbilang entiti daripada satu dokumen, balut model anda dalam List[YourModel]. Instructor mengendalikan skema tatasusunan JSON dan menyahsirikan setiap elemen menjadi objek Python bertjenis. Corak ini sesuai untuk mengekstrak semua orang yang disebut dalam artikel, semua transaksi dalam penyata atau semua tarikh dalam kontrak.

from pydantic import BaseModel
from typing import List

class Mention(BaseModel):
    entity: str
    entity_type: str  # PERSON, ORG, DATE, LOCATION
    context: str

result = client.chat.completions.create(
    model='gpt-4o-mini',
    response_model=List[Mention],
    messages=[{'role': 'user', 'content': article_text}]
)
for mention in result:
    print(f'{mention.entity} ({mention.entity_type})')

Memilih Model yang Tepat untuk Pengekstrakan

Tidak semua pengekstrakan memerlukan GPT-4o. Untuk skema rata yang mudah dengan kurang daripada 10 medan, gpt-4o-mini menghasilkan keputusan yang hampir sama pada kos satu persepuluh. Gunakan GPT-4o untuk skema bersarang yang kompleks, dokumen panjang atau kes yang mementingkan dapatan. Sentiasa tanda aras pada sampel data sebenar anda sebelum memilih model untuk produksi.

# Cost comparison for 1000 extractions
# GPT-4o-mini: ~$0.002 per call = $2.00 total
# GPT-4o: ~$0.015 per call = $15.00 total
# Test both on 50 samples and compare F1 score
# before committing to the expensive model

Merekod Log dan Menyahpepijat Pengekstrakan

Instructor menyediakan sistem hooks untuk kebolehcerapan. Daftarkan panggil balik on_completion untuk merekod respons API mentah, penggunaan token dan bilangan percubaan semula bagi setiap pengekstrakan. Ini membantu anda mengenal pasti jenis dokumen yang paling banyak menyebabkan kegagalan serta melaraskan skema atau gesaan anda dengan sewajarnya.

import instructor
from openai import OpenAI

client = instructor.from_openai(OpenAI())

@client.on('completion:response')
def log_usage(response):
    usage = response.usage
    print(f'Tokens: {usage.prompt_tokens}+{usage.completion_tokens}')

result = client.chat.completions.create(
    model='gpt-4o-mini',
    response_model=PersonExtract,
    messages=[{'role': 'user', 'content': text}]
)

Semakan Pantas

Uji pemahaman anda tentang pustaka instructor untuk pengekstrakan bertjenis.

Ulang Kaji Pelajaran

Dalam pelajaran ini, anda mempelajari bahawa instructor menampal klien OpenAI supaya menerima parameter response_model yang menguatkuasakan skema Pydantic, percubaan semula automatik apabila pengesahan gagal menjadikan pengekstrakan kukuh tanpa pengendalian ralat manual, dan model bersarang serta pengekstrakan senarai membolehkan anda menghurai dokumen kompleks yang mengandungi berbilang entiti menjadi objek Python bertjenis sepenuhnya. Seterusnya, kita akan mengendalikan data separa dan data yang hilang dalam skema yang diekstrak.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Instructor: Pengekstrakan Bertatip dengan Pydantic” percuma?

Ya — teks penuh “Instructor: Pengekstrakan Bertatip dengan Pydantic” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus AI Engineering Academy, tingkat taraf kepada CoddyKit PRO. Kursus AI Engineering Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Instructor: Pengekstrakan Bertatip dengan Pydantic”?

Gunakan pustaka instructor untuk menampal klien OpenAI supaya ia mencuba semula secara automatik dan mengesahkan respons terhadap skema Pydantic sehingga pengekstrakan berjaya. Anda berlatih AI Engineering Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan AI Engineering Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran AI Engineering Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Instructor: Pengekstrakan Bertatip dengan Pydantic” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran AI Engineering Academy ini?

Ya. Setiap pelajaran AI Engineering Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Instructor: Pengekstrakan Bertatip dengan Pydantic
  2. Mengendalikan Data Separa dan Hilang
  3. Pemprosesan Kelompok dengan Asinkron dan Baris Gilir
  4. Evolusi Skema dan Keserasian Ke Belakang
← Kembali ke AI Engineering Academy