
早川 誠司|生成AI活用コンサルタント/業務効率化アドバイザー
早川 誠司|生成AI活用コンサルタント/業務効率化アドバイザー
「自社のサービスにChatGPTの機能を組み込みたい」
「ChatGPT 4o APIって、GPT-4 Turbo APIと何が違うの?」
「APIの料金体系や使い方、制限について詳しく知りたい」
OpenAIの最新フラッグシップモデルChatGPT 4oは、その高性能さだけでなく、開発者向けAPIの進化も大きな注目点です。GPT-4o APIを活用することで、あなたのアプリケーションやサービスに強力なAI機能を統合できます。
しかし、APIを利用するには、料金体系、使い方、利用可能な機能、そして制限事項などを正確に理解しておく必要があります。
この記事は、ChatGPT 4o APIの利用を検討している、あるいはすでに利用を開始した開発者の方々に向けて、以下の内容を網羅的に解説する完全ガイドです。
この記事を読めば、ChatGPT 4o APIの全体像を把握し、自信を持って開発を進めるための知識が身につきます。十分なボリュームで詳細まで解説しますので、ぜひ参考にしてください。
ChatGPT 4o APIは、開発者がプログラムを通じてChatGPT 4oモデルの機能を利用するためのインターフェースです。これにより、チャットボット、コンテンツ生成ツール、データ分析支援システムなど、様々なAI搭載アプリケーションを構築できます。
GPT-4 Turbo APIとの主な違い:
OpenAIの発表によると、GPT-4o APIは従来のGPT-4 Turbo APIと比較して、以下の点で優れています。
これらの進化により、GPT-4o APIはより多くの開発者にとって魅力的で実用的な選択肢となっています。既存のGPT-4 Turbo APIを利用している場合、GPT-4o APIへの移行を検討する価値は大きいでしょう。
ChatGPT APIの料金は、基本的にトークン (Token) という単位に基づいて計算されます。
トークンは、テキストを処理するための基本的な単位です。英語の場合、おおよそ1単語が1トークンに相当しますが、日本語の場合はひらがな1文字、漢字1文字などがそれぞれ1〜数トークンとしてカウントされることが多く、言語によって異なります。
OpenAIは、APIリクエストで入力として送信したテキストのトークン数と、APIが出力として生成したテキストのトークン数の両方に対して課金します。
OpenAIのTokenizerツールを使うと、特定のテキストが何トークンに相当するかを確認できます。
GPT-4o APIの具体的なトークン単価は以下の通りです(2025年4月時点)。
モデル | 入力トークン単価 ($ / 1M tokens) | 出力トークン単価 ($ / 1M tokens) |
GPT-4o | $0.15 | $15.00 \$ |
比較として、低コスト版の[GPT-4o Mini]や旧モデルの料金も参考にしてください(最新情報は必ず[OpenAI Pricingページ]でご確認ください)。
モデル | 入力トークン単価 ($ / 1M tokens) | 出力トークン単価 ($ / 1M tokens) |
GPT-4o Mini | $5.00 | $0.60 |
GPT-4 Turbo (参考) | $10.00 | $30.00 |
(注: 料金は予告なく変更される場合があります。1M tokens = 100万トークン)
APIコストは、(入力トークン数 / 1,000,000) * 入力単価 + (出力トークン数 / 1,000,000) * 出力単価
で計算されます。
例えば、GPT-4o APIを使って、入力1,000トークン、出力300トークンのリクエストを1回行った場合のコストは以下のようになります。
開発中は、コストを意識するために、リクエストごとのおおよそのトークン数とコストをモニタリングすることが重要です。詳細な料金体系や他のモデルの料金については、ChatGPT 4oの料金プランと制限の詳細解説も参照してください。
ChatGPT APIを利用するには、まずAPIキーを取得する必要があります。
APIキーは、あなたのアカウントでのAPI利用を認証するための重要な秘密情報です。絶対にコード内に直接書き込んだり、GitHubなどの公開リポジトリにコミットしたりしないでください。
推奨される管理方法は以下の通りです。
os.getenv("OPENAI_API_KEY")
のように読み込む。.env
ファイルを作成し、そこにキーを記述 (OPENAI_API_KEY=sk-xxxx...
)。.gitignore
に.env
を追加し、リポジトリに含めないようにする。Pythonでは python-dotenv
ライブラリなどで読み込む。ここでは、Pythonの公式ライブラリ openai
(v1.x以降) を使った基本的なAPIの呼び出し方を示します。
1. ライブラリのインストール:
Bash
pip install openai
2. 基本的なAPI呼び出しコード:
Python
import os
from openai import OpenAI
# APIキーを環境変数から読み込む (推奨)
# 事前に export OPENAI_API_KEY='sk-...' を実行しておくか、
# .env ファイル + python-dotenv を使用する
client = OpenAI()
# もし環境変数以外で設定する場合: client = OpenAI(api_key="sk-...")
MODEL = "gpt-4o" # 利用するモデルを指定
try:
response = client.chat.completions.create(
model=MODEL,
messages=[
{"role": "system", "content": "あなたは親切なアシスタントです。"},
{"role": "user", "content": "ChatGPT 4o APIの主な利点は何ですか?"}
],
temperature=0.7, # 生成されるテキストのランダム性 (0-2)
max_tokens=150 # 生成される最大トークン数
)
# レスポンスから生成されたテキストを取得
generated_text = response.choices[0].message.content
print(generated_text)
# 消費したトークン数なども確認可能
# print(response.usage)
except Exception as e:
print(f"API呼び出し中にエラーが発生しました: {e}")
主要なパラメータ:
model
: 使用するモデルID (gpt-4o
, gpt-4o-mini
など)。messages
: 対話履歴をリスト形式で指定。役割 (role
) は system
(AIへの指示), user
(ユーザーの発言), assistant
(AIの過去の応答) があります。temperature
: 値が低いほど決定的で一貫した応答に、高いほど多様で創造的な応答になります。(デフォルト: 1)max_tokens
: レスポンスとして生成されるトークンの最大数を制限します。コスト管理にも役立ちます。top_p
, frequency_penalty
, presence_penalty
など、多様なパラメータで生成を制御できます。詳細は公式APIリファレンスを確認してください。API利用時には、ネットワークエラー、Rate Limit超過、サーバー側の問題などでエラーが発生することがあります。堅牢なアプリケーションを構築するには、適切なエラーハンドリングとリトライ処理が不可欠です。
Python
import time
from openai import OpenAI, RateLimitError, APIError
client = OpenAI()
MODEL = "gpt-4o"
MAX_RETRIES = 3
RETRY_DELAY = 5 # seconds
def call_chat_completion_with_retry(messages):
retries = 0
while retries < MAX_RETRIES:
try:
response = client.chat.completions.create(
model=MODEL,
messages=messages,
temperature=0.7,
max_tokens=150
)
return response.choices[0].message.content
except RateLimitError as e:
retries += 1
print(f"Rate limit exceeded. Retrying in {RETRY_DELAY}s... ({retries}/{MAX_RETRIES})")
print(f"Error details: {e}")
time.sleep(RETRY_DELAY)
except APIError as e:
retries += 1
print(f"OpenAI API error occurred. Retrying in {RETRY_DELAY}s... ({retries}/{MAX_RETRIES})")
print(f"Error details: {e} (Status code: {e.status_code})")
# 5xx系エラーならリトライ、4xx系ならリトライしないなどの判断も可能
if e.status_code == 429: # Rate Limit Error (別の形)
time.sleep(RETRY_DELAY)
elif e.status_code >= 500: # Server error
time.sleep(RETRY_DELAY)
else:
print("Non-retryable API error.")
raise e # リトライせずにエラーを再送出
except Exception as e:
print(f"An unexpected error occurred: {e}")
raise e # 予期せぬエラーはリトライせずに終了
print("Max retries exceeded.")
return None # または例外を送出
# 利用例
messages = [
{"role": "system", "content": "あなたは親切なアシスタントです。"},
{"role": "user", "content": "エラーハンドリングについて教えてください。"}
]
result = call_chat_completion_with_retry(messages)
if result:
print(result)
(上記はシンプルなリトライ例です。指数バックオフなどを実装するとより効果的です)
GPT-4o APIは、基本的なテキスト生成以外にも高度な機能を提供します。
APIレスポンスを確実にJSON形式で受け取りたい場合に利用します。response_format={"type": "json_object"}
を指定し、プロンプト内でJSON形式で出力するように指示します。
Python
response = client.chat.completions.create(
model=MODEL,
response_format={ "type": "json_object" }, # JSONモードを指定
messages=[
{"role": "system", "content": "あなたはユーザーの指示に従ってJSON形式で出力するアシスタントです。"},
{"role": "user", "content": "名前が'山田太郎'、年齢が30歳のユーザー情報をJSONで出力してください。"}
]
)
print(response.choices[0].message.content)
# 出力例: {"name": "山田太郎", "age": 30} (文字列として)
# json.loads() でパース可能
### Function Calling
ChatGPTに関数の説明を提供し、ユーザーのリクエストに応じて適切な関数と引数をJSON形式で返させる機能です。これにより、外部API連携やデータベース操作などを実現できます。
Python
import json
# 1. 関数の説明を定義
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "指定された場所の現在の天気を取得する",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "天気情報を取得したい都市名 (例: 東京都)",
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
},
}
]
messages = [{"role": "user", "content": "大阪の今の天気は?"}]
# 2. API呼び出し (toolsとtool_choiceを指定)
response = client.chat.completions.create(
model=MODEL,
messages=messages,
tools=tools,
tool_choice="auto", # 必要なら特定の関数を強制も可能
)
response_message = response.choices[0].message
tool_calls = response_message.tool_calls
# 3. レスポンスに関数呼び出しが含まれているかチェック
if tool_calls:
# 4. 呼び出す関数と引数を取得
available_functions = {
"get_current_weather": get_current_weather, # 実際の関数を定義しておく
}
function_name = tool_calls[0].function.name
function_to_call = available_functions[function_name]
function_args = json.loads(tool_calls[0].function.arguments)
# 5. 実際の関数を実行 (ここではダミー関数)
def get_current_weather(location, unit="celsius"):
print(f"天気API呼び出し: location={location}, unit={unit}")
return json.dumps({"location": location, "temperature": "25", "unit": unit})
function_response = function_to_call(
location=function_args.get("location"),
unit=function_args.get("unit"),
)
# 6. 関数の実行結果を再度APIに送り、最終的な応答を得る
messages.append(response_message) # AIの応答 (関数呼び出し指示) を履歴に追加
messages.append(
{
"tool_call_id": tool_calls[0].id,
"role": "tool",
"name": function_name,
"content": function_response, # 関数の実行結果
}
)
second_response = client.chat.completions.create(
model=MODEL,
messages=messages,
)
print(second_response.choices[0].message.content) # 最終的なユーザーへの応答
else:
print(response_message.content) # 通常のテキスト応答
GPT-4o APIは画像入力をサポートしています。messages
内の content
をリスト形式にし、type
に image_url
を指定して画像のURLまたはBase64エンコードデータを渡します。
Python
response = client.chat.completions.create(
model="gpt-4o", # Visionはgpt-4oなどの対応モデルが必要
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "この画像には何が写っていますか?"},
{
"type": "image_url",
"image_url": {
# "url": "https://example.com/image.jpg", # URL指定の場合
"url": "data:image/jpeg;base64,{base64_encoded_image_data}", # Base64の場合
"detail": "low" # low / high / auto - 精度とコストのトレードオフ
},
},
],
}
],
max_tokens=300,
)
print(response.choices[0].message.content)
OpenAIは音声合成(Text-to-Speech, TTS)と音声認識(Speech-to-Text)のAPIも提供しており、GPT-4oの高速性と組み合わせることで、リアルタイム音声対話アプリケーションの構築が可能です。詳細はAudio APIドキュメントを参照してください。
APIを安定して利用するためには、利用制限を理解しておく必要があります。
RateLimitError
(HTTP 429) が返されます。適切な待機とリトライ処理が必要です。APIを利用する上で、セキュリティは非常に重要です。
ChatGPT 4o APIは、従来のモデルと比較して速度、コスト、性能、Rate Limitの点で大幅に改善され、開発者にとって非常に強力なツールとなりました。
一方で、料金体系、利用制限、セキュリティといった注意点を理解し、適切に対処することが安定したサービス運用には不可欠です。
この記事を参考に、ぜひChatGPT 4o APIを活用し、革新的なアプリケーションやサービスの開発に挑戦してみてください。より詳細な情報や最新情報については、常にOpenAI Platformの公式ドキュメントを参照することをお勧めします。基礎から学びたい方はChatGPT API入門ガイドも役立つでしょう。
3秒で登録完了!AI活用スタートガイド(PDF)
このガイド(PDF版)で、あなたのビジネスはこう変わります↓
✅ 面倒な作業が劇的に楽に! (資料作成、メール返信 etc.)
✅ 平均60分→10分! 驚きの時間短縮を実現。
✅ コピペOKの55選で、今日からすぐに効果を実感!
全55プロンプト収録の「AI業務効率化ガイド」PDF版を、ご入力いただいたメールアドレスへすぐにお送りします。
メールアドレスを入力するだけでOK!迷惑メール等は一切送りませんのでご安心ください。(いつでも解除可能です)
コピペするだけで業務が劇的に楽になる「AI業務効率化ガイド(全55プロンプト収録)」のPDF版をお送りします。
メールアドレスを入力するだけでOK!迷惑メール等は一切送りませんのでご安心ください。