---
title: "infer"
description: "チェックポイントコールバック内から学習中のモデルを呼ぶ。"
---

[`onCheckpoint`](/ja/docs/framework/guides/sdk/callbacks) の中で SDK は `infer` という関数を渡してくれます。これを呼ぶと、直前に保存されたチェックポイントに対する推論リクエストを実行し、生の `Response` が返ります。学習途中のモデルを完了前に評価するための経路です。

```ts
onCheckpoint: async ({ step, infer }) => {
  const res = await infer({
    messages: [{ role: "user", content: "I can't log in." }],
  });
  console.log(`step=${step}`, await res.text());
}
```

デフォルトのレスポンスは SSE ストリームです（Studio の Playground が読み取るのと同じ形）。単一 JSON ボディが欲しい場合は `stream: false`:

```ts
const res = await infer({ messages, stream: false });
const data = await res.json();
```

`infer` は **`CheckpointContext` 上にのみ** 存在します。トップレベルの export はありません。コールバックの引数として受け取るため、呼び出しが正しいジョブとステップに自動的にスコープされます。

## よくあるシナリオ

- **サニティーチェック。** ステップ 50 とステップ 100 の出力を固定プロンプトで比較。
- **JSON Schema で出力を制約。** `responseFormat: { type: "json_schema", json_schema: { name, schema, strict: true } }` を渡すと、レスポンスの `choices[0].message.content` が JSON 文字列として返り、`JSON.parse` で型付きオブジェクトとして使える。[構造化出力と Function Calling レシピ](/ja/docs/framework/cookbook/structured-outputs) を参照。
- **関数を呼ばせる。** `tools` + `toolChoice` を渡すと、チェックポイント検査の中からモデルにツール呼び出しをリクエストさせられる。同じレシピを参照。
- **カスタム Early Stopping。** `abortSignal` + `cancel()` と組み合わせて、迷走した学習を止める。[Early Stopping レシピ](/ja/docs/framework/cookbook/early-stopping) を参照。
- **ライブプレビュー。** チェックポイントの出力を Slack や自前のレビューキューに転送。

## リファレンス

`InferArgs` の完全な型、ストリーミングと JSON のトレードオフ、SSE フレーム形式、別チェックポイント／別モデルへの再ターゲット制約、SSE デルタストリームのデコード方法は [`infer` リファレンス](/ja/docs/framework/sdk/infer) を参照してください。
