0Pricing
MLOps Academy · レッスン

Pydanticでリクエストを検証する

不正な入力がモデルに届く前に拒否します。

「Pydanticでリクエストを検証する」はCoddyKit上の無料MLOps Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これは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

ルートで使用する

エンドポイントの引数に、モデルの型アノテーションを付けます。FastAPIが解析と検証を行い、整ったオブジェクトを渡してくれます。

@app.post("/predict")
def predict(data: IrisInput):
    ...

フィールドにアクセスする

関数内では、検証済みデータは通常のオブジェクトです。単純なドットアクセスで各値を読み取れます。

x = [data.sepal_length, data.petal_width]
pred = model.predict([x])

422エラーを自動で返す

フィールドが欠けている場合や型が間違っている場合、FastAPIは明確なメッセージとともに422レスポンスを返します。エラー処理コードを書く必要はありません。

値の制約を追加する

Fieldを使って範囲を制限できます。ここでは測定値を0より大きくするため、負の値は自動的に拒否されます。

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):
    ...

なぜ重要なのか

強力な入力検証は、本番環境における最初の防御線です。不正な形式のリクエストを阻止し、モデルが常に整った想定どおりのデータだけを受け取るようにします。✅

クイックチェック

クライアントが必須フィールドのないリクエストを送信しました。Pydanticのおかげで、FastAPIはどうしますか。

まとめ

BaseModelスキーマを定義し、それを使ってルートの型を指定し、フィールド制約を追加しました。FastAPIに明確な422エラーで不正な入力を自動的に拒否させています。クリーンなデータを受け取れます。🙌

よくある質問

「Pydanticでリクエストを検証する」レッスンは無料ですか?

はい。「Pydanticでリクエストを検証する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、MLOps Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 MLOps Academyコースには全4レッスンが含まれています。

「Pydanticでリクエストを検証する」で何を学びますか?

不正な入力がモデルに届く前に拒否します。 ブラウザで直接実行するハンズオンコードでMLOps Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

MLOps Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのMLOps Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「Pydanticでリクエストを検証する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このMLOps Academyレッスンでコードを書いて実行できますか?

はい。すべてのMLOps Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 最初の/predictエンドポイント
  2. Pydanticでリクエストを検証する
  3. 起動時にモデルを一度だけ読み込む
  4. /healthレディネスチェックを追加する
← MLOps Academyに戻る