ตรวจสอบคำขอด้วย Pydantic
ปฏิเสธอินพุตที่มีรูปแบบไม่ถูกต้องก่อนส่งถึงโมเดล
ตรวจสอบคำขอด้วย Pydantic เป็นบทเรียน MLOps Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน MLOps Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส MLOps Academy มีบทเรียนทั้งหมด 4 บทเรียน
ข้อมูลขยะเข้า ขยะออก
หากไคลเอ็นต์ส่งฟิลด์หรือชนิดข้อมูลไม่ถูกต้อง โมเดลของคุณก็จะได้รับข้อมูลไร้สาระ คุณควรปฏิเสธข้อมูลนำเข้าที่ไม่ถูกต้อง ก่อน ที่ข้อมูลนั้นจะไปถึงโมเดล 🛡️
รู้จัก Pydantic
FastAPI ใช้ Pydantic เพื่อตรวจสอบคำขอ คุณอธิบายโครงสร้างข้อมูลด้วยคลาส Python แล้วระบบจะตรวจสอบให้โดยอัตโนมัติ
กำหนดสคีมา
คุณสร้างคลาสย่อยของ BaseModel และระบุฟิลด์พร้อมชนิดข้อมูล คลาสนี้จะกลายเป็นข้อตกลงสำหรับเนื้อหาคำขอของ /predict
from pydantic import BaseModel
class IrisInput(BaseModel):
sepal_length: float
petal_width: floatใช้ในเส้นทาง
คุณใส่คำอธิบายชนิดข้อมูลให้กับอาร์กิวเมนต์ของ endpoint โดยใช้โมเดลของคุณ FastAPI จะแยกวิเคราะห์ ตรวจสอบ และส่งมอบ object ที่สะอาดให้คุณ
@app.post("/predict")
def predict(data: IrisInput):
...เข้าถึงฟิลด์
ภายในฟังก์ชัน ข้อมูลที่ผ่านการตรวจสอบแล้วจะเป็นอ็อบเจ็กต์ปกติ คุณอ่านค่าแต่ละค่าด้วยการเข้าถึงแบบ จุด อย่างง่าย
x = [data.sepal_length, data.petal_width]
pred = model.predict([x])ข้อผิดพลาด 422 อัตโนมัติ
หากฟิลด์ขาดหายหรือมีชนิดข้อมูลไม่ถูกต้อง FastAPI จะส่งคืนการตอบกลับ 422 พร้อมข้อความที่ชัดเจน คุณไม่ต้องเขียนโค้ดจัดการข้อผิดพลาดเลย
เพิ่มข้อจำกัดของค่า
คุณบังคับใช้ช่วงของค่าได้ด้วย Field ในที่นี้ ค่าการวัดต้องมากกว่าศูนย์ ดังนั้นค่าติดลบจะถูกปฏิเสธโดยอัตโนมัติ
from pydantic import Field
sepal_length: float = Field(gt=0)ตรวจสอบลิสต์ของแถวข้อมูล
หากต้องการประเมินตัวอย่างจำนวนมากในครั้งเดียว คุณรับ list ของโมเดลไว้ Pydantic จะตรวจสอบทุกรายการในชุดข้อมูลให้คุณ
@app.post("/predict")
def predict(rows: list[IrisInput]):
...จัดทำเอกสารให้ฟิลด์
เพิ่มคำอธิบายและตัวอย่างให้กับฟิลด์ แล้วข้อมูลเหล่านั้นจะแสดงในหน้า /docs เพื่อให้ผู้เรียกทราบอย่างชัดเจนว่าต้องส่งอะไร 📘
sepal_length: float = Field(description="cm", examples=[5.1])กำหนดรูปแบบการตอบกลับด้วย
คุณประกาศ response_model ได้ เพื่อให้ผลลัพธ์ได้รับการตรวจสอบและจัดทำเอกสารเช่นเดียวกับข้อมูลนำเข้า ทำให้ข้อตกลงของ API รัดกุม
@app.post("/predict", response_model=Prediction)
def predict(data: IrisInput):
...เหตุผลที่เรื่องนี้สำคัญ
การตรวจสอบข้อมูลนำเข้าอย่างเข้มงวดคือแนวป้องกันด่านแรกในระบบจริง โดยจะบล็อกคำขอที่มีรูปแบบไม่ถูกต้อง เพื่อให้ model เห็นเฉพาะข้อมูลที่สะอาดและเป็นไปตามที่คาดไว้ ✅
ตรวจสอบอย่างรวดเร็ว
ไคลเอ็นต์ส่งคำขอที่ขาดฟิลด์ซึ่งจำเป็น FastAPI จะทำอะไรด้วยความช่วยเหลือของ Pydantic
ทบทวน
คุณกำหนดสคีมา BaseModel ใส่ชนิดข้อมูลให้เส้นทาง เพิ่มข้อจำกัดของฟิลด์ และให้ FastAPI ปฏิเสธข้อมูลนำเข้าที่ไม่ถูกต้องโดยอัตโนมัติพร้อมข้อผิดพลาด 422 ที่ชัดเจน ข้อมูลสะอาดพร้อมใช้งาน! 🙌
คำถามที่พบบ่อย
บทเรียน “ตรวจสอบคำขอด้วย Pydantic” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตรวจสอบคำขอด้วย Pydantic” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส MLOps Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส MLOps Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตรวจสอบคำขอด้วย Pydantic”
ปฏิเสธอินพุตที่มีรูปแบบไม่ถูกต้องก่อนส่งถึงโมเดล คุณปฏิบัติ MLOps Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน MLOps Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน MLOps Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ตรวจสอบคำขอด้วย Pydantic” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน MLOps Academy นี้ได้ไหม
ได้ บทเรียน MLOps Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ปลายทาง /predict แรกของคุณ
- ตรวจสอบคำขอด้วย Pydantic
- โหลดโมเดลเพียงครั้งเดียวตอนเริ่มต้น
- เพิ่มการตรวจสอบความพร้อมใช้งานที่ /health