OpenAI APIとは?基本概要と特徴
OpenAI APIは、ChatGPTやGPT-4oなどの大規模言語モデル(LLM)を自社サービスやアプリケーションに組み込むためのインターフェースです。テキスト生成・画像認識・音声合成・埋め込みベクトル生成など、多様な機能をHTTPリクエスト経由で利用できます。
2024年以降、OpenAIはChat Completions APIに加えてResponses APIを提供開始しました。Responses APIはChat Completions APIのスーパーセットとして設計されており、新規開発ではResponses APIの採用が推奨されています。ただし、Chat Completions APIも引き続き広く使われているため、本記事では両方の使い方を解説します。
事前準備:APIキーの取得と環境構築
OpenAI APIを使い始めるには、まずOpenAIのプラットフォームサイト(platform.openai.com)でアカウントを作成し、APIキーを発行する必要があります。
手順1:APIキーの発行
- platform.openai.comにログインする
- 右上のアカウントメニューから「API Keys」を選択
- 「Create new secret key」をクリックしてキーを発行
- 表示されたキーをコピーして安全な場所に保存(再表示不可)
手順2:Pythonライブラリのインストール
pip install openai python-dotenv
手順3:環境変数への設定
APIキーをソースコードにハードコードするのは危険です。必ず.envファイルや環境変数で管理してください。
# .envファイル
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
Chat Completions APIの基本的な使い方(Python)
最もよく使われるChat Completions APIの基本的な実装例を見てみましょう。
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "あなたは親切なアシスタントです。"},
{"role": "user", "content": "Pythonでリストをソートする方法を教えてください。"}
],
temperature=0.7,
max_tokens=500
)
print(response.choices[0].message.content)
主要パラメータの解説
- model:使用するモデル名(
gpt-4o、gpt-4o-miniなど) - messages:会話履歴の配列。
system(システムプロンプト)・user(ユーザー入力)・assistant(AIの返答)の3ロールを使う - temperature:出力のランダム性(0〜2。低いほど安定、高いほど創造的)
- max_tokens:生成する最大トークン数(コスト管理に重要)
GPT-4oとモデルの選び方
OpenAI APIには複数のモデルが用意されており、用途とコストに応じて選択します。
| モデル | 特徴 | 入力(/1Mトークン) | 出力(/1Mトークン) |
|---|---|---|---|
| gpt-4o | 高精度・マルチモーダル対応 | $2.50 | $10.00 |
| gpt-4o-mini | 軽量・低コスト・高速 | $0.15 | $0.60 |
学習・プロトタイプ段階ではgpt-4o-miniを使うのがおすすめです。1回の問い合わせコストが0.1円以下になることも多く、気軽に試せます。本番運用で高い精度が求められる場合はgpt-4oを採用しましょう。
モデル選定の考え方
- プロトタイプ・開発初期:gpt-4o-mini(コスト優先)
- 本番・複雑なタスク:gpt-4o(精度優先)
- Vision(画像認識):gpt-4oまたはgpt-4o-mini(どちらも対応)
- 埋め込みベクトル生成:text-embedding-3-small / text-embedding-3-large
応用API:Embeddings・Vision・TTS・STT
Embeddings API(テキストの意味ベクトル化)
Embeddings APIは、テキストを高次元の数値ベクトルに変換します。セマンティック検索・類似度計算・RAG(検索拡張生成)などに活用されます。
response = client.embeddings.create(
model="text-embedding-3-small",
input="OpenAI APIの使い方について教えてください"
)
vector = response.data[0].embedding
print(f"ベクトル次元数: {len(vector)}") # 1536次元
Vision API(画像理解)
GPT-4oはテキストと画像を同時に入力できるマルチモーダルモデルです。
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "この画像に何が写っていますか?"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
]
}
]
)
print(response.choices[0].message.content)
TTS API(テキスト→音声合成)
response = client.audio.speech.create(
model="tts-1",
voice="alloy", # alloy, echo, fable, onyx, nova, shimmer
input="こんにちは、OpenAI APIを使った音声合成のデモです。"
)
response.stream_to_file("output.mp3")
料金体系と節約のコツ
OpenAI APIは使用したトークン数に応じた従量課金制です。トークンとはテキストを分割した最小単位で、日本語では1文字が約1〜2トークンに相当します。
コスト削減の実践テクニック
- max_tokensを設定する:デフォルト無制限のため、必ず上限を指定する
- システムプロンプトを簡潔にする:毎回送信されるため、不要な文言を削除する
- gpt-4o-miniで開発・テスト:本番と同じコードで低コスト検証が可能
- 会話履歴を管理する:古い会話を要約・削除してコンテキスト長を抑制(Slack社内議論でも、コンテキスト圧縮はResponses API移行のユースケースとして挙げられています)
- Batch APIを使う:非同期処理でよい場合は50%割引が適用される
月間コストの目安
- 個人・学習用(gpt-4o-mini):月数百円〜数千円
- 中規模サービス(gpt-4o):月数万円〜数十万円
- エンタープライズ:専用料金・ボリュームディスカウントあり
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
| AuthenticationError | APIキーが無効または未設定 | 環境変数を確認し、キーを再発行する |
| RateLimitError | レート制限超過 | 指数バックオフでリトライ、または上位ティアへアップグレード |
| InvalidRequestError | パラメータ不正 | モデル名・メッセージ形式を公式ドキュメントで確認 |
| ContextLengthError | 入力トークン超過 | 会話履歴を圧縮・削除する |
LLMプロバイダを切り替える可能性がある場合は、openaiとgeminiなどをEnumで管理し、実行前にバリデーションを入れておくと保守性が高まります。
まとめ:OpenAI APIを活用したシステム開発のポイント
OpenAI APIは、APIキー取得からPythonでの実装まで短時間で始められるのが魅力です。本記事で解説した主なポイントをまとめます。
- まずはgpt-4o-miniでコストを抑えつつ開発を進める
- APIキーは必ず環境変数で管理し、ソースコードへのハードコードを禁止する
- max_tokens・会話履歴管理でコストを最適化する
- テキスト生成以外にもEmbeddings・Vision・TTSなど豊富な機能を活用する
- 本番運用ではResponses APIへの移行も検討する
LLMアプリ開発は、モデル選定・プロンプト設計・コスト最適化・セキュリティを総合的に設計する必要があります。AI開発支援サービスやLLMエンジニア採用についてもお気軽にご相談ください。
FAQ:OpenAI APIに関するよくある質問
Q. OpenAI APIは無料で使えますか?
A. 新規アカウントにはトライアルクレジットが付与される場合があります(金額・期間は変更される場合があるため公式サイトを確認してください)。トライアル期間後は従量課金制です。gpt-4o-miniであれば1回の問い合わせコストが非常に安く、学習目的なら月数百円以内に収まるケースがほとんどです。
Q. APIキーが漏洩した場合はどうすればよいですか?
A. すぐにOpenAIのダッシュボードで該当のAPIキーを削除し、新しいキーを発行してください。GitHubなどにコミットしてしまった場合は、リポジトリの履歴からも削除する必要があります。APIキーは.envファイルに保存し、.gitignoreに追加することが基本です。
Q. gpt-4oとgpt-4o-miniはどのような場合に使い分けるべきですか?
A. 開発・テスト段階やコストを抑えたいケースではgpt-4o-miniを推奨します。複雑な推論・高度な文章生成・精度が求められる本番環境ではgpt-4oを選択してください。同一コードベースでモデル名を切り替えるだけで対応できます。
Q. Chat Completions APIとResponses APIの違いは何ですか?
A. Responses APIはChat Completions APIの後継として開発された新しいインターフェースで、より柔軟なマルチターン会話管理やツール利用が可能です。新規プロジェクトにはResponses APIの採用が推奨されますが、既存のChat Completions実装もそのまま動作し続けます。
Q. 日本語のトークン数はどのように計算しますか?
A. 日本語は英語よりもトークン消費量が多く、概ね1文字あたり1〜2トークンが目安です。正確なトークン数を事前に確認したい場合は、OpenAIが提供するトークナイザー(tiktoken)を使って計算できます。コスト見積もり時は日本語の場合は多めに見積もるのが安全です。
Q. APIを使ったサービスのセキュリティ上の注意点は何ですか?
A. 主な注意点は3点です。①APIキーをフロントエンドのコードに含めない(必ずバックエンド経由で呼び出す)、②ユーザー入力をそのままプロンプトに渡す「プロンプトインジェクション」に注意する、③個人情報・機密情報をAPIに送信しないか送信する場合はデータ処理に関する規約を確認する。エンタープライズ向けにはAzure OpenAI Serviceを使うと社内のセキュリティポリシーに準拠しやすくなります。
