「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. LLM API 2026年勢力図と本記事のスコープ
- 2. 料金比較(input / output / cached)
- 3. OpenAI API 実装(GPT-5 / 4o / o3 / o4-mini)
- 4. Anthropic Claude API 実装(Opus 4.5 / Sonnet 4.5 / Haiku 4)
- 5. Google Gemini / Vertex AI 実装
- 6. オープンウェイトモデル(Meta / Mistral / DeepSeek)
- 7. クラウド経由(Bedrock / Azure OpenAI)
- 8. マルチモーダル(Vision / PDF / Embeddings)
- 9. 統一インターフェース(Vercel AI SDK / OpenRouter / LiteLLM)
- 10. コスト最適化と運用パターン
- 11. ベンチマーク / 日本語性能 / プライバシー比較
- 12. アンチパターンと意思決定フローチャート
- まとめ: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 β) | ★★★★★ |
| 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 関連深掘り記事
- AIでWebアプリを作る完全実装ガイド(G06) — 本記事のAPIをアプリに組み込む実装編
- Vibe Coding完全実践ガイド(G07) — LLMと共に書く時代の開発スタイル
- AIコーディングツール完全比較(G01) — エディタ側の比較。本記事(G10)はAPI側の比較
- Claude Code完全実践ガイド(G04) — Anthropic公式CLIをツールとして使う側
まとめ: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を「実際のプロダクト」に組み込む工程に進んでください。

コメント