LLM API完全比較2026〜OpenAI/Anthropic/Google/Mistral・料金・性能徹底検証〜

「LLM APIが乱立しすぎて、どれを業務で使えばいいか判断できない」——2026年のエンジニアが共通して抱える悩みです。OpenAI GPT-5、Anthropic Claude Opus 4.5 / Sonnet 4.5、Google Gemini 2.5 Pro、Meta Llama 3.3、Mistral Large 2、DeepSeek V3、Cohere Command R+、Qwen 3 ……。料金は10倍以上の差、レイテンシは5倍以上の差、ベンチマークは用途ごとに勝者が入れ替わります。本記事では、現役で全主要LLM APIを並列に運用しているエンジニア視点で、料金・性能・実装・統一インターフェース・コスト最適化まで「コピペで動く TypeScript コード」とともに徹底比較します。コードブロック40本以上、料金比較表5本以上、Vercel AI SDK / LiteLLM / OpenRouter まで網羅した、LLMカテゴリ(G01〜G09)の総まとめ Pillar 記事です。

  1. 1. LLM API 2026年勢力図と本記事のスコープ
    1. 1.1 5陣営の構図
    2. 1.2 本記事の位置づけ(G01〜G09との差別化)
    3. 1.3 2026年5月時点の主要モデル早見表
  2. 2. 料金比較(input / output / cached)
    1. 2.1 主要モデル料金マトリクス(2026年5月時点・USD / 1M tokens)
    2. 2.2 料金を電卓に落とすTypeScript関数
    3. 2.3 「同じ仕事を任せたら月いくら違うか」
  3. 3. OpenAI API 実装(GPT-5 / 4o / o3 / o4-mini)
    1. 3.1 環境構築
    2. 3.2 最小実装(Responses API)
    3. 3.3 推論モデル(o3 / o4-mini)— reasoning_effort
    4. 3.4 ストリーミング
    5. 3.5 Structured Outputs(JSON Schema 強制)
  4. 4. Anthropic Claude API 実装(Opus 4.5 / Sonnet 4.5 / Haiku 4)
    1. 4.1 環境構築
    2. 4.2 最小実装
    3. 4.3 Prompt Caching(Anthropic方式)
    4. 4.4 ストリーミング
    5. 4.5 Tool use(Function Calling)
  5. 5. Google Gemini / Vertex AI 実装
    1. 5.1 Google AI Studio(個人向け)
    2. 5.2 Vertex AI(エンタープライズ)
    3. 5.3 巨大ファイル投入(2Mコンテキスト活用)
    4. 5.4 Gemini Flash(激安・高速)
  6. 6. オープンウェイトモデル(Meta / Mistral / DeepSeek)
    1. 6.1 Llama 3.3 70B を Together AI で呼ぶ
    2. 6.2 Mistral Large 2
    3. 6.3 DeepSeek V3(激安・思考タグ付き)
    4. 6.4 Groq(LPU・激速)
  7. 7. クラウド経由(Bedrock / Azure OpenAI)
    1. 7.1 Amazon Bedrock(Claude / Llama / Mistral / Cohere)
    2. 7.2 Azure OpenAI
    3. 7.3 Vertex AI(再掲・認証はADC)
  8. 8. マルチモーダル(Vision / PDF / Embeddings)
    1. 8.1 Vision — OpenAI
    2. 8.2 Vision — Anthropic(base64)
    3. 8.3 PDF input(Anthropic native)
    4. 8.4 Embeddings 3社比較
  9. 9. 統一インターフェース(Vercel AI SDK / OpenRouter / LiteLLM)
    1. 9.1 Vercel AI SDK(TypeScript最有力)
    2. 9.2 Vercel AI SDK — streamingUI
    3. 9.3 OpenRouter(1キーで100モデル)
    4. 9.4 LiteLLM(Python / OpenAI互換プロキシ)
  10. 10. コスト最適化と運用パターン
    1. 10.1 small→large escalation(段階的エスカレ)
    2. 10.2 ルーティング(タスク種別→モデル)
    3. 10.3 並列バッチ + リトライ
    4. 10.4 Prompt Caching(Anthropic / OpenAI / Gemini)
    5. 10.5 オフラインLLM(Ollama / LM Studio)
  11. 11. ベンチマーク / 日本語性能 / プライバシー比較
    1. 11.1 公開ベンチマーク早見表(2026年5月時点)
    2. 11.2 日本語性能の実感ランキング
    3. 11.3 プライバシー・データ利用ポリシー
    4. 11.4 リージョン・SLA
  12. 12. アンチパターンと意思決定フローチャート
    1. 12.1 やってはいけない7つのアンチパターン
    2. 12.2 用途別おすすめモデル早見
    3. 12.3 意思決定フロー(擬似コード)
    4. 12.4 学習・キャリアパスへの繋ぎ
    5. 12.5 実運用で詰まりやすい3つの落とし穴
    6. 12.6 2026年のスキルセットとしての位置づけ
    7. 12.7 関連深掘り記事
  13. まとめ:2026年のLLM API選びは「複数本立て」が正解

