コンテンツへスキップ
すべての記事
約 6 分で読めます

AI リクエストは始まりにすぎない。

認可、耐久性のある実行、使用量記録、ユーザーが戻れる結果を通じてタスクを追う。

supastack チーム

モデルが走る前

ユーザーはプロンプトと cheap・fast・smart のようなエイリアスを提供します。本番サーバーはタスクを受け入れる前に認証、ワークスペース所有権、権限をチェックします。プロバイダーのモデル ID と秘密情報はその境界の背後に留まります — 実際のプロバイダーモデルへの対応はコントラクトではなく設定なので、フレンドリーなエイリアスがクライアントに必要な唯一のモデル語彙です。

耐久性のあるタスクレコードは、バックグラウンド実行が始まる前にリクエストに ID を与えます。その ID は送信、ワーカー、使用量レコード、結果を結びつけます。ユーザーが別の場所へ移動した後に作業を回復する方法も提供します。

順序が重要です:高価な作業は安いチェックを通ってから始まります。何かがキューに入る前に認証・所有権・権限を検証することで、未認証や未払いのリクエストがプロバイダーに届くことを防ぎ — 失敗をユーザーに説明可能にします。AI モジュールガイドがそれらのチェックの居場所を文書化し、ワークスペース境界の記事が所有権がクライアントから信頼されるのではなくサーバーで導出される理由を説明しています。

誰のキー、誰の上限かを決める

AI 機能は支出の決定です。supastack ではワークスペースが独自のプロバイダーキーを持ち込めます — 暗号化して保存され、クライアントには公開されません — あるいはプラットフォームキーで動かし、モデル価格カタログに対してワークスペースごとの予算を強制します。どんな実装でも問いは同じです:誰が支払い、上限はどこで強制されるか?

強制はブラウザ側の見積もりではなくサーバーワークフローに属します。生成後にチェックされる予算は超過支出を記録するだけですが、ディスパッチ前にチェックされればそれを防げます。プロバイダーキーセットアップが設定側をカバーしています。

実行を明示的にする

Trigger.dev が ai.generate ワークフローを実行します。能力認識型ルーターが設定されたポリシーとリクエスト要件に従ってモデルを選びます。そのポリシーを運用入力として扱います:利用不可のエイリアスはインターフェースに機能する選択肢として現れるべきではありません。

送信中のネットワーク障害は、作業がキューに入ったかクライアントを不確かにすることがあります。本番経路はタスクスコープの冪等性キーと保存された送信を使い、復旧が元のリクエストを再利用できるようにします。タイムアウトごとに新しいタスクを送ると、作業とコストの重複のリスクがあります。

耐久性はインターフェースをシンプルに保つものでもあります:画面はリトライを指揮するのではなく、タスク状態を読んで描画します。生成がモデル呼び出し・ツールステップ・スケジュールにまたがるとき、明示的なワークフローコントラクト — enqueue・status・cancel — が「処理中」を誠実に保ちます。

失敗モードに名前をつける

リクエストと結果の間には、失敗し得る特定の有限の集合があります。抽象的な「エラー」ではなく、それぞれ名前で設計します — すべてのタスクは説明可能な状態で終わるべきです:キュー済み、実行中、理由付きの失敗、または結果付きの完了。タスク復旧がキットの復旧側の参照です。

その下にあるインターフェース要件は、どの状態も嘘をつけないことです。処理より長生きするスピナーや、一度も走らなかったタスクへの成功メッセージは、起きるのを待っているサポートチケットと課金トラブルです。

  • 送信がタイムアウト — 再キューではなく、保存された送信とタスクスコープの冪等性キーで復旧する。
  • プロバイダーがタスク途中で失敗 — インターフェースが表示できる理由を付けてタスクを失敗にする。
  • 予算枯渇 — 支出の後ではなくディスパッチ前に拒否する。
  • ユーザーが移動 — 耐久レコードと復旧 URL が状態と結果を復元する。

起きたことを追跡する

生成はテキスト以上のものを生み出します。アプリケーションは使用量とタスク結果を記録し、インターフェースは認証済み API 経由で状態を読みます。使用量レコードが予算を強制可能にするものです — 結果が返された後に推定されるのではなく、返される前に書かれます。

完了メールは別の配信レコードを持つ別のステップです。成功したモデル応答はメールが配信されたことを確立しません。これらの結果を区別しておくと、モデルを不必要に再実行せずに障害を説明し再試行しやすくなります。

結果にはユーザーが戻れる居場所も必要です:タスクページ、履歴リスト、完了メールで届く復旧 URL。一時的な通知にしか存在しない生成は、二度作ってほしいと頼まれる作業です。

それぞれの境界を検証する

決定的な fake アダプターを使って、まずアプリケーションの決定をテストします:拒否されたアクセス、無効化されたエイリアス、重複送信、結果復旧、汎用エラー。これらのテストはプロバイダー認証情報なしで実行されるべきです。

次に、実際の統合には明示的にオプトインのプロバイダースモークプロセスを使います。文書化されたサンドボックス設定と外部呼び出しへの承認が必要です。この区別は通常の開発を速く保ちながら、本番証拠を具体的で追跡可能にします。

製品が変わってもその分割を安定に保ちます:すべての境界決定の近くに決定的なカバレッジを置き、プロバイダー交換・ルーターポリシー変更・新しいエイリアスが、顧客を失敗させる前にテストを失敗させるようにします。

SaaS の AI 機能についてよくある質問

AI をペイウォールの後ろに置く話では、毎回いくつかの質問が出てきます。

  • AI 機能の認可はどこで行うべきですか? — 何かがキューに入る前です:認証し、ワークスペースを解決し、権限をチェックし、それからタスクを作る。生成後に走るチェックは悪用を記録するだけです。
  • BYOK サポートは必要ですか? — 顧客が独自のプロバイダー関係を持っているなら、イエスです:誰が支払い、誰がレート制限を所有するかを決めます。キーは暗号化して保存し、クライアントから遠ざけてください — AI 設定ガイドがそのモデルをカバーしています。
  • 再試行による二重課金をどう防ぎますか? — 冪等性キーをタスクにスコープし、復旧中に保存された送信を再利用すれば、タイムアウトが 2 回目の課金対象実行を作れなくなります。
  • どんな使用データを記録すべきですか? — タスクごとに:モデル、消費ユニット、価格カタログに対するコスト、ワークスペース — ジョブを再実行せずに予算を強制し支出の質問に答えられるだけの量です。
  • 生成をバックグラウンドジョブに置くべきなのはいつですか? — リクエストを生き延び得るときは常にです。モデルの遅延・再試行・複数ステップの作業は耐久実行を支持します。インラインに属するのは即時で安い呼び出しだけです。

よくある質問

14 件の質問

supastack とは何ですか?

supastack は AI SaaS 製品を構築するためのモジュラー基盤です。共通インフラをまとめて提供するので、製品固有の機能に集中できます。

Web とモバイルに対応していますか?

はい。supastack には Web とモバイル体験の出発点として Next.js アプリと Expo アプリが含まれています。

どの認証が含まれていますか?

Better Auth がメール/パスワード、OTP、ソーシャルログインをカバーします。個人ワークスペースはアカウントと一緒にプロビジョニングされ、初日からレコードが境界内に収まります。

AI はどうサポートされていますか?

supastack には設定可能なマルチプロバイダー AI、使用量追跡、予算、暗号化された自前キー(BYOK)サポートが含まれています。

サブスクリプションはどう管理されますか?

このキット上に構築された製品では、Stripe 課金・サブスクリプション・権限が有料アクセスの基盤になります。プロバイダーの秘密はサーバー側に留まります。

製品固有のコードはどこに置きますか?

製品固有の機能は別のコードベースに置き、製品側が supastack の基本モジュールを設定・統合します。

supastack の価格は?

キットは生涯アップデート付きの一回払いです:単一フレームワーク 249 ドル(期間限定のローンチ価格 — 通常価格 349 ドルから 100 ドル割引)、または全フレームワーク(Next.js・iOS・Android)499 ドル(期間限定のローンチ価格 — 通常価格 599 ドルから 100 ドル割引)、追加開発者シート 1 席 75 ドル。キットのサブスクリプションはありません。このサイトのチェックアウトはライセンスキーをメールで配信し、GitHub 招待でリポジトリアクセスを提供します。

ワークスペースはどうデータを囲いますか?

ユーザーレコードは workspaceId でスコープされます。認証、権限、AI 使用量、課金イベント、監査エントリは個人ワークスペースの境界内に留まります。

バックグラウンドジョブはどう機能しますか?

Trigger.dev が明示的なジョブランタイムです。JobRunner コントラクトは enqueue・status・cancel のみを約束し、ワークフロー意味論は Trigger.dev 固有で明示的です。

メールとアウトリーチの違いは?

トランザクションメールはタスク完了通知などの製品ワークフローをカバーします。コールドアウトリーチやキャンペーンは製品自身に属し、このキットのメールモジュールの外です。

モバイルの購入はどのように機能しますか?

モバイルでは RevenueCat によるネイティブ購入と復元に対応し、アクセス権をサーバーで検証します。公開前にストアアカウントを設定し、実機テストを完了してください。Web 課金は別に管理します。

AI プロバイダーのキーはどこにありますか?

BYOK 認証情報は暗号化され、サーバー側に留まります。キーはログでサニタイズされ、使用量と予算はワークスペースレベルで可視です。

チェックアウトで使える支払い方法は?

Stripe ホストのチェックアウトはカードを受け付け、Stripe アカウントでウォレットを有効にすれば Alipay と WeChat Pay も提供できます——中国の購入者に便利です。ウォレット認可は非同期で確定するため、決済完了と同時にライセンスページが更新されます。

返金を受けることはできますか?

リポジトリへのアクセス権を取得した後は、supastack は永久にあなたのものとなるため、返金はできません。ですがご安心ください。生涯アップデートを含む完全なソースコードを入手し、ご自身やクライアントのために無制限にプロダクトを構築・公開できます。コードの転売や、リポジトリをスターターキットやテンプレートとして再配布することのみ禁止されています。

JA