0Pricing
Learn AI with Python · درس

مخططات Pydantic للطلبات والاستجابات

‏BaseModel والتحقق من الحقول وتلميحات الأنواع وresponse_model ومعالجة أخطاء التحقق

مخططات Pydantic للطلبات والاستجابات درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

لماذا نستخدم المخططات؟

تتسبب القواميس الخام في الأخطاء. تحدد نماذج Pydantic البنية الدقيقة للطلبات والاستجابات، وتتحقق تلقائيًا من الأنواع وتوثّق واجهة API الخاصة بكم. ويدعمها FastAPI أصلاً.

BaseModel

ترث مخططات Pydantic من BaseModel. ويصبح كلّ attribute محدد النوع حقلًا خاضعًا للتحقق؛ وتُرفض الأنواع الخاطئة قبل تشغيل شيفرتكم.

from pydantic import BaseModel

class PredictRequest(BaseModel):
    features: list[float]

مخطط الطلب

حدّدوا ما يجب على العملاء إرساله. في هذا المثال، يجب أن تكون features قائمة من الأعداد العشرية، ويمكنكم إضافة حقول أخرى مثل إصدار النموذج أو معرّف الطلب.

class PredictRequest(BaseModel):
    features: list[float]
    model_version: str = "latest"

مخطط الاستجابة

حدّدوا ما تعيده واجهة API الخاصة بكم حتى يحصل العملاء على عقد ثابت وموثّق.

class PredictResponse(BaseModel):
    prediction: float
    probability: float

استخدام المخططات في نقطة النهاية

حدّدوا نوع المعامل باستخدام نموذج الطلب، وسيحلّل FastAPI جسم JSON للطلب ويتحقق من صحته تلقائيًا، ثم يحوّله إلى كائن محدد النوع.

from fastapi import FastAPI
app = FastAPI()

@app.post("/predict")
def predict(req: PredictRequest):
    pred = model.predict([req.features])[0]
    return {"prediction": pred, "probability": 0.92}

معامل response_model

مرّروا response_model إلى مزخرف نقطة النهاية. يتحقق FastAPI من المخرجات ويصفّيها لتطابق المخطط، فيزيل أي حقول إضافية ويوثّق الاستجابة في /docs.

@app.post("/predict", response_model=PredictResponse)
def predict(req: PredictRequest) -> PredictResponse:
    return PredictResponse(prediction=1.0, probability=0.92)

list[float] لمتجهات السمات

تعني كتابة نوع السمات كـ list[float] أن Pydantic سيرفض السلاسل النصية أو الأنواع المختلطة قبل الاستدلال، فيكتشف الإدخال غير الصحيح عند الحد الفاصل بدلًا من اكتشافه في عمق شيفرة النموذج.

HTTPException للأخطاء

عندما تنجح عملية التحقق من الأنواع، لكن تفشل قواعد العمل (مثل عدد السمات الخاطئ أو النموذج غير المعروف)، ارفعوا HTTPException مع رمز حالة ورسالة.

from fastapi import HTTPException

@app.post("/predict")
def predict(req: PredictRequest):
    if len(req.features) != 4:
        raise HTTPException(status_code=422,
            detail="Expected exactly 4 features")
    return {"prediction": model.predict([req.features])[0]}

أدوات التحقق من الحقول

يفرض field_validator قواعد مخصصة على حقل ما، مثل رفض قوائم السمات الفارغة، وذلك قبل تشغيل منطق نقطة النهاية حتى.

from pydantic import BaseModel, field_validator

class PredictRequest(BaseModel):
    features: list[float]

    @field_validator("features")
    @classmethod
    def not_empty(cls, v):
        if not v:
            raise ValueError("features cannot be empty")
        return v

قيود الحقول

استخدموا Field لفرض قيود تصريحية، مثل الحد الأدنى للطول أو النطاقات الرقمية، والتي تظهر أيضًا في التوثيق المُنشأ تلقائيًا.

from pydantic import BaseModel, Field

class PredictRequest(BaseModel):
    features: list[float] = Field(min_length=1)

استجابات 422 تلقائية

عندما يفشل الطلب في اجتياز عملية التحقق من Pydantic، يعيد FastAPI تلقائيًا استجابة 422 Unprocessable Entity مع جسم خطأ مفصّل، من دون الحاجة إلى شيفرة إضافية. وهذه إحدى أبرز مزايا FastAPI في زيادة الإنتاجية.

اختبار سريع

اختبروا معرفتكم بمخططات Pydantic.

مراجعة

عرّفتم مخططات BaseModel للطلبات والاستجابات، واستخدمتم list[float] للسمات، وطبّقتم response_model، ورفعتم HTTPException لأخطاء العمل، وأضفتم أدوات التحقق من الحقول. ويعيد FastAPI تلقائيًا استجابة 422 عند الإدخال غير الصالح. التالي: تحميل النموذج وتقديمه.

الأسئلة الشائعة

هل درس «مخططات Pydantic للطلبات والاستجابات» مجاني؟

نعم — نص درس «مخططات Pydantic للطلبات والاستجابات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «مخططات Pydantic للطلبات والاستجابات»؟

‏BaseModel والتحقق من الحقول وتلميحات الأنواع وresponse_model ومعالجة أخطاء التحقق تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «مخططات Pydantic للطلبات والاستجابات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات FastAPI لمهندسي التعلم الآلي
  2. مخططات Pydantic للطلبات والاستجابات
  3. تحميل نماذج التعلم الآلي وتقديمها
  4. تحويل واجهة النموذج إلى حاوية Docker
← العودة إلى Learn AI with Python