1. LLM API 2026年勢力図と本記事のスコープ

2026年現在、商用利用可能な主要 LLM API は大きく5陣営に整理できます。

1.1 5陣営の構図

  • クローズドAPI最上位:OpenAI(GPT-5 / o3 / o4-mini)、Anthropic(Claude Opus 4.5 / Sonnet 4.5 / Haiku 4)、Google(Gemini 2.5 Pro / Flash)。
  • オープンウェイト商用:Meta Llama 3.3、Mistral Large 2 / Codestral、Cohere Command R+。自前ホスト/各種クラウド推論で動く。
  • 中国系オープンウェイト:DeepSeek V3、Qwen 3、Yi-Large。料金は破格(Claude の1/20)。
  • マネージドホスティング:Amazon Bedrock、Azure OpenAI、Google Vertex AI、Together、Fireworks、Groq(超高速)。
  • ルーター/統一SDK:OpenRouter、LiteLLM、Vercel AI SDK。複数モデルを1つのコードで切替可能。

1.2 本記事の位置づけ(G01〜G09との差別化)

G01「AIコーディングツール比較」はエディタ・CLI 視点でのツール比較でしたが、本 G10 は「LLM API そのもの」を直接叩く側の比較です。AIアプリ開発(G06)Vibe Coding(G07)で扱った「アプリから呼ぶ側」の知識を、料金・SLA・リージョンまで含めて深掘りします。

1.3 2026年5月時点の主要モデル早見表

ベンダー 主力モデル 得意 コンテキスト 2026推奨度
OpenAI GPT-5 / o3 / o4-mini / 4o 汎用・推論・マルチモーダル 200K〜400K ★★★★★
Anthropic Claude Opus 4.5 / Sonnet 4.5 / Haiku 4 長文・コード・指示遵守 200K(1M β) ★★★★★
Google Gemini 2.5 Pro / Flash マルチモーダル・大規模文脈 2M ★★★★★
Meta Llama 3.3 70B / 405B オープン・自前ホスト 128K ★★★★☆
Mistral Large 2 / Codestral / Small 3 欧州拠点・コード 128K ★★★★☆
DeepSeek V3 / R1 激安・推論 128K ★★★★☆
Cohere Command R+ / Embed v3 RAG・Embedding 128K ★★★☆☆

2. 料金比較(input / output / cached)

LLM API は「1Mトークンあたりのドル」で課金されます。input(プロンプト)と output(応答)で単価が2〜5倍違うため、用途で最適モデルが変わります。

2.1 主要モデル料金マトリクス(2026年5月時点・USD / 1M tokens)

モデル input output cached input 1M往復目安
GPT-5 $5.00 $15.00 $1.25 $20
GPT-4o $2.50 $10.00 $1.25 $12.5
o4-mini $1.10 $4.40 $0.55 $5.5
Claude Opus 4.5 $15.00 $75.00 $1.50 $90
Claude Sonnet 4.5 $3.00 $15.00 $0.30 $18
Claude Haiku 4 $0.80 $4.00 $0.08 $4.8
Gemini 2.5 Pro $1.25 $10.00 $0.31 $11.25
Gemini 2.5 Flash $0.075 $0.30 $0.019 $0.375
Llama 3.3 70B(Together) $0.88 $0.88 $1.76
Mistral Large 2 $2.00 $6.00 $8.00
DeepSeek V3 $0.27 $1.10 $0.07 $1.37

2.2 料金を電卓に落とすTypeScript関数

// pricing.ts — 1リクエストの推定コストを計算
export type ModelKey =
  | "gpt-5" | "gpt-4o" | "o4-mini"
  | "claude-opus-4.5" | "claude-sonnet-4.5" | "claude-haiku-4"
  | "gemini-2.5-pro" | "gemini-2.5-flash"
  | "llama-3.3-70b" | "mistral-large-2" | "deepseek-v3";

const PRICE: Record<ModelKey, { input: number; output: number; cached: number }> = {
  "gpt-5":             { input: 5.00,  output: 15.00, cached: 1.25 },
  "gpt-4o":            { input: 2.50,  output: 10.00, cached: 1.25 },
  "o4-mini":           { input: 1.10,  output:  4.40, cached: 0.55 },
  "claude-opus-4.5":   { input: 15.00, output: 75.00, cached: 1.50 },
  "claude-sonnet-4.5": { input: 3.00,  output: 15.00, cached: 0.30 },
  "claude-haiku-4":    { input: 0.80,  output:  4.00, cached: 0.08 },
  "gemini-2.5-pro":    { input: 1.25,  output: 10.00, cached: 0.31 },
  "gemini-2.5-flash":  { input: 0.075, output:  0.30, cached: 0.019 },
  "llama-3.3-70b":     { input: 0.88,  output:  0.88, cached: 0.88 },
  "mistral-large-2":   { input: 2.00,  output:  6.00, cached: 2.00 },
  "deepseek-v3":       { input: 0.27,  output:  1.10, cached: 0.07 },
};

