この記事でわかること: OpenAI ChatGPT APIのセットアップから、Python実装、プロンプトエンジニアリングのベストプラクティス、コスト最適化、実用的なユースケースまで、現場で使えるChatGPT API活用術を解説します。
ChatGPT APIとは?料金プランの比較(2026年版)
OpenAI ChatGPT APIを使うことで、自分のアプリケーションにGPT-4o・GPT-4o miniなどの最新LLMを組み込めます。料金はトークン数に基づく従量課金制です。
| モデル | 入力料金(1Mトークン) | 出力料金(1Mトークン) | 特徴 |
|---|---|---|---|
| GPT-4o | $2.50 | $10.00 | 最高性能、マルチモーダル対応 |
| GPT-4o mini | $0.15 | $0.60 | コスパ最高、日常用途に最適 |
| o3-mini | $1.10 | $4.40 | 推論特化、数学・コード問題に強い |
| o1 | $15.00 | $60.00 | 複雑な推論タスクに最適 |
APIキーの取得とPython環境セットアップ
# OpenAIライブラリのインストール
pip install openai python-dotenv
# .envファイルにAPIキーを保存(セキュリティのため)
# OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxxxx
import os
from openai import OpenAI
from dotenv import load_dotenv
# .envからAPIキーを読み込み
load_dotenv()
# クライアントの初期化
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# 基本的なチャット補完
def chat_completion(message: str, model: str = "gpt-4o-mini") -> str:
response = client.chat.completions.create(
model=model,
messages=[
{
"role": "system",
"content": "あなたは優秀なPythonプログラミングのメンターです。"
},
{
"role": "user",
"content": message
}
],
max_tokens=1000,
temperature=0.7, # 0〜2 (高いほど創造的)
)
return response.choices[0].message.content
# 使用例
result = chat_completion("Pythonのリスト内包表記を初心者向けに説明してください")
print(result)
会話履歴(コンテキスト)を保持する実装
from typing import List, Dict
from openai import OpenAI
class ChatSession:
"""会話コンテキストを保持するチャットセッション"""
def __init__(self, system_prompt: str, model: str = "gpt-4o-mini"):
self.client = OpenAI()
self.model = model
self.messages: List[Dict[str, str]] = [
{"role": "system", "content": system_prompt}
]
def chat(self, user_message: str) -> str:
# ユーザーメッセージを追加
self.messages.append({
"role": "user",
"content": user_message
})
# API呼び出し
response = self.client.chat.completions.create(
model=self.model,
messages=self.messages,
max_tokens=2000,
)
assistant_message = response.choices[0].message.content
# アシスタントの返答を履歴に追加
self.messages.append({
"role": "assistant",
"content": assistant_message
})
return assistant_message
def get_token_usage(self) -> dict:
"""使用トークン数の取得(コスト管理用)"""
# 実際の使用量はAPIレスポンスから取得
return {
"message_count": len(self.messages),
"estimated_tokens": sum(len(m["content"]) // 4 for m in self.messages)
}
# 使用例
session = ChatSession(
system_prompt="あなたはTechAthletesブログの読者をサポートするAIアシスタントです。"
)
print(session.chat("Pythonを始めたい初心者です。何から学べばいいですか?"))
print(session.chat("先ほど紹介した最初のステップについて、もっと詳しく教えてください"))
ストリーミングレスポンスの実装
長い回答を生成する場合、ストリーミングを使うとユーザーエクスペリエンスが大幅に向上します。
from openai import OpenAI
client = OpenAI()
def stream_chat(message: str) -> None:
"""ストリーミングでレスポンスを受け取る"""
with client.chat.completions.stream(
model="gpt-4o-mini",
messages=[{"role": "user", "content": message}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
print() # 改行
# 使用例
stream_chat("Pythonで簡単なWebスクレイパーを作成する方法を教えてください")
プロンプトエンジニアリングのベストプラクティス
- 役割を明確にする(Role prompting):「あなたはシニアPythonエンジニアです」のようにAIに役割を与えると、より専門的な回答が得られる
- Few-shotプロンプティング:入出力の例を数パターン示すことで、形式を揃えた一貫性のある回答が得られる
- Chain-of-Thoughtプロンプティング:「ステップバイステップで考えてください」と指示することで推論精度が向上する
- 出力フォーマットを指定する:「JSON形式で返してください」「箇条書きで5つ」のように出力形式を明確に指定する
- 制約条件を明示する:文字数制限、使用してはいけないこと、必ず含めることなどを明示する
Structured Output(構造化出力)でJSON取得
from pydantic import BaseModel
from openai import OpenAI
client = OpenAI()
class BlogPostIdea(BaseModel):
title: str
keywords: list[str]
target_audience: str
estimated_word_count: int
class BlogPostIdeas(BaseModel):
ideas: list[BlogPostIdea]
# Structured Outputで確実にJSON形式で取得
completion = client.beta.chat.completions.parse(
model="gpt-4o-2024-08-06",
messages=[
{
"role": "user",
"content": "TypeScriptに関するブログ記事のアイデアを3つ提案してください"
}
],
response_format=BlogPostIdeas,
)
ideas = completion.choices[0].message.parsed
for idea in ideas.ideas:
print(f"タイトル: {idea.title}")
print(f"キーワード: {', '.join(idea.keywords)}")
print(f"ターゲット: {idea.target_audience}")
print()
コスト最適化のテクニック
- 適切なモデルを選択する:シンプルなタスクにはGPT-4o miniを使い、複雑な推論タスクにのみGPT-4oを使う
- max_tokensを制限する:必要以上に長い回答を生成しないよう上限を設定する
- キャッシュを活用する:同じプロンプトへの回答はキャッシュして再利用する(Prompt Cache機能)
- バッチ処理を使う:リアルタイムが不要な処理はBatch APIを使うと50%コスト削減
- プロンプトを最適化する:冗長な表現を削除してトークン数を削減する
まとめ:ChatGPT APIで自社サービスにAIを組み込もう
ChatGPT APIは現在最もアクセスしやすく、強力なLLM APIです。
- ✅ APIセットアップ: .envでセキュアにAPIキーを管理
- ✅ 会話コンテキスト: messagesリストで会話履歴を保持
- ✅ ストリーミング: リアルタイム表示でUX向上
- ✅ プロンプトエンジニアリング: Role/Few-shot/CoTで回答品質を向上
- ✅ Structured Output: Pydanticで型安全なJSON出力
- ✅ コスト最適化: モデル選択・キャッシュ・バッチ処理
AIを活用したプロダクト開発に興味がある方は、ぜひChatGPT APIから始めてみましょう。少ない投資で大きな価値を提供できるAI機能を自分のサービスに組み込めます。