1.

OpenAI API 入門|Python / Node.js で GPT-5 を呼ぶ完全ガイド

編集
この記事の要点
  • OpenAI API: ChatGPT の頭脳である GPT-5 / GPT-4o / o1 をプログラムから呼べる REST API
  • 料金: 従量課金制(入力 $1.25 / 1M tokens、出力 $10 / 1M tokens 〜、モデル別)
  • セットアップ: platform.openai.com で API キー発行 → pip install openai または npm install openai
  • 主要機能: Chat Completions / Streaming / Function Calling / Vision (画像入力) / Embeddings / Whisper (音声)
  • 注意: API キーは絶対に公開しない、レート制限あり、コスト監視必須
  • ビジネス活用: 自社アプリへの ChatGPT 機能統合、バッチ処理、社内ツール開発

OpenAI API とは

OpenAI API は、ChatGPT で使われている GPT-5 / GPT-4o / o1 等の AI モデルを、自分のプログラムやサービスから呼び出せる REST API です。Web ブラウザの ChatGPT を使うのではなく、Python や Node.js で「AI 機能を組み込んだアプリ」を作るためのインターフェースになります。

2025 年現在、OpenAI API は世界で最も使われている生成 AI API で、社内チャットボット・要約サービス・カスタマーサポート Bot・コード生成ツールなど、数えきれないほどのアプリケーションが構築されています。

セットアップ・準備

1. API キーの取得

  1. platform.openai.com にアクセスして OpenAI アカウントでログイン
  2. 右上のメニューから「API keys」を選択
  3. 「Create new secret key」をクリックして名前を付ける(例: my-app)
  4. 表示された sk-... 形式のキーを安全な場所にコピー(一度しか表示されない)
  5. 「Billing」から支払い情報を登録(最低 $5 のチャージから始められる)

2. Python での環境構築

# Python 3.8 以上が必要
pip install openai

# 環境変数にキーを設定(推奨)
export OPENAI_API_KEY="sk-..."     # Linux / Mac
setx OPENAI_API_KEY "sk-..."        # Windows

3. Node.js での環境構築

# Node.js 18 以上が必要
npm install openai
# または
yarn add openai
# 環境変数 OPENAI_API_KEY を .env に設定

最初のコード — Hello World

Python 版

from openai import OpenAI

client = OpenAI()  # OPENAI_API_KEY 環境変数から自動読み込み

response = client.chat.completions.create(
    model="gpt-5",
    messages=[
        {"role": "system", "content": "あなたは親切な日本語アシスタントです。"},
        {"role": "user", "content": "Pythonでフィボナッチ数列を出力するコードを教えて"}
    ]
)

print(response.choices[0].message.content)
print(f"使用トークン: {response.usage.total_tokens}")

Node.js 版

import OpenAI from "openai";

const client = new OpenAI();  // process.env.OPENAI_API_KEY から自動読み込み

const response = await client.chat.completions.create({
    model: "gpt-5",
    messages: [
        { role: "system", content: "あなたは親切な日本語アシスタントです。" },
        { role: "user", content: "JavaScriptでクイックソートを書いて" }
    ]
});

console.log(response.choices[0].message.content);
console.log(`使用トークン: ${response.usage.total_tokens}`);

主要機能

機能説明用途
Chat Completions会話形式で AI に質問・回答を取得チャットボット・要約・翻訳
Streamingレスポンスをトークン単位で逐次受信リアルタイム表示・UX 改善
Function CallingAI に関数(ツール)を呼ばせる外部 API 連携・DB 検索・Agent
Vision (画像入力)画像を入力して AI に分析させるOCR・画像理解・図表分析
Embeddingsテキストをベクトル化RAG・類似検索・推薦システム
Whisper音声→テキスト変換文字起こし・音声検索
TTSテキスト→音声合成読み上げ・音声 UI
DALL-E 3画像生成イラスト・サムネ自動生成
Batch API大量リクエストを 50% 安く処理バルク要約・データクレンジング

実践コード例

例 1: ストリーミング(リアルタイム表示)