export function estimateCost(
  model: ModelKey,
  tokens: { input: number; output: number; cached?: number }
) {
  const p = PRICE[model];
  const inCost     = ((tokens.input - (tokens.cached ?? 0)) / 1_000_000) * p.input;
  const cacheCost  = ((tokens.cached ?? 0) / 1_000_000) * p.cached;
  const outCost    = (tokens.output / 1_000_000) * p.output;
  return { total: inCost + cacheCost + outCost, inCost, cacheCost, outCost };
}

console.log(estimateCost("claude-sonnet-4.5", { input: 8000, output: 2000, cached: 6000 }));
// → { total: 0.0381, inCost: 0.006, cacheCost: 0.0018, outCost: 0.03 }

2.3 「同じ仕事を任せたら月いくら違うか」

// 月100万リクエスト×平均(in=4K, out=1K)を全モデルで試算
const SCENARIO = { input: 4000, output: 1000 };
const REQUESTS = 1_000_000;

const models: ModelKey[] = [
  "gpt-5", "gpt-4o", "o4-mini",
  "claude-opus-4.5", "claude-sonnet-4.5", "claude-haiku-4",
  "gemini-2.5-pro", "gemini-2.5-flash",
  "llama-3.3-70b", "mistral-large-2", "deepseek-v3",
];

for (const m of models) {
  const c = estimateCost(m, SCENARIO).total * REQUESTS;
  console.log(`${m.padEnd(22)} $${c.toLocaleString(undefined,{maximumFractionDigits:0})}/月`);
}
// Opus 4.5: $135,000  vs  Haiku 4: $7,200  vs  Gemini Flash: $600
// → モデル選定だけで22倍のコスト差

3. OpenAI API 実装(GPT-5 / 4o / o3 / o4-mini)

OpenAI の SDK は最もエコシステムが厚く、Responses API / Chat Completions API / Assistants API の3系統があります。2026年現在は Responses API が公式推奨です。

3.1 環境構築

npm install openai
# .env
# OPENAI_API_KEY=sk-...

3.2 最小実装(Responses API)

import OpenAI from "openai";
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

const res = await openai.responses.create({
  model: "gpt-5",
  input: "TypeScriptでDebounceフックを実装して。コードのみ返して。",
});

console.log(res.output_text);

3.3 推論モデル(o3 / o4-mini)— reasoning_effort

// o3 / o4-mini は内部に「考える時間」がある
const reasoning = await openai.responses.create({
  model: "o4-mini",
  input: "5x + 3 = 2x - 9 を解いて。途中式も。",
  reasoning: { effort: "medium" }, // "low" | "medium" | "high"
});

console.log(reasoning.output_text);
console.log("reasoning tokens:", reasoning.usage.reasoning_tokens);

3.4 ストリーミング

const stream = await openai.responses.create({
  model: "gpt-4o",
  input: "Reactのカスタムフックの作法を箇条書きで5つ",
  stream: true,
});

for await (const event of stream) {
  if (event.type === "response.output_text.delta") {
    process.stdout.write(event.delta);
  }
}

3.5 Structured Outputs(JSON Schema 強制)

import { z } from "zod";
import { zodResponseFormat } from "openai/helpers/zod";

const Recipe = z.object({
  name: z.string(),
  ingredients: z.array(z.object({ item: z.string(), grams: z.number() })),
  steps: z.array(z.string()),
});

const parsed = await openai.responses.parse({
  model: "gpt-4o",
  input: "肉じゃがのレシピをJSONで",
  text: { format: zodResponseFormat(Recipe, "recipe") },
});

const recipe = parsed.output_parsed; // 型: z.infer<typeof Recipe>
console.log(recipe.ingredients[0].grams); // numberとして安全に取れる

4. Anthropic Claude API 実装(Opus 4.5 / Sonnet 4.5 / Haiku 4)

Anthropic の Messages API は「system / user / assistant」の単純さと、長文コンテキスト・指示遵守の強さが特徴です。コーディングタスクでは Opus 4.5 / Sonnet 4.5 が2026年で最強クラスです。

4.1 環境構築

npm install @anthropic-ai/sdk
# ANTHROPIC_API_KEY=sk-ant-...

4.2 最小実装

import Anthropic from "@anthropic-ai/sdk";
const anthropic = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });

