ArkorAlpha

レシピ

Arkor の学習で TypeScript が現時点でできることを示すレシピ集。

このセクションは、Arkor の学習にロジックを組み込むときによく使うパターンを集めたものです。各レシピは現在の公開 SDK の中だけで完結します: ロードマップ API も、内部 import も、ランタイムをフォークする必要もありません。

レシピ一覧

レシピ何を示すかベース
学習中の評価チェックポイントごとに固定プロンプトで半学習済みモデルをサニティーチェックし、学習完了前に確認する。onCheckpoint({ infer })
構造化出力と Function Callingチェックポイントの出力を JSON Schema で型として固定し、型付きオブジェクトとしてパースする。モデルから関数も呼ばせる。infer({ responseFormat, tools })
Loss が悪化したら学習を自動で打ち切る(Early Stopping)Loss(モデルの誤差)の曲線が悪い方向に進んだら学習を自動 Abort し、バックエンドの GPU も止める。onLogAbortSignaltrainer.cancel()
Slack / Discord 通知トレーナーファイル内で完結したまま、完了時 / 失敗時に Webhook を叩く。onCompleted / onFailedfetch
プログラムからの学習実行(CLI なし)arkor dev / arkor start を介さず、Next.js API ルート、cron ワーカー、CI から学習を実行する。runTrainerTrainer.start / wait
スターターテンプレートのカスタマイズ生成されたテンプレートを起点として扱う。データセット、ハイパーパラメーター、コールバック、ベースモデルを変える。createTrainerDatasetSource

始める前にコールバックの例外について 1 つだけ

下記の 3 つのレシピはライフサイクルコールバック内にロジックを置きます。コールバック内の throwtrainer.wait() をそのエラーで即座に reject します(SDK § ライフサイクルコールバック)。SSE 再接続ループには送られず、黙ってリトライされることも、イベントが握りつぶされることもありません。再接続ループはトランスポート障害(接続断や一時的な 5xx)のみを扱います。致命的でない扱いにしたい場合はコールバック内で catch してください。

ここのレシピは決定的に動かすために単純な慣例を使います:

  • 状態変更は外側の変数経由で。 throw の代わりに AbortController、クロージャーのフラグ、返した Promise を使う。
  • 副作用はコールバック内で try / catch でガード。 Slack 投稿が失敗したらログだけ残して継続し、外に漏らさない。

これは制限ではなくパターンです。これを身につければ、レシピはきれいに合成できます。

このセクションが扱わないこと

  • 本番配信のレシピ。 学習済みアダプタを安定した *.arkor.app エンドポイントで公開する機能自体は既にあります(Deployments 参照)。このセクションに配信系レシピがまだ無いだけです(createArkordeploy マニフェストスロットは型上の予約フィールドで実装はありません)。
  • プロジェクトごとの複数トレーナー。 createArkor は単一の trainer を受け付けます。複数を一緒に走らせるのはマニフェストパターンではなくプログラムによる実行パターンです(該当レシピ参照)。
  • バックエンドが受け付ける以外のカスタムベースモデル。 model フィールドはクラウド API にそのまま転送されます。現在対応しているのは Gemma のみです。レシピはそれ以外のモデルがエンドツーエンドで動く前提では書かれていません。