from openai import OpenAI
client = OpenAI()

stream = client.chat.completions.create(
    model="gpt-5",
    messages=[{"role": "user", "content": "宇宙の歴史を300字で"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)
print()

例 2: Function Calling(AI に天気 API を呼ばせる)

from openai import OpenAI
import json

client = OpenAI()

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "指定した都市の現在の天気を返す",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "都市名(例: Tokyo)"}
            },
            "required": ["city"]
        }
    }
}]

response = client.chat.completions.create(
    model="gpt-5",
    messages=[{"role": "user", "content": "東京の天気を教えて"}],
    tools=tools,
)

tool_call = response.choices[0].message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
print(f"呼び出された関数: {tool_call.function.name}({args})")
# → get_weather({'city': 'Tokyo'}) が返るので、実装側で実 API を叩く

例 3: Vision(画像入力)

from openai import OpenAI
client = OpenAI()

response = client.chat.completions.create(
    model="gpt-5",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "この画像に何が写っている?"},
            {"type": "image_url", "image_url": {
                "url": "https://example.com/photo.jpg"
            }}
        ]
    }]
)
print(response.choices[0].message.content)

料金・トークン消費

モデル入力 ($/1M tokens)出力 ($/1M tokens)用途
gpt-5$1.25$10.00★ 万能・最新フラッグシップ
gpt-5-mini$0.25$2.00軽量タスク・大量処理向け
gpt-4o$2.50$10.00マルチモーダル特化
gpt-4o-mini$0.15$0.60最安・量産向け
o1$15.00$60.00難問・推論特化
text-embedding-3-large$0.13埋め込み(RAG 用)

トークンとは?

トークンは GPT がテキストを処理する単位。日本語の場合、1 文字 ≒ 1〜2 トークン、英語は 1 単語 ≒ 1.3 トークン程度。例えば「こんにちは、世界!」は約 8 トークン。1,000 文字の日本語文章は約 1,500〜2,000 トークンになります。

コスト計算例

  • GPT-5 で毎日 100 回、平均「入力 500 tokens + 出力 1000 tokens」の問い合わせ
  • 月間: 30日 × 100 = 3,000 リクエスト = 入力 150 万 tokens + 出力 300 万 tokens
  • 料金: 1.5 × $1.25 + 3.0 × $10 = 約 $32 / 月

注意点・落とし穴

  • API キーの管理: GitHub にコミットしない、フロントエンドに埋め込まない、漏洩したら即 revoke
  • レート制限 (RPM / TPM): 無料 / 低額枠ではすぐ枯渇、Tier を上げると緩和される
  • エラーハンドリング: 429 (Rate Limit) / 500 (Server Error) でリトライ実装必須(指数バックオフ推奨)
  • タイムアウト: GPT-5 は数秒〜数十秒かかる、デフォルトより長めに設定
  • トークン超過: max_tokens を指定しないと長文で予期せず高額になる
  • 個人情報: API 経由でも入力データはログに残る可能性、Zero Data Retention 契約は Enterprise のみ
  • ハルシネーション: 自信満々に嘘を生成することがある、業務利用では人間レビュー必須

エラーハンドリングのサンプル(Python)

from openai import OpenAI, RateLimitError, APIError
import time

client = OpenAI()

def chat_with_retry(messages, max_retries=5):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(
                model="gpt-5",
                messages=messages,
                timeout=60,
            )
        except RateLimitError:
            wait = 2 ** attempt
            print(f"Rate limit. {wait}秒待機...")
            time.sleep(wait)
        except APIError as e:
            print(f"API error: {e}. リトライします...")
            time.sleep(2 ** attempt)
    raise RuntimeError("リトライ上限")

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. OpenAI API 入門 — Python / Node.js から GPT-5 を呼ぶ
  2. Anthropic Claude API 入門 — Claude 4 を使い倒す
  3. RAG (Retrieval-Augmented Generation) 入門
  4. LangChain 入門 — LLM アプリ開発フレームワーク

最近更新/作成されたページ