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.
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 pydanticMenampal 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.comPercubaan 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 modelMerekod 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.
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
- Instructor: Pengekstrakan Bertatip dengan Pydantic
- Mengendalikan Data Separa dan Hilang
- Pemprosesan Kelompok dengan Asinkron dan Baris Gilir
- Evolusi Skema dan Keserasian Ke Belakang