Instructor / Outlines สำหรับโครงสร้างที่รับประกัน
Instructor (Python) และ Outlines จำกัดการถอดรหัส เพื่อไม่ให้โมเดลสร้าง JSON ที่ไม่ถูกต้องได้
Instructor / Outlines สำหรับโครงสร้างที่รับประกัน เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
ไลบรารีหลักสองรายการ
แนวทางหลักสองแบบสำหรับเอาต์พุตแบบมีโครงสร้างที่รับประกัน:
- Instructor (Jason Liu) — ตัวครอบ Pydantic สำหรับ OpenAI, Anthropic และผู้ให้บริการอีกมากมาย
- Outlines (.txt) — การถอดรหัสแบบมีข้อจำกัดสำหรับโมเดล OSS
Instructor Basics
# pip install instructor openai
import instructor
from openai import OpenAI
from pydantic import BaseModel
client = instructor.from_openai(OpenAI())
class User(BaseModel):
name: str
age: int
user = client.chat.completions.create(
model='gpt-4o-mini',
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
)
print(user.name, user.age)กลไกเบื้องหลังของ Instructor
เบื้องหลัง Instructor จะ:
- สร้างสคีมา JSON จากโมเดล Pydantic ของคุณ
- เพิ่มสคีมานั้นเป็นเครื่องมือในการเรียกใช้ OpenAI
- บังคับให้เรียกใช้เครื่องมือนั้น
- แยกวิเคราะห์อาร์กิวเมนต์และส่งคืนอินสแตนซ์ Pydantic
- ลองใหม่พร้อมซ่อมแซมเมื่อการตรวจสอบความถูกต้องเกิดข้อผิดพลาด
Instructor with Validation
from pydantic import field_validator
class User(BaseModel):
name: str
age: int
@field_validator('age')
@classmethod
def positive(cls, v):
if v <= 0:
raise ValueError('Age must be positive')
return v
# Instructor catches ValidationError and retries automaticallyStreaming Instructor
for partial in client.chat.completions.create_partial(
model='gpt-4o-mini',
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
):
print(partial)
# Streams partial Pydantic instances as fields fill in.Instructor with Anthropic
from anthropic import Anthropic
client = instructor.from_anthropic(Anthropic())
user = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=1024,
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
)Outlines สำหรับโมเดล OSS
Outlines ใช้การถอดรหัสที่จำกัดด้วยไวยากรณ์ โดยทำงานร่วมกับ HuggingFace, vLLM และ llama.cpp:
# pip install outlines
import outlines
model = outlines.models.transformers('mistralai/Mistral-7B-Instruct-v0.2')
generator = outlines.generate.json(model, User)
user = generator('Alice, 30')เหตุใดจึงใช้การถอดรหัสแบบมีข้อจำกัด
Outlines ตรวจสอบว่าโทเค็นใดถูกต้องตามสคีมาในแต่ละขั้นตอน แล้วปิดกั้นโทเค็นที่ไม่ถูกต้อง โมเดลจึงไม่สามารถส่ง JSON ที่ไม่ถูกต้องออกมาได้โดยแท้จริง
นิพจน์ปกติและตัวเลือกของ Outlines
คุณสามารถจำกัดผลลัพธ์ให้ตรงกับนิพจน์ปกติหรือรายการตัวเลือกได้:
import outlines.text.generate as g
yes_no = g.choice(model, ['yes', 'no'])
result = yes_no('Are bananas fruits?') # 'yes'การใช้ทั้งสองแนวทางร่วมกัน
เพื่อความน่าเชื่อถือสูงสุด:
- ใช้ Instructor สำหรับโมเดลที่มีการจัดการหรือโมเดลปิด (OpenAI, Anthropic)
- ใช้ Outlines สำหรับโมเดลที่โฮสต์ด้วยตนเอง
- ใช้โมเดล Pydantic ร่วมกันได้ทั้งสองแนวทาง
การเปรียบเทียบต้นทุน
- Strict Outputs (แบบเนทีฟของ OpenAI) — รวมอยู่ในราคาแล้ว
- Instructor — มีค่าใช้จ่ายเพิ่มเติมเล็กน้อยจากการลองใหม่เมื่อการตรวจสอบความถูกต้องล้มเหลว
- Outlines — ปริมาณงานลดลงเล็กน้อยจากการปิดกั้นโทเค็น แต่ไม่มีการเรียกใช้เพิ่มเติม
ควรใช้แบบใดเมื่อใด
| กรณีใช้งาน | เครื่องมือ |
|---|---|
| OpenAI/Anthropic | Instructor + Pydantic |
| OSS ที่โฮสต์ด้วยตนเอง | Outlines |
| เส้นทางที่ไวต่อเวลาแฝง | Structured Outputs ของ OpenAI (แบบเนทีฟ) |
แนวทางของ Outlines
Outlines รับประกันเอาต์พุตแบบมีโครงสร้างได้อย่างไร
สรุป
สำหรับ OpenAI/Anthropic ให้ใช้ Structured Outputs แบบเนทีฟหรือ Instructor สำหรับ OSS ให้ใช้ Outlines โมเดล Pydantic ทำหน้าที่เชื่อมทุกอย่างเข้าด้วยกัน
คำถามที่พบบ่อย
บทเรียน “Instructor / Outlines สำหรับโครงสร้างที่รับประกัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Instructor / Outlines สำหรับโครงสร้างที่รับประกัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Instructor / Outlines สำหรับโครงสร้างที่รับประกัน”
Instructor (Python) และ Outlines จำกัดการถอดรหัส เพื่อไม่ให้โมเดลสร้าง JSON ที่ไม่ถูกต้องได้ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “Instructor / Outlines สำหรับโครงสร้างที่รับประกัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โหมด JSON และผลลัพธ์จากการเรียกใช้เครื่องมือ
- การตรวจสอบโครงร่างด้วย Pydantic
- ลูปซ่อมแซมผลลัพธ์ผิดรูปแบบ
- Instructor / Outlines สำหรับโครงสร้างที่รับประกัน