OpenAI API Python チュートリアル 2026 | APIMaster.ai
OpenAI API Python チュートリアルの完全版—SDKのインストール、チャット補完、ストリーミング応答、関数呼び出し、非同期アプリの構築までをカバー。APIMaster.aiで割引アクセスも可能。
OpenAI API Python チュートリアル
このチュートリアルでは、インストールから高度なユースケースまで、Pythonを使用したOpenAI APIの使い方を解説します。すべての例はAPIMaster.aiで動作します—api_keyとbase_urlを変更するだけです。
インストール
pip install openai
Python 3.8以上が必要です。openaiパッケージはOpenAIの公式Python SDK(バージョン1.x)です。
初期設定
from openai import OpenAI
client = OpenAI(
api_key="YOUR_APIMASTER_KEY",
base_url="https://apimaster.ai/v1",
)
または環境変数を使用します(推奨):
export OPENAI_API_KEY="YOUR_APIMASTER_KEY"
export OPENAI_BASE_URL="https://apimaster.ai/v1"
from openai import OpenAI
client = OpenAI() # 環境変数を自動的に読み込みます
基本的なチャット補完
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "system", "content": "あなたはPythonの専門家です。"},
{"role": "user", "content": "Pythonのジェネレータとは何ですか?"},
],
)
print(response.choices[0].message.content)
print(f"使用トークン数: {response.usage.total_tokens}")
ストリーミング応答
stream = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "Pythonで二分探索を書いてください。"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
print()
マルチターン会話
messages = [
{"role": "system", "content": "あなたは役立つコーディングアシスタントです。"}
]
def send(user_text):
messages.append({"role": "user", "content": user_text})
resp = client.chat.completions.create(model="gpt-5.4", messages=messages)
reply = resp.choices[0].message.content
messages.append({"role": "assistant", "content": reply})
return reply
print(send("リスト内包表記について説明してください。"))
print(send("もっと難しい例を教えてください。"))
構造化出力(JSONモード)
モデルに有効なJSONを強制的に返させる:
import json
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{
"role": "user",
"content": "'Jane Smith (jane@acme.com) at Acme Corp.' から名前、メールアドレス、会社を抽出してください。",
}
],
response_format={"type": "json_object"},
)
data = json.loads(response.choices[0].message.content)
print(data) # {"name": "Jane Smith", "email": "jane@acme.com", "company": "Acme Corp"}
関数呼び出し(ツール使用)
import json
tools = [
{
"type": "function",
"function": {
"name": "get_stock_price",
"description": "指定されたティッカーシンボルの現在の株価を取得する",
"parameters": {
"type": "object",
"properties": {
"ticker": {"type": "string", "description": "株式ティッカー、例:AAPL"},
},
"required": ["ticker"],
},
},
}
]
messages = [{"role": "user", "content": "Apple株の現在の価格はいくらですか?"}]
response = client.chat.completions.create(
model="gpt-5.4",
messages=messages,
tools=tools,
tool_choice="auto",
)
# ツール呼び出しを処理
if response.choices[0].finish_reason == "tool_calls":
tool_call = response.choices[0].message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
print(f"{tool_call.function.name} を {args} で呼び出し中")
# 関数の結果をシミュレート
result = {"ticker": args["ticker"], "price": 189.50}
# 結果を送り返す
messages.append(response.choices[0].message)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": json.dumps(result),
})
final = client.chat.completions.create(model="gpt-5.4", messages=messages)
print(final.choices[0].message.content)
埋め込み
response = client.embeddings.create(
model="text-embedding-3-small",
input=["OpenAI API Python チュートリアル", "機械学習の基礎"],
)
embeddings = [item.embedding for item in response.data]
print(f"埋め込みの次元数: {len(embeddings[0])}")
非同期使用
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(
api_key="YOUR_APIMASTER_KEY",
base_url="https://apimaster.ai/v1",
)
async def generate(prompt: str) -> str:
resp = await client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": prompt}],
)
return resp.choices[0].message.content
async def main():
# 5つのリクエストを同時に実行
prompts = [f"概念 #{i} を説明してください" for i in range(5)]
results = await asyncio.gather(*[generate(p) for p in prompts])
for r in results:
print(r[:100])
asyncio.run(main())
エラーハンドリング
from openai import OpenAI, AuthenticationError, RateLimitError, APIError
import time
def safe_call(client, **kwargs):
for attempt in range(3):
try:
return client.chat.completions.create(**kwargs)
except AuthenticationError:
raise # 認証エラーは再試行しない
except RateLimitError:
time.sleep(2 ** attempt)
except APIError as e:
if e.status_code >= 500:
time.sleep(1)
else:
raise
raise RuntimeError("最大再試行回数を超えました")
モデル選択ガイド
| タスク | モデル | 理由 |
|---|---|---|
| 要約、分類 | gpt-4o-mini | 低コスト |
| 一般的なコーディング、文章作成 | gpt-5.4 | 最適なバランス |
| 複雑な推論 | gpt-5.5 または o3 | 高い能力 |
| バッチ処理 | gpt-4o-mini または gpt-5.4 | 品質と予算に応じて選択 |
よくある質問
OpenAI Pythonライブラリをインストールするにはどうすればよいですか?
pip install openai を実行します。APIMasterアクセスの場合、追加のパッケージは不要です—クライアント初期化時に base_url と api_key を設定するだけです。
OpenAIライブラリに必要なPythonバージョンは? Python 3.8以降です。非同期クライアントは、最適な互換性のためにPython 3.10以上を推奨します。
PythonでOpenAI APIのレート制限を処理するにはどうすればよいですか?
指数バックオフを使用します—RateLimitError をキャッチし、遅延を増やしながら再試行します。tenacity ライブラリを使用すると簡単です。APIMasterのルーティングにより、さらに安定性が向上します。
OpenAI PythonライブラリをClaudeモデルで使用できますか?
はい—APIMaster経由で可能です。base_url="https://apimaster.ai/v1" を設定し、claude-sonnet-4-6 のようなモデルIDを使用します。応答形式はGPT応答と同じです。
Pythonで非同期OpenAI呼び出しを使用するにはどうすればよいですか?
OpenAI の代わりに AsyncOpenAI を使用し、API呼び出しを await します。上記のガイドの非同期の例を参照してください。