APIMaster.ai

OpenAI API Python チュートリアル 2026 | APIMaster.ai

OpenAI API Python チュートリアルの完全版—SDKのインストール、チャット補完、ストリーミング応答、関数呼び出し、非同期アプリの構築までをカバー。APIMaster.aiで割引アクセスも可能。

OpenAI API Python チュートリアル

このチュートリアルでは、インストールから高度なユースケースまで、Pythonを使用したOpenAI APIの使い方を解説します。すべての例はAPIMaster.aiで動作します—api_keybase_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_urlapi_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 します。上記のガイドの非同期の例を参照してください。

APIMaster経由でOpenAI APIアクセスを取得 →