0Pricing
AI Agents · บทเรียน

การตรวจสอบโครงร่างด้วย Pydantic

กำหนดผลลัพธ์เป็น Pydantic BaseModel ตรวจสอบ JSON และดักจับการตอบกลับผิดรูปแบบตั้งแต่เนิ่น ๆ

การตรวจสอบโครงร่างด้วย Pydantic เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

เหตุใดจึงใช้ Pydantic

Pydantic เป็นไลบรารีด้านความปลอดภัยของชนิดข้อมูลสำหรับ Python ที่ใช้กันเป็นมาตรฐานโดยพฤตินัย โดยมีความสามารถดังนี้:

  • ตรวจสอบพจนานุกรมเทียบกับคลาสที่มีคำอธิบายชนิดข้อมูล
  • แปลงชนิดข้อมูลให้ตรงกันหรือปฏิเสธเมื่อไม่ตรงกัน
  • สร้างสคีมา JSON สำหรับ OpenAI API โดยอัตโนมัติ
  • ทำงานร่วมกับ FastAPI, LangChain และ LlamaIndex ได้ดี

Defining a Schema

from pydantic import BaseModel, Field

class Product(BaseModel):
    name: str
    price: float = Field(gt=0, description='Positive price in USD')
    in_stock: bool
    tags: list[str] = []

Validating a Dict

data = {'name': 'Mug', 'price': 9.99, 'in_stock': True, 'tags': ['kitchen']}
product = Product.model_validate(data)
print(product.price)        # 9.99

Validating JSON

json_str = '{"name":"Mug","price":9.99,"in_stock":true}'
product = Product.model_validate_json(json_str)

Validation Errors

from pydantic import ValidationError

try:
    Product.model_validate({'name': 'Mug', 'price': -1, 'in_stock': True})
except ValidationError as e:
    print(e)
# [{'type': 'greater_than', 'loc': ('price',), 'msg': 'Input should be greater than 0', ...}]

Field-Level Validators

from pydantic import field_validator

class User(BaseModel):
    email: str

    @field_validator('email')
    @classmethod
    def must_have_at(cls, v):
        if '@' not in v:
            raise ValueError('Invalid email')
        return v.lower()

Nested Models

class Address(BaseModel):
    city: str
    zip: str

class User(BaseModel):
    name: str
    address: Address

data = {'name': 'Alice', 'address': {'city': 'Berlin', 'zip': '10115'}}
user = User.model_validate(data)
print(user.address.city)

Generating JSON Schema

schema = Product.model_json_schema()
# Pass straight to OpenAI tools or response_format

Using With OpenAI SDK

from openai import OpenAI
client = OpenAI()

response = client.beta.chat.completions.parse(
    model='gpt-4o-2024-08-06',
    messages=[{'role': 'user', 'content': 'Give me a product.'}],
    response_format=Product
)
product = response.choices[0].message.parsed

Optional Fields

from typing import Optional
class Order(BaseModel):
    id: int
    note: Optional[str] = None

Defaults

class Settings(BaseModel):
    units: str = 'celsius'
    notify: bool = True

ชื่อแทน

สำหรับการจับคู่ JSON แบบ snake_case กับ camelCase ของ Python หรือในทางกลับกัน:

class User(BaseModel):
    user_id: int = Field(alias='userId')

u = User.model_validate({'userId': 42})
print(u.user_id)   # 42

ยูเนียนแบบแยกแยะชนิด

สำหรับชนิดข้อมูลหลายรูปแบบ ให้ใช้ยูเนียนแบบแยกแยะชนิดของ Pydantic:

from typing import Literal, Union
from pydantic import Field

class TextMessage(BaseModel):
    type: Literal['text']
    content: str

class ImageMessage(BaseModel):
    type: Literal['image']
    url: str

Message = Annotated[Union[TextMessage, ImageMessage], Field(discriminator='type')]

เป้าหมายของการตรวจสอบความถูกต้อง

เหตุใดจึงใช้ Pydantic กับเอาต์พุตของเครื่องมือทุกครั้ง

สรุป

Pydantic เป็นชั้นสัญญาระหว่างเอาต์พุตของ LLM เอาต์พุตของเครื่องมือ และโค้ดของคุณ ควรใช้ทุกที่ และใช้ร่วมกับเอาต์พุตแบบมีโครงสร้างเพื่อรับประกันความถูกต้อง

คำถามที่พบบ่อย

บทเรียน “การตรวจสอบโครงร่างด้วย Pydantic” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตรวจสอบโครงร่างด้วย Pydantic” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบโครงร่างด้วย Pydantic”

กำหนดผลลัพธ์เป็น Pydantic BaseModel ตรวจสอบ JSON และดักจับการตอบกลับผิดรูปแบบตั้งแต่เนิ่น ๆ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การตรวจสอบโครงร่างด้วย Pydantic” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โหมด JSON และผลลัพธ์จากการเรียกใช้เครื่องมือ
  2. การตรวจสอบโครงร่างด้วย Pydantic
  3. ลูปซ่อมแซมผลลัพธ์ผิดรูปแบบ
  4. Instructor / Outlines สำหรับโครงสร้างที่รับประกัน
← กลับไปที่ AI Agents