> ## Documentation Index
> Fetch the complete documentation index at: https://arkor-92aeef0e-eng-615.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# コールバック

> コードから学習を観測する。

# コールバック

SDK は学習がストリーミングされる間、5 つのタイミングでコールバックを発火します。started、log、checkpoint、completed、failed の 5 種類です。TypeScript から離れずに、メトリックスの転送、途中チェックポイントの評価、独自の通知などができます。

```ts theme={null}
import { createTrainer } from "arkor";

const trainer = createTrainer({
  name: "support-bot-v1",
  model: "unsloth/gemma-4-E4B-it",
  dataset: { type: "huggingface", name: "arkorlab/triage-demo" },
  callbacks: {
    onStarted: ({ job }) => console.log("started", job.id),
    onLog: ({ step, loss }) => console.log("step", step, "loss", loss),
    onCheckpoint: async ({ step, infer }) => {
      const r = await infer({ messages: [{ role: "user", content: "Hi" }] });
      console.log("checkpoint", step, await r.text());
    },
    onCompleted: ({ job }) => console.log("done", job.id),
    onFailed: ({ error }) => console.error("failed", error),
  },
});

await trainer.start();
await trainer.wait();
```

5 つすべてオプションです。各コールバックは Promise を返してよく、SDK は次のイベントを発火する前にそれを await します。

## よくある用途

* **メトリックスの転送**: `onLog` で `step` と `loss` を自前のパイプライン（PostHog、Datadog など）に送る。
* **学習中の評価**: `onCheckpoint` で `infer()` を用意したプロンプトに対して呼び、サンプルをログに残せば、学習が正しい方向に向かっているか早めに判断できる。
* **完了時の通知**: `onCompleted` や `onFailed` から Slack に投稿、メールを送る。

より詳しいレシピは [学習中の評価](/ja/cookbook/mid-run-eval)、[Early Stopping](/ja/cookbook/early-stopping)、[通知](/ja/cookbook/notifications) を参照。

## リファレンス

完全な型シグネチャー、コールバック内で throw すると即座に `wait()` が reject されるルール（SSE 再接続ループには回されません。再接続ループはトランスポート障害のみを扱います）、各コールバックのパラメーター一覧は [コールバックリファレンス](/ja/sdk/callbacks) を参照してください。学習の概念的な流れは [実行ライフサイクル](/ja/concepts/lifecycle) にあります。