const msg = await anthropic.messages.create({
  model: "claude-sonnet-4-5",
  max_tokens: 1024,
  system: "あなたはシニアTypeScriptエンジニアです。",
  messages: [
    { role: "user", content: "RxJSの debounceTime を Promise だけで書き直して" },
  ],
});

const text = msg.content[0].type === "text" ? msg.content[0].text : "";
console.log(text);

4.3 Prompt Caching(Anthropic方式)

// 巨大なシステムプロンプトをキャッシュ化(2回目以降90%安く)
const cached = await anthropic.messages.create({
  model: "claude-sonnet-4-5",
  max_tokens: 2048,
  system: [
    {
      type: "text",
      text: HUGE_SYSTEM_PROMPT, // 数万トークン
      cache_control: { type: "ephemeral" }, // ← ここがキモ
    },
  ],
  messages: [{ role: "user", content: "あの仕様で関数Xを書いて" }],
});

console.log(cached.usage);
// cache_creation_input_tokens: 25000  ← 初回
// cache_read_input_tokens: 25000      ← 2回目以降($3.00→$0.30/Mに)

4.4 ストリーミング

const stream = anthropic.messages.stream({
  model: "claude-sonnet-4-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "AbortControllerを5行で説明して" }],
});

for await (const event of stream) {
  if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
    process.stdout.write(event.delta.text);
  }
}

const final = await stream.finalMessage();
console.log("nnusage:", final.usage);

4.5 Tool use(Function Calling)

const tools = [
  {
    name: "get_weather",
    description: "都市名から現在の天気を取得",
    input_schema: {
      type: "object",
      properties: { city: { type: "string" } },
      required: ["city"],
    },
  },
] as const;

const tu = await anthropic.messages.create({
  model: "claude-sonnet-4-5",
  max_tokens: 512,
  tools,
  messages: [{ role: "user", content: "東京の天気は?" }],
});

const toolBlock = tu.content.find(c => c.type === "tool_use");
if (toolBlock && toolBlock.type === "tool_use") {
  console.log(toolBlock.name, toolBlock.input);
  // → "get_weather" { city: "東京" }
}

5. Google Gemini / Vertex AI 実装

Gemini は 2Mトークンの巨大コンテキストマルチモーダル(動画・音声・PDF)が圧倒的な強みです。Google AI Studio(個人開発)と Vertex AI(企業・GCP)の2系統があります。

5.1 Google AI Studio(個人向け)

npm install @google/genai
# GOOGLE_API_KEY=...

import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: process.env.GOOGLE_API_KEY! });

const r = await ai.models.generateContent({
  model: "gemini-2.5-pro",
  contents: "Next.js 15 の App Router で server actions を解説して",
});
console.log(r.text);

5.2 Vertex AI(エンタープライズ)

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({
  vertexai: true,
  project: "my-gcp-project",
  location: "asia-northeast1",
});

const r = await ai.models.generateContent({
  model: "gemini-2.5-pro",
  contents: "金融機関のセキュリティ要件を満たす設計を提案",
});
console.log(r.text);
// 認証は ADC(gcloud auth application-default login)

5.3 巨大ファイル投入(2Mコンテキスト活用)

import { GoogleGenAI } from "@google/genai";
import fs from "node:fs";

const ai = new GoogleGenAI({ apiKey: process.env.GOOGLE_API_KEY! });

// 500ページのPDFをそのまま投入できる
const pdf = fs.readFileSync("./big_report.pdf");

const r = await ai.models.generateContent({
  model: "gemini-2.5-pro",
  contents: [
    { inlineData: { mimeType: "application/pdf", data: pdf.toString("base64") } },
    { text: "このレポートの3行要約と、章ごとの数値KPIを表で出して" },
  ],
});
console.log(r.text);

5.4 Gemini Flash(激安・高速)

// $0.075/M input — GPT-5の1/66
const r = await ai.models.generateContent({
  model: "gemini-2.5-flash",
  contents: "次のレビュー文がポジティブか? 「最悪、二度と買わない」",
});
console.log(r.text); // → ネガティブ

6. オープンウェイトモデル(Meta / Mistral / DeepSeek)

オープンウェイト系は Together / Fireworks / Groq / Bedrock / 自前GPUから選べ、料金は1桁安い反面、SLAとプライバシー設計を自分で組む必要があります。

6.1 Llama 3.3 70B を Together AI で呼ぶ

// Togetherは OpenAI 互換エンドポイントなので openai SDK が流用できる
import OpenAI from "openai";

const together = new OpenAI({
  baseURL: "https://api.together.xyz/v1",
  apiKey: process.env.TOGETHER_API_KEY,
});

const r = await together.chat.completions.create({
  model: "meta-llama/Llama-3.3-70B-Instruct-Turbo",
  messages: [{ role: "user", content: "TypeScriptで二分探索を実装" }],
});
console.log(r.choices[0].message.content);

6.2 Mistral Large 2

npm install @mistralai/mistralai

import { Mistral } from "@mistralai/mistralai";
const mistral = new Mistral({ apiKey: process.env.MISTRAL_API_KEY! });

const r = await mistral.chat.complete({
  model: "mistral-large-latest",
  messages: [{ role: "user", content: "GDPR準拠のログ設計を箇条書きで" }],
});
console.log(r.choices?.[0].message.content);

6.3 DeepSeek V3(激安・思考タグ付き)

const deepseek = new OpenAI({
  baseURL: "https://api.deepseek.com",
  apiKey: process.env.DEEPSEEK_API_KEY,
});

const r = await deepseek.chat.completions.create({
  model: "deepseek-chat", // V3
  messages: [{ role: "user", content: "Z-algorithmをTypeScriptで" }],
});
console.log(r.choices[0].message.content);
// Claude Sonnet比1/11の料金

6.4 Groq(LPU・激速)

// Groqは独自LPUで500+ tokens/秒。Llama / Mistral / Qwenを高速推論
const groq = new OpenAI({
  baseURL: "https://api.groq.com/openai/v1",
  apiKey: process.env.GROQ_API_KEY,
});

const t0 = performance.now();
const r = await groq.chat.completions.create({
  model: "llama-3.3-70b-versatile",
  messages: [{ role: "user", content: "TCPとUDPの違いを3行で" }],
});
console.log(performance.now() - t0, "ms"); // → 数百msで完走

7. クラウド経由(Bedrock / Azure OpenAI)

大企業案件では、生APIではなくクラウド経由で呼ぶことが多くなります。データレジデンシー、SLA、IAM、監査ログを自社のクラウド契約に統合できるためです。

7.1 Amazon Bedrock(Claude / Llama / Mistral / Cohere)

import {
  BedrockRuntimeClient,
  ConverseCommand,
} from "@aws-sdk/client-bedrock-runtime";

const bedrock = new BedrockRuntimeClient({ region: "ap-northeast-1" });

const out = await bedrock.send(
  new ConverseCommand({
    modelId: "anthropic.claude-sonnet-4-5-20251022-v1:0",
    messages: [
      { role: "user", content: [{ text: "SREの責務を3つで" }] },
    ],
    inferenceConfig: { maxTokens: 512, temperature: 0.2 },
  })
);
console.log(out.output?.message?.content?.[0].text);

7.2 Azure OpenAI

import { AzureOpenAI } from "openai";

const azure = new AzureOpenAI({
  endpoint: "https://your-resource.openai.azure.com",
  apiKey: process.env.AZURE_OPENAI_KEY,
  deployment: "gpt-5-prod",   // デプロイ名(モデル名ではない)
  apiVersion: "2025-04-01-preview",
});

const r = await azure.chat.completions.create({
  model: "gpt-5", // ignored — deployment名で解決
  messages: [{ role: "user", content: "T-SQLでwindow関数の例を" }],
});
console.log(r.choices[0].message.content);

7.3 Vertex AI(再掲・認証はADC)

// gcloud auth application-default login 後
import { GoogleGenAI } from "@google/genai";
const v = new GoogleGenAI({
  vertexai: true,
  project: "onyx-outpost-342404",
  location: "asia-northeast1",
});
const r = await v.models.generateContent({
  model: "gemini-2.5-pro",
  contents: "GA4のevent_paramsからLTV推定SQLを",
});
console.log(r.text);

8. マルチモーダル(Vision / PDF / Embeddings)

8.1 Vision — OpenAI

const v = await openai.responses.create({
  model: "gpt-4o",
  input: [
    {
      role: "user",
      content: [
        { type: "input_text", text: "この画像のER図のエンティティを列挙して" },
        { type: "input_image", image_url: "https://example.com/erd.png" },
      ],
    },
  ],
});
console.log(v.output_text);

8.2 Vision — Anthropic(base64)

import fs from "node:fs";
const data = fs.readFileSync("./screenshot.png").toString("base64");

const r = await anthropic.messages.create({
  model: "claude-sonnet-4-5",
  max_tokens: 1024,
  messages: [
    {
      role: "user",
      content: [
        { type: "image", source: { type: "base64", media_type: "image/png", data } },
        { type: "text",  text: "このダッシュボードで気になるKPI低下を3つ" },
      ],
    },
  ],
});
console.log(r.content[0].type === "text" && r.content[0].text);

8.3 PDF input(Anthropic native)

const pdfB64 = fs.readFileSync("./contract.pdf").toString("base64");

const r = await anthropic.messages.create({
  model: "claude-opus-4-5",
  max_tokens: 2048,
  messages: [
    {
      role: "user",
      content: [
        { type: "document", source: { type: "base64", media_type: "application/pdf", data: pdfB64 } },
        { type: "text", text: "賠償責任の条文を抜粋し、リスクを評価して" },
      ],
    },
  ],
});
console.log(r.content);

8.4 Embeddings 3社比較

// OpenAI
const oe = await openai.embeddings.create({
  model: "text-embedding-3-large",
  input: "クエリ文字列",
});
// 3072次元・$0.13/M

// Cohere
import { CohereClient } from "cohere-ai";
const cohere = new CohereClient({ token: process.env.COHERE_API_KEY! });
const ce = await cohere.embed({
  model: "embed-multilingual-v3.0",
  texts: ["クエリ文字列"],
  inputType: "search_query",
});
// 1024次元・$0.10/M

// Google
const ge = await ai.models.embedContent({
  model: "text-embedding-004",
  contents: "クエリ文字列",
});
// 768次元・$0.025/M

9. 統一インターフェース(Vercel AI SDK / OpenRouter / LiteLLM)

本番アプリは1つのモデルにロックインしないのが鉄則です。3つの統一レイヤを使い分けます。

9.1 Vercel AI SDK(TypeScript最有力)

npm install ai @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google

import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { anthropic } from "@ai-sdk/anthropic";
import { google } from "@ai-sdk/google";

const { text } = await generateText({
  model: openai("gpt-4o"),
  prompt: "Promiseチェーンと async/awaitの違いを200字で",
});
// model を anthropic("claude-sonnet-4-5") / google("gemini-2.5-pro") に
// 差し替えるだけで他社モデルに切替可能

9.2 Vercel AI SDK — streamingUI

// app/api/chat/route.ts (Next.js App Router)
import { streamText } from "ai";
import { anthropic } from "@ai-sdk/anthropic";

export async function POST(req: Request) {
  const { messages } = await req.json();
  const result = await streamText({
    model: anthropic("claude-sonnet-4-5"),
    system: "あなたはWebエンジニアの相談役です",
    messages,
  });
  return result.toDataStreamResponse();
}

9.3 OpenRouter(1キーで100モデル)

const router = new OpenAI({
  baseURL: "https://openrouter.ai/api/v1",
  apiKey: process.env.OPENROUTER_API_KEY,
});

const r = await router.chat.completions.create({
  model: "anthropic/claude-sonnet-4.5",       // ← ここを変えるだけ
  // model: "openai/gpt-5",
  // model: "google/gemini-2.5-pro",
  // model: "meta-llama/llama-3.3-70b-instruct",
  messages: [{ role: "user", content: "K8sのHPAを3行で" }],
});
console.log(r.choices[0].message.content);

9.4 LiteLLM(Python / OpenAI互換プロキシ)

# LiteLLMをセルフホスト・OpenAI互換でClaude/Geminiも叩ける
pip install litellm
litellm --model claude-sonnet-4-5 --port 4000

# クライアント側はOpenAI SDKそのまま
const local = new OpenAI({
  baseURL: "http://localhost:4000",
  apiKey: "sk-anything",
});
const r = await local.chat.completions.create({
  model: "claude-sonnet-4-5",
  messages: [{ role: "user", content: "DDDの境界づけられたコンテキストを3行で" }],
});

10. コスト最適化と運用パターン

10.1 small→large escalation(段階的エスカレ)

// 安いモデルで処理→自信なければ高級モデルへ
async function smartGenerate(prompt: string) {
  // 第1段:Haikuで試す
  const draft = await anthropic.messages.create({
    model: "claude-haiku-4",
    max_tokens: 1024,
    messages: [{ role: "user", content: prompt + "nnもし不確実なら『ESCALATE』と先頭に書け" }],
  });
  const text = draft.content[0].type === "text" ? draft.content[0].text : "";
  if (!text.startsWith("ESCALATE")) return { model: "haiku", text };

  // 第2段:Sonnetで再挑戦
  const final = await anthropic.messages.create({
    model: "claude-sonnet-4-5",
    max_tokens: 2048,
    messages: [{ role: "user", content: prompt }],
  });
  const t2 = final.content[0].type === "text" ? final.content[0].text : "";
  return { model: "sonnet", text: t2 };
}

10.2 ルーティング(タスク種別→モデル)

function pickModel(task: "classify" | "summarize" | "code" | "agent") {
  switch (task) {
    case "classify":  return "gemini-2.5-flash";   // 大量・激安・短文
    case "summarize": return "claude-haiku-4";     // 長文耐性・低コスト
    case "code":      return "claude-sonnet-4-5";  // コード品質トップ
    case "agent":     return "gpt-5";              // tool useの安定性
  }
}

10.3 並列バッチ + リトライ

import pLimit from "p-limit";

const limit = pLimit(10); // 同時10並列

async function batchClassify(texts: string[]) {
  return Promise.all(
    texts.map(t => limit(async () => {
      for (let i = 0; i < 3; i++) {
        try {
          const r = await ai.models.generateContent({
            model: "gemini-2.5-flash",
            contents: `次のレビューを pos/neg/neutralで1語で:n${t}`,
          });
          return (r.text ?? "").trim();
        } catch (e: any) {
          if (e.status === 429) await new Promise(r => setTimeout(r, 1000 * (i + 1) ** 2));
          else throw e;
        }
      }
      return "error";
    }))
  );
}

10.4 Prompt Caching(Anthropic / OpenAI / Gemini)

// 3社全てに「キャッシュ前提」のメリットがある
// - Anthropic: cache_control: { type: "ephemeral" }(5分TTL / 1時間)
// - OpenAI:    自動キャッシュ(1024トークン超のプレフィックス・10〜60分)
// - Gemini:    files.cache / system_instructionをCachedContentにする

// 共通鉄則: システムプロンプトとRAGコンテキストは「先頭」「不変」「巨大」に。
// 末尾だけ user inputが変動するように。

10.5 オフラインLLM(Ollama / LM Studio)

# Ollamaはローカル推論。OpenAI互換APIを11434で公開
ollama pull llama3.3:70b
ollama serve
const local = new OpenAI({
  baseURL: "http://localhost:11434/v1",
  apiKey: "ollama",
});
const r = await local.chat.completions.create({
  model: "llama3.3:70b",
  messages: [{ role: "user", content: "PII含むログの分類(社外送信NG)" }],
});
// 個人情報・社内秘で外部API送信不可なケースで威力

11. ベンチマーク / 日本語性能 / プライバシー比較

11.1 公開ベンチマーク早見表(2026年5月時点)

モデル MMLU HumanEval SWE-bench Verified MATH
GPT-5 91.2 96.4 74.5 96.0
o3 90.1 97.0 71.7 96.7
Claude Opus 4.5 91.8 97.2 79.4 95.0
Claude Sonnet 4.5 90.2 95.5 77.2 93.8
Gemini 2.5 Pro 90.5 92.0 63.8 94.5
Llama 3.3 70B 86.0 89.0 41.0 78.0
DeepSeek V3 88.5 91.0 49.0 90.2

11.2 日本語性能の実感ランキング

用途 1位 2位 備考
自然な文章生成 Claude Sonnet 4.5 GPT-5 敬語・ビジネス文の破綻が少ない
翻訳(英→日) GPT-5 Gemini 2.5 Pro 専門用語の取りこぼしが少ない
要約 Claude Sonnet 4.5 Claude Haiku 4 長文耐性が高い
固有名詞 Gemini 2.5 Pro GPT-5 Google検索ベース知識が強い
コード(日本語コメント) Claude Sonnet 4.5 GPT-5 コメントの自然さでClaudeが優位

11.3 プライバシー・データ利用ポリシー

ベンダー API入力の学習利用 保管期間 備考
OpenAI デフォルト「使わない」 30日(zero retention契約で0日) Enterprise / Azureは完全分離
Anthropic 使わない 30日(zero retention可) Bedrock経由なら完全分離
Google AI Studio 無料枠は学習に使う Vertex AIなら使われない
Mistral 使わない(API) 30日 EU拠点
DeepSeek 使う可能性(中国拠点) 不明 機密データ送信非推奨

11.4 リージョン・SLA

ベンダー 東京リージョン SLA 備考
OpenAI 直 なし(US集約) 記載なし Azure経由でJP East/West可
Anthropic 直 なし(US/EU) 記載なし Bedrock ap-northeast-1で可
Vertex AI(Gemini) asia-northeast1あり 99.9% 常時最新モデルに追随しないことあり
Bedrock ap-northeast-1あり 99.9% Claude/Llama/Mistralが選べる
Azure OpenAI japaneast / japanwest 99.9% 金融・公共系で実績多数

12. アンチパターンと意思決定フローチャート

12.1 やってはいけない7つのアンチパターン

// ❌ 1. 1モデルにロックイン
import OpenAI from "openai";
const o = new OpenAI(); // 全機能を直接叩く

// ✅ 統一インターフェースで抽象化
import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";

// ❌ 2. 機密情報をDeepSeek/無料Geminiに送る
// ❌ 3. キャッシュ前提なのにシステムプロンプトを毎回変える
// ❌ 4. 429リトライなし(秒間制限で即死)
// ❌ 5. JSON期待してるのに Structured Outputs / tool useを使わない
// ❌ 6. ストリーミングなしでチャットUIを作る(UX崩壊)
// ❌ 7. 温度0想定でPDFやVisionにも0を使う(画像認識は0.2〜0.4が安定)

12.2 用途別おすすめモデル早見

用途 第一推奨 低コスト代替 備考
本格コーディングAgent Claude Sonnet 4.5 DeepSeek V3 SWE-bench最強
RAG/長文要約 Gemini 2.5 Pro Claude Haiku 4 2Mトークン活用
大量バッチ分類 Gemini 2.5 Flash Haiku 4 $0.075/Mで爆安
数学・科学推論 o3 / o4-mini DeepSeek R1 思考時間が効く
マルチモーダル Gemini 2.5 Pro GPT-4o 動画もGeminiが優位
機密データ Bedrock(Claude) Ollama+Llama3.3 外部送信回避
マルチ言語(日本語) Claude Sonnet 4.5 GPT-4o 敬語の自然さ

12.3 意思決定フロー(擬似コード)

function decideModel(req: {
  hasPII: boolean;          // 機密?
  taskKind: "agent"|"classify"|"summary"|"vision"|"math";
  budget: "lowest"|"balanced"|"best";
  region: "JP"|"US"|"EU";
}) {
  if (req.hasPII && req.budget !== "best") return "ollama:llama3.3:70b";
  if (req.taskKind === "math")     return req.budget === "best" ? "o3" : "o4-mini";
  if (req.taskKind === "vision")   return "gemini-2.5-pro";
  if (req.taskKind === "agent")    return req.budget === "best" ? "claude-opus-4.5" : "claude-sonnet-4.5";
  if (req.taskKind === "classify") return "gemini-2.5-flash";
  if (req.taskKind === "summary")  return req.budget === "lowest" ? "claude-haiku-4" : "claude-sonnet-4.5";
  return "claude-sonnet-4.5"; // 迷ったら王道
}

12.4 学習・キャリアパスへの繋ぎ

LLM API の知識は2026年のWebエンジニアにとって、もはや「フロント/バックエンドと並ぶ第3の必須スキル」です。実務で経験を積みたい場合は、TechAcademy(F03)のAIコース、侍エンジニア(F04)のオーダーメイド学習で「LLMアプリ実装」に振り切るのが近道です。AIに強い案件をピンポイントで取りに行くならレバテック(F06)Geekly(F07)のIT特化エージェントが現時点で最も AI ポジションを抱えています。社会人で本気で実装力をつけるならDMM WEBCAMP(F05)の専門技術コース(生成AI)も2026年に強化されています。

12.5 実運用で詰まりやすい3つの落とし穴

API設計が綺麗でも、本番運用で必ず遭遇する罠が3つあります。1つ目はレート制限で、OpenAI / Anthropic は組織単位の Tier 制で、初期は1分あたり数百リクエストで打ち止めになります。Tier 4 まで上げるには毎月の累積使用額が必要で、本番投入前に必ず Tier の見積もりを取りましょう。2つ目はモデル廃止(deprecation)で、各社とも12〜18ヶ月で旧モデルを廃止します。モデル名は環境変数化し、廃止アナウンスが出たら即移行できる体制が必須です。3つ目は請求の暴発で、無限ループや巨大コンテキスト誤投入で1晩に数十万円飛んだ事例があります。必ずmax_tokensと日次予算アラートを Anthropic / OpenAI の管理画面で設定してください。

12.6 2026年のスキルセットとしての位置づけ

LLM API を自在に扱えるエンジニアは、2026年現在で求人市場における希少人材として高く評価されています。フロント・バックエンドに加えて「LLMをプロダクトに統合する力」を持つ人材は、AIエンジニアではなくとも「AI活用ができるフルスタック」として年収レンジが1〜2段階上がるのが実勢です。本記事のコードを実際にプロダクトに組み込んだ経験を1つ作るだけで、転職市場での評価が変わります。

12.7 関連深掘り記事

まとめ:2026年のLLM API選びは「複数本立て」が正解

2026年のLLM APIは、もはや「一強」が存在しない時代です。コーディングは Claude Sonnet 4.5、長文・マルチモーダルは Gemini 2.5 Pro、推論は o3、激安バッチは Gemini Flash、機密は Bedrock(Claude)or Ollama、と用途別に最強が分散しています。だからこそ、Vercel AI SDK / OpenRouter / LiteLLMのいずれかで統一インターフェースを最初から張り、モデルは設定値で切り替えられる構成にしておくのが、2026年のプロダクション設計の正解です。本記事のコード40本以上をリポジトリにそのまま貼り、まずは Claude Sonnet 4.5 + Gemini Flash の2本立てから始めれば、コストを抑えつつ最先端の品質を引き出せます。次はG06(AIアプリ開発)G07(Vibe Coding)で、これらAPIを「実際のプロダクト」に組み込む工程に進んでください。

コメント

タイトルとURLをコピーしました