Vercel AI Gateway を通すと、TypeSafe の API キーを持っていなくても Jev を呼べます。入口は3つあり、どれも同じモデル(typesafe-ai/jev)に届きます。
| 入口 | 向いている場面 |
|---|---|
AI SDK の experimental_evaluate | すでに AI SDK を使っている。→ AI SDK で使う |
REST の POST /v1/evaluate | SDK を入れたくない、JS 以外の言語から呼ぶ |
| TypeSafe 互換 API | TypeSafe の SDK で書いた既存のコードを、そのまま Gateway 経由にしたい |
Vercel の公式ドキュメントによれば、評価は OpenAI 互換・Anthropic 互換・Cohere 互換のエンドポイントでは使えません。
認証
AI Gateway の API キーを Authorization: Bearer … で渡します。Vercel 上で動かすなら OIDC トークンも使えます。これは「Gateway があなたを認証するための鍵」で、モデルを呼ぶための鍵ではありません。
export AI_GATEWAY_API_KEY="…"
REST: POST /v1/evaluate
curl https://ai-gateway.vercel.sh/v1/evaluate \
-H "Authorization: Bearer $AI_GATEWAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe-ai/jev",
"state": "I was charged twice for my subscription.",
"questions": {
"refund": { "type": "boolean", "instructions": "Is the customer asking for money back?" }
}
}'
実際に返ってきた値(2026-09-21、往復 743ms):
{
"model": "typesafe-ai/jev",
"answers": { "refund": { "type": "boolean", "probability": 0.76 } },
"usage": { "inputTokens": 282, "outputTokens": 20 },
"providerMetadata": {
"gateway": {
"routing": { "finalProvider": "typesafe-ai" },
"cost": "0",
"marketCost": "0.000011844"
}
}
}
形は AI SDK と同じです。はい/いいえ は boolean、答えは probability、トークン数は inputTokens。TypeSafe の REST API(noul、input_tokens)とは呼び名が違います。
ちなみに、この文は「二重に請求された」と言っているだけで、返金を求めるとは書いていません。0.76 という値は、Jev が書いてあることを字義どおりに読むことの一例です(Jev が苦手なこと)。
TypeSafe 互換 API — 既存のコードは2行の変更で
TypeSafe の SDK で書いたコードは、ベース URL と API キーを差し替えるだけで Gateway 経由になります。
import { noul, TypeSafeClient } from '@typesafe-ai/sdk';
const client = new TypeSafeClient({
apiKey: process.env.AI_GATEWAY_API_KEY,
baseURL: 'https://ai-gateway.vercel.sh/typesafe',
});
const res = await client.systemOne({
state: 'I was charged twice for my subscription.',
questions: { refund: noul('Is the customer asking for money back?') },
});
console.log(res.answers.refund.noul); // 0.76
実行すると、答えは TypeSafe の形(noul、input_tokens)のまま返り、Gateway の経路と費用の情報が provider_metadata.gateway に付いてきました。
Vercel は、移行ではなく新しく書くなら /v1/evaluate のほうを勧めています(TypeSafe 固有の名前に依存しない同じ機能だから、という理由です)。
直結との違い
| 比較項目 | TypeSafe に直結 | AI Gateway 経由 |
|---|---|---|
| 必要な鍵 | TypeSafe の API キー | AI Gateway の API キー |
| 請求 | TypeSafe から | AI Gateway から(BYOK なら TypeSafe から) |
| 答えたバージョン | model: "jev-1.13.0" が返る | typesafe-ai/jev や jev-latest が返り、バージョン ID は分からなかった |
| 往復時間(3回ずつ) | 203〜238ms(初回 710ms) | 307〜446ms |
| 利用状況の確認 | TypeSafe のコンソール | Gateway のダッシュボードに他のモデルと並ぶ |
| 入力上限の表示 | 公式は 64k(state +最長の質問で 32k) | モデルページの表示は 32K |
確信度のしきい値を特定のバージョンで調整している処理では、どのバージョンが答えたかを記録できる直結のほうが安全です(料金と制限)。
費用の見え方
レスポンスの providerMetadata.gateway に費用が入ります。
marketCost— 定価での費用。上の例は0.000011844。入力 282 トークン × $0.042 / 100 万トークンと一致しますcost— 実際に請求される額。上の例では0でした
モデルページには入力・出力とも「Free」、あわせて「Promotional pricing ends on September 25, 2026」と表示されていました(2026-09-21 時点)。期間限定の表示なので、使う前に必ずモデルページで現在の価格を確かめてください。 このページの cost: 0 は、その期間中に実行した結果です。
BYOK とゼロデータ保持
- BYOK: チームに TypeSafe のキーを登録してあれば、自動でそのキーが使われ、請求は TypeSafe から直接になります
- プロバイダーの指定:
providerOptions.gatewayで、ゼロデータ保持を必須にしたり、応答してよいプロバイダーを絞ったりできます
{
"model": "typesafe-ai/jev",
"state": "…",
"questions": { "refund": { "type": "boolean", "instructions": "…" } },
"providerOptions": { "gateway": { "zeroDataRetention": true, "only": ["typesafe-ai"] } }
}
only: ["typesafe-ai"] を付けた呼び出しは実行して通ることを確かめました。zeroDataRetention: true は実行していません。 TypeSafe 側のゼロデータ保持はエンタープライズ向けと書かれているので(公式 Legal)、必要な場合は契約の条件を確認してください。
AI SDK から Gateway のプロバイダーを明示する
experimental_evaluate にモデルを文字列で渡すと、既定で Gateway が使われます。プロバイダーのインスタンスを明示するなら gateway.evaluationModel(...) です。
import { gateway } from '@ai-sdk/gateway';
import { experimental_evaluate as evaluate } from 'ai';
const result = await evaluate({
model: gateway.evaluationModel('typesafe-ai/jev'),
state: 'The support agent issued a full refund to the customer.',
questions: { refunded: { type: 'boolean', instructions: 'Was a refund issued?' } },
});
この形は公式ドキュメントの記述で、このサイトで実行したのは文字列で渡す形です(AI SDK で使う)。評価には AI SDK 7 以降が必要です。
どれを選ぶか
- TypeSafe のアカウントを作らずに試したい、複数のモデルの請求を1か所にまとめたい → AI Gateway
- 答えたバージョンを記録したい、少しでも速くしたい → 直結(REST API、Python SDK、JS SDK)
- すでに TypeSafe の SDK で書いたコードがある → TypeSafe 互換 API で2行だけ変える
よくある質問
TypeSafe の API キーが無くても Jev を使えますか?
使えます。AI Gateway の API キー(または Vercel の OIDC)だけで呼べます。請求は AI Gateway 経由になります。自分の TypeSafe のキーで請求を受けたい場合は BYOK に登録します。
OpenAI 互換のエンドポイントから Jev を呼べますか?
呼べません。Vercel の公式ドキュメントに、評価は OpenAI 互換・Anthropic 互換・Cohere 互換のエンドポイントでは使えないとあります。使えるのは AI SDK、/v1/evaluate、TypeSafe 互換 API の3つです。
直結より遅くなりますか?
手元の3回ずつの計測では、直結が 203〜238ms(初回は 710ms)、Gateway 経由が 307〜446ms でした。中継が1つ増えるぶんは遅くなります。ごく少ない回数の計測なので、目安にとどめてください。