ChatGPT や Claude を自分のアプリに組み込みたい——その入口が LLM API です。ブラウザの ChatGPT は「人が画面で使う」もの、API は「プログラムから呼び出す」もの。両者は同じモデルを別の窓口から使っているだけで、API なら自分のチャットアプリ・社内ツール・自動処理にAIを直接組み込めます。本記事は Claude(Anthropic) と GPT(OpenAI) の2大APIを並べ、最初の一歩から会話・料金・つまずきまでを、コピーして動かせる形で解説します。
FIG.1 API=アプリが「キー付きの一通の手紙」を送り、回答を受け取る窓口
ブラウザ版と違って、API は人間のログインではなく APIキー で「誰の呼び出しか」を判定し、使った分だけ課金します。だからキーの管理が最初の関門になります(後述)。基本的な使い方は、各社のSDKを入れて十数行。まずはそこから動かしましょう。
01APIキーを取得する
どちらのサービスも、開発者向けのコンソールでキーを発行します。キーは作成直後に一度だけ全体が表示され、以後は再表示されません。その場で安全な場所にコピーしてください。利用には事前のクレジット入金(少額から可)が必要です。
| OpenAI(GPT) | Anthropic(Claude) |
|---|---|
| platform.openai.com → 「API keys」 | console.anthropic.com → 「API Keys」 |
| 新規キーを作成 → 一度だけ表示 | 新規キーを作成 → 一度だけ表示 |
キーは sk-... 形式 | キーは sk-ant-... 形式 |
| 前払いクレジットを入金 | 前払いクレジットを入金 |
キーは「あなたの財布を開ける合鍵」です。コードに直書きせず、必ず環境変数に逃がします。漏れたと思ったら、コンソールから即座に失効(revoke)させ、新しいキーを発行し直しましょう。
02環境を整える
言語は Node.js(TypeScript)でも Python でも構いません。両社のSDKを入れて、キーを .env に置きます。
# Node.js npm install @anthropic-ai/sdk openai # Python pip install anthropic openai
キーは .env に書き、コードからは環境変数として読み込みます。
ANTHROPIC_API_KEY=sk-ant-... OPENAI_API_KEY=sk-...
最初の事故の9割はキーの取り扱いで起きる。.env は必ず .gitignore へ。
03初めての呼び出し
SDKは、環境変数 ANTHROPIC_API_KEY / OPENAI_API_KEY を自動で読みます。だからコードにキーは書きません。下は2026年時点の代表モデルでの最小例です(モデル名は新版が出るたびに更新されるので、各社のモデル一覧で最新を確認してください)。
Claude(Anthropic)
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const msg = await client.messages.create({
model: "claude-opus-4-8", // 2026年時点の最上位。用途次第で sonnet / haiku も
max_tokens: 1024,
messages: [{ role: "user", content: "東京の今日の見どころは?" }],
});
console.log(msg.content[0].text);
Claude では max_tokens(出力の上限トークン数)が必須です。「役割」を与えるシステム指示は、messages ではなく独立した system パラメータで渡します(05節)。
GPT(OpenAI)
import OpenAI from "openai";
const client = new OpenAI();
const res = await client.chat.completions.create({
model: "gpt-5.4", // 量産向けの定番。最上位は gpt-5.5
messages: [{ role: "user", content: "東京の今日の見どころは?" }],
});
console.log(res.choices[0].message.content);
OpenAI は新規開発には Responses API(client.responses.create)も用意していますが、上記の Chat Completions 形式は広く使われ続けており、最初の学習にはこちらが分かりやすいです。役割指定は messages 配列に role: "system" を混ぜて行います(Claude との違いに注意)。
1つのコードで両方を扱う:Vercel AI SDK
Claude・GPT・Gemini などを同じ書き方で呼びたいなら、抽象化レイヤーの Vercel AI SDK が便利です。プロバイダのパッケージを足し、モデルを差し替えるだけで乗り換えられます。
import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { anthropic } from "@ai-sdk/anthropic";
const { text } = await generateText({
model: openai("gpt-5.4"), // anthropic("claude-opus-4-8") に変えるだけで Claude に
prompt: "東京の今日の見どころは?",
});
呼び出し・ストリーミング・ツール利用のコードはそのままに、import 1行とモデル文字列だけで provider を切り替えられるのが利点です。1社にロックインされたくない初期開発で重宝します。
04会話を続ける:messages は「積み上げる」
API は1回ごとに記憶を持ちません(ステートレス)。「さっきの話の続き」を理解させるには、過去のやりとりを messages 配列に全部積み上げて毎回送るのが基本です。ここが初学者のいちばんの勘所です。
FIG.2 会話=過去の user / assistant 発言を配列に積み、毎回まるごと送る
messages: [
{ role: "user", content: "東京の今日の見どころは?" },
{ role: "assistant", content: "今日は…" }, // 前回のAIの返答
{ role: "user", content: "雨でも楽しめる場所だけに絞って" },
]
裏返すと、会話が長くなるほど毎回送る量が増え、料金もレスポンス時間も膨らみます。実アプリでは、古い発言を要約して圧縮したり、直近Nターンだけ残すなどの工夫を入れます。
05システムプロンプト:AIに役割を与える
口調・立場・守るべきルールを固定したいときは「システムプロンプト」を使います。2社で渡し方が違うので、ここは丁寧に。
| Claude(独立パラメータ) | OpenAI(配列の先頭に混ぜる) |
|---|---|
system に文字列で渡す |
messages に role:"system" として置く |
// Claude
client.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
system: "あなたは丁寧な旅行ガイドです。",
messages: [{ role: "user", content: "..." }],
});
// OpenAI
client.chat.completions.create({
model: "gpt-5.4",
messages: [
{ role: "system", content: "あなたは丁寧な旅行ガイドです。" },
{ role: "user", content: "..." },
],
});
システムプロンプトは「毎ターン効く土台の指示」です。とはいえ AIに渡したからといって絶対に守られるわけではありません。重要な制約(出力形式、禁止事項)は、システム指示だけに頼らず、受け取った後にコード側でも検証するのが安全です。
06料金の感覚をつかむ
API は「読んだ文字(入力トークン)」と「書いた文字(出力トークン)」の両方に課金されます。出力のほうが単価が高いのが各社共通の傾向です。下は2026年6月時点の代表的な公開価格(100万トークンあたり・USD)。価格は頻繁に改定されるため、必ず各社の料金ページで最新を確認してください。
| モデル(例) | 入力 / 出力(USD・100万トークン) |
|---|---|
| Claude Opus 4.8(最上位) | $5 / $25 |
| Claude Sonnet 4.6(標準) | $3 / $15 |
| Claude Haiku 4.5(軽量・低価格) | $1 / $5 |
| GPT-5.4(量産向け) | $2.50 / $15 |
| GPT-5.5(最上位) | $5 / $30 |
FIG.3 課金は入力+出力。出力単価が高い=「長く喋らせる」ほど効いてくる
目安として、1トークンは英語で約0.75語、日本語で約0.5〜1文字。ふつうのチャット1往復は数百〜数千トークンで、個人開発の試作なら月 $5〜20 程度で十分試せます。コストを抑える定番は、用途に合わせて安いモデル(Haiku / GPT-5.4 など)に寄せる、繰り返し送るシステムプロンプトにプロンプトキャッシュ(各社が提供、キャッシュ済み入力を最大9割引)を効かせる、急がない一括処理にバッチ(約5割引)を使う、の3つです。
07つまずきやすいポイントと対処
キーの漏洩
APIキーをコードに直書き・GitHubにコミットしない。.env を .gitignore に入れ、環境変数で読む。漏れたらコンソールから即失効+再発行。フロントエンド(ブラウザ側JS)にキーを置かず、必ずサーバ経由で呼ぶ。
レート制限(429エラー)
短時間に呼びすぎると 429 Too Many Requests が返る。一定時間待って再試行(指数バックオフ=待ち時間を倍々に伸ばす)を入れる。多くのSDKは自動リトライを備えるが、上限や待ち方は把握しておく。
出力が途中で切れる
max_tokens(Claudeは必須)が小さいと回答が尻切れになる。長文を期待するなら上限を上げる。逆に上げすぎると料金が膨らむので、用途に合う値に。
もっともらしい嘘(ハルシネーション)
AIは事実でない内容を自信たっぷりに返すことがある。価格・仕様・法令など正確さが要る情報は、一次情報で必ず裏取りする。重要な処理はAIの出力をそのまま使わず、コード側で検証する。
Production Mindset
「動いた」と「本番で安全」は別物
最小コードはすぐ動きますが、ユーザーに出すならキーをサーバ側に隠す・エラーとリトライを設計する・入力と出力をコードで検証するの3点が土台になります。とくにキーをブラウザに置く実装は事故の典型。AIの呼び出しは必ず自分のサーバ(API Route やバックエンド)を経由させ、キーはそこだけが知る状態にしましょう。
本番では Active CPU 課金やProvisioned Throughput(安定した処理枠の確保)、クラウド経由のAPI(AWS Bedrock / Google Vertex AI)といった選択肢も視野に入ります。まずは小さく動かし、ユーザーが増えてから段階的に堅くしていけば十分です。
08次に学ぶこと
最初の呼び出しが動いたら、次は「使えるアプリ」へ近づけるステップへ。いずれも各社SDK・Vercel AI SDK の両方で対応しています。
ストリーミング
回答を1文字ずつ流して表示。体感速度が大きく上がる(ChatGPT風のタイプ表示)。
ツール利用
AIに関数・外部API・検索を呼ばせる。天気取得・DB照会など「行動するAI」の土台。
構造化出力
JSONなど決まった形で返させ、プログラムで安全に処理。スキーマ指定で精度が安定。
その先は、クラウド経由API(Bedrock / Vertex)や、社内文書を根拠に答えさせる RAG(検索拡張生成)へと広がります。まずは本記事の最小コードを実際に動かし、料金ダッシュボードで消費トークンを眺めるところから始めましょう。手を動かすほど、料金とレスポンスの感覚が身についていきます。



