# Vercel AI Gateway 経由で Jev を使う

AI Gateway から Jev を呼ぶ3つの入口（AI SDK、REST の /v1/evaluate、TypeSafe 互換 API）と、BYOK、ゼロデータ保持、費用の見え方、直結との違いを実行結果つきで説明する。

- 正規URL: https://jevguide.jp/guides/ai-gateway/
- 公開: 2026-09-21T00:00:00.000Z
- 更新: 2026-09-21T00:00:00.000Z
- 最終確認: 2026-09-21T00:00:00.000Z
- 検証環境: AI Gateway（typesafe-ai/jev）/ @typesafe-ai/sdk 0.6.0 / ai@7.0.105（2026-09-21 に3つの入口を実行）

Vercel AI Gateway を通すと、**TypeSafe の API キーを持っていなくても** Jev を呼べます。入口は3つあり、どれも同じモデル（`typesafe-ai/jev`）に届きます。

| 入口 | 向いている場面 |
| --- | --- |
| AI SDK の `experimental_evaluate` | すでに AI SDK を使っている。→ [AI SDK で使う](/guides/ai-sdk-evaluate/) |
| REST の `POST /v1/evaluate` | SDK を入れたくない、JS 以外の言語から呼ぶ |
| TypeSafe 互換 API | TypeSafe の SDK で書いた既存のコードを、そのまま Gateway 経由にしたい |

Vercel の公式ドキュメントによれば、評価は **OpenAI 互換・Anthropic 互換・Cohere 互換のエンドポイントでは使えません。**

## 認証

AI Gateway の API キーを `Authorization: Bearer …` で渡します。Vercel 上で動かすなら OIDC トークンも使えます。これは「Gateway があなたを認証するための鍵」で、モデルを呼ぶための鍵ではありません。

```bash
export AI_GATEWAY_API_KEY="…"
```

## REST: POST /v1/evaluate

```bash
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）:

```json
{
  "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 が苦手なこと](/guides/limitations/)）。

## TypeSafe 互換 API — 既存のコードは2行の変更で

TypeSafe の SDK で書いたコードは、**ベース URL と API キーを差し替えるだけ**で Gateway 経由になります。

```ts
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 |

確信度のしきい値を特定のバージョンで調整している処理では、**どのバージョンが答えたかを記録できる直結のほうが安全**です（[料金と制限](/guides/pricing-and-limits/)）。

## 費用の見え方

レスポンスの `providerMetadata.gateway` に費用が入ります。

- `marketCost` — 定価での費用。上の例は `0.000011844`。入力 282 トークン × $0.042 / 100 万トークンと一致します
- `cost` — 実際に請求される額。**上の例では `0` でした**

[モデルページ](https://vercel.com/ai-gateway/models/jev)には入力・出力とも「Free」、あわせて「Promotional pricing ends on September 25, 2026」と表示されていました（2026-09-21 時点）。期間限定の表示なので、**使う前に必ずモデルページで現在の価格を確かめてください。** このページの `cost: 0` は、その期間中に実行した結果です。

## BYOK とゼロデータ保持

- **BYOK**: チームに TypeSafe のキーを登録してあれば、自動でそのキーが使われ、請求は TypeSafe から直接になります
- **プロバイダーの指定**: `providerOptions.gateway` で、ゼロデータ保持を必須にしたり、応答してよいプロバイダーを絞ったりできます

```json
{
  "model": "typesafe-ai/jev",
  "state": "…",
  "questions": { "refund": { "type": "boolean", "instructions": "…" } },
  "providerOptions": { "gateway": { "zeroDataRetention": true, "only": ["typesafe-ai"] } }
}
```

`only: ["typesafe-ai"]` を付けた呼び出しは実行して通ることを確かめました。**`zeroDataRetention: true` は実行していません。** TypeSafe 側のゼロデータ保持はエンタープライズ向けと書かれているので（[公式 Legal](https://docs.typesafe.ai/legal)）、必要な場合は契約の条件を確認してください。

## AI SDK から Gateway のプロバイダーを明示する

`experimental_evaluate` にモデルを文字列で渡すと、既定で Gateway が使われます。プロバイダーのインスタンスを明示するなら `gateway.evaluationModel(...)` です。

```ts
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 で使う](/guides/ai-sdk-evaluate/)）。評価には AI SDK 7 以降が必要です。

## どれを選ぶか

- TypeSafe のアカウントを作らずに試したい、複数のモデルの請求を1か所にまとめたい → **AI Gateway**
- 答えたバージョンを記録したい、少しでも速くしたい → **直結**（[REST API](/guides/rest-api/)、[Python SDK](/guides/python-sdk-quickstart/)、[JS SDK](/guides/js-sdk-quickstart/)）
- すでに 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つ増えるぶんは遅くなります。ごく少ない回数の計測なので、目安にとどめてください。

## 出典

- [AI Gateway: Evaluation](https://vercel.com/docs/ai-gateway/modalities/evaluation)
- [TypeSafe API with AI Gateway](https://vercel.com/docs/ai-gateway/sdks-and-apis/typesafe)
- [AI Gateway Models: Jev](https://vercel.com/ai-gateway/models/jev)
- [TypeSafe AI's Jev now available on AI Gateway](https://vercel.com/changelog/typesafe-ai-jev-now-available-on-ai-gateway)

---
typesafe.ai とは無関係の非公式ガイドです。
