OpenAI Python SDKとは?使い方・インストール方法・APIの基本を初心者向けに解説

OpenAI Python SDKは、PythonからOpenAI APIを利用するための公式ライブラリです。ChatGPTのようなAI機能を自分のPythonプログラムやWebアプリ、業務システムなどに組み込む際に利用できます。

本記事では、OpenAI Python SDKとは何か、インストール方法、APIキーの設定、基本的な使い方、Responses APIによるテキスト生成、画像入力、非同期処理、エラー処理まで、初心者にも分かりやすく解説します。

※本記事は2026年9月時点のOpenAI公式Python SDKの仕様をもとにしています。公式SDKの現行版はPython 3.10以上が必要です(2026年10月にPyPIで確認。Python 3.9では2.48.0までの古い版が入ります)。(GitHub)


OpenAI Python SDKとは?

OpenAI Python SDKとは、PythonからOpenAI APIを簡単に呼び出すための公式Pythonライブラリです。

正式なパッケージ名は openai で、Pythonのパッケージ管理ツールであるpipを使ってインストールできます。

pip install openai

OpenAI公式Pythonライブラリは、OpenAI APIへのアクセスをPythonから扱いやすくするために提供されています。同期処理だけでなく、非同期処理にも対応しています。(GitHub)

例えば、PythonからAIに質問して回答を取得する処理を、次のように記述できます。

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5.5",
    input="Pythonとは何ですか?"
)

print(response.output_text)

このように、数行のPythonコードでOpenAIのモデルを利用できます。


OpenAI Python SDKでできること

OpenAI Python SDKを利用すると、さまざまなAI機能をPythonアプリケーションに組み込めます。

主な用途は以下の通りです。

用途 内容
テキスト生成 文章作成、要約、質問回答など
プログラミング支援 コード生成・説明・修正
画像理解 画像の内容をAIに分析させる
ファイル処理 ファイルをAPIに渡して処理
ストリーミング AIの回答を逐次取得
非同期処理 async/awaitによるAPI呼び出し
Function Calling 外部の関数・システムとの連携
Webhook APIイベントの受信
Realtime API 音声などを利用したリアルタイム処理

公式SDKでは、Responses APIが主要なAPIとして案内されています。(GitHub)


OpenAI Python SDKのインストール方法

1. Pythonのバージョンを確認する

まずPythonがインストールされているか確認します。

python3 --version

OpenAI Python SDKの現行版はPython 3.10以上が要件です(バージョン2.49.0から。PyPIの記載で確認)。(GitHub)

例えば、

Python 3.11.9

と表示されれば利用できます。


2. openaiをインストールする

pipを使ってインストールします。

pip install openai

環境によっては、

pip3 install openai

を使用します。

仮想環境を利用する場合は、先に仮想環境を作成します。

python3 -m venv venv

仮想環境を有効化します。

macOS・Linuxの場合:

source venv/bin/activate

Windowsの場合:

venv\Scripts\activate

その後、

pip install openai

を実行します。


インストールできたかを確認する(バージョンとPythonの要件)

pip install openai のあとは、まずどの版が入ったかを確認します。次のコードはAPIキーがなくても動きます(通信はしません)。

import sys
import openai

print(sys.version.split()[0])
print(openai.__version__)

実行結果:

3.13.16
3.24.0

2026年10月5日に、Python 3.13 の仮想環境へインストールした結果です。このとき入った openai は 3.24.0(PyPIでの公開は2026年10月2日)でした。

Python 3.9 では古い版が黙って入る

PyPIの公開情報を確認すると、openai は 2.49.0(2026年7月27日公開・UTC)から Python 3.10 以上が必要になっています。Python 3.9 で pip install openai を実行してもエラーにはならず、3.9で動く最後の版(2.48.0)がそのまま入ります。macOS に標準で入っている Python 3.9.6 で、同じコードを実行した結果です。

import sys
import openai

print(sys.version.split()[0])
print(openai.__version__)

実行結果:

3.9.6
2.48.0

最新版を使うには Python 3.10 以上が必要です。版を指定してインストールすると、3.9 では入らないことがはっきり分かります。

pip install "openai>=2.49"

Python 3.9.6 での実行結果です(1行目の版の一覧は長いので途中を「…」で省略しました)。

ERROR: Could not find a version that satisfies the requirement openai>=2.49 (from versions: 0.0.2, 0.1.0, ... 2.47.0, 2.48.0)
ERROR: No matching distribution found for openai>=2.49
openaiの版必要なPython公開(UTC)
2.48.03.9以上2026年7月23日
2.49.03.10以上2026年7月27日
3.0.03.10以上2026年8月12日
3.24.0(2026年10月5日時点の最新)3.10以上2026年10月2日

出典は PyPIのopenaiのページ(各版の Requires: Python)です。2026年10月5日に確認しました。公式のサンプルコードがそのまま動かないときは、まず openai.__version__ を表示して、古い版が入っていないかを見てください。

APIキーが無いと、クライアントを作った時点で止まる

環境変数 OPENAI_API_KEY が読めていないと、通信する前の OpenAI() の行で例外になります。環境変数を消した状態で実行した結果です(openai 3.24.0)。

from openai import OpenAI

try:
    client = OpenAI()
except Exception as e:
    print(type(e).__name__)
    print(e)

実行結果:

OpenAIError
Missing credentials. Please pass an `api_key`, `workload_identity`, `admin_api_key`, or set the `OPENAI_API_KEY` or `OPENAI_ADMIN_KEY` environment variable.

このメッセージが出たら、APIキーそのものより先に、.env を読み込む load_dotenv() が OpenAI() より前にあるか、ターミナルで export したシェルと実行しているシェルが同じかを確認します。

OpenAI APIキーを取得する

OpenAI Python SDKを利用するには、基本的にOpenAI APIの認証情報が必要です。

APIキーはプログラムのコードに直接書くのではなく、環境変数として管理する方法が推奨されます。

例えば環境変数に、

export OPENAI_API_KEY="your_api_key"

を設定します。

Pythonでは、

from openai import OpenAI

client = OpenAI()

とすることで環境変数のAPIキーを利用できます。

公式SDKでは OPENAI_API_KEY を利用した認証が案内されています。APIキーをソースコードに直接記述してGitHubなどへ公開しないことが重要です。(GitHub)


.envを使ってAPIキーを管理する方法

開発環境では、python-dotenvを利用して .env ファイルにAPIキーを保存する方法も便利です。

まずインストールします。

pip install python-dotenv

.envを作成します。

OPENAI_API_KEY=your_api_key

Python側では、

from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()

client = OpenAI()

とします。

.gitignoreも設定する

.envにはAPIキーが入っているため、Git管理から除外します。

.env

これを .gitignore に追加しておきましょう。


OpenAI Python SDKの基本的な使い方

ここからは実際にOpenAI APIを呼び出してみます。

OpenAIクライアントを作成する

from openai import OpenAI

client = OpenAI()

OpenAI()によってAPIクライアントを作成します。

APIキーを明示的に指定することもできます。

from openai import OpenAI

client = OpenAI(
    api_key="your_api_key"
)

ただし、実際のアプリケーションではAPIキーをコードに直接書かず、環境変数などで管理するのがおすすめです。


Responses APIを使って文章を生成する

現在のOpenAI Python SDKでは、テキスト生成などの主要な処理にResponses APIを利用できます。(GitHub)

基本的なコードは次の通りです。

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5.5",
    input="Pythonについて100文字で説明してください。"
)

print(response.output_text)

ポイントは、

client.responses.create()

です。

ここにモデルや入力内容などを指定します。


inputに質問を指定する

例えば、

response = client.responses.create(
    model="gpt-5.5",
    input="東京のおすすめ観光スポットを3つ教えてください。"
)

とすると、AIに質問を送れます。

回答は、

response.output_text

で取得できます。

そのため、

print(response.output_text)

とすることで回答をターミナルに表示できます。


AIに役割を与える

instructionsを利用すると、AIに役割や回答方針を指定できます。

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5.5",
    instructions="あなたはPythonの講師です。初心者にも分かりやすく説明してください。",
    input="リストとタプルの違いを説明してください。"
)

print(response.output_text)

例えば、

あなたはSEOライターです。

や、

あなたはPython講師です。

などの指示を与えられます。


OpenAI Python SDKで画像を解析する

OpenAI Python SDKでは、画像を入力としてAIに分析させることもできます。

例えば画像URLを入力する場合は、次のようなコードを利用できます。

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5.5",
    input=[
        {
            "role": "user",
            "content": [
                {
                    "type": "input_text",
                    "text": "この画像には何が写っていますか?"
                },
                {
                    "type": "input_image",
                    "image_url": "https://example.com/image.jpg"
                }
            ]
        }
    ]
)

print(response.output_text)

公式SDKでは、画像URLだけでなく、Base64形式の画像を入力する方法も提供されています。(GitHub)


Pythonからファイルをアップロードする

OpenAI Python SDKではファイルアップロードにも対応しています。

例えば、

from pathlib import Path
from openai import OpenAI

client = OpenAI()

file = client.files.create(
    file=Path("data.jsonl"),
    purpose="fine-tune"
)

print(file)

のようにファイルをアップロードできます。

ファイルは bytes、PathLikeなどを利用して渡せます。(GitHub)


非同期処理にも対応

Webアプリケーションや大量のAPIリクエストを扱う場合には、非同期処理が便利です。

OpenAI Python SDKでは AsyncOpenAI を利用できます。

import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI()

async def main():
    response = await client.responses.create(
        model="gpt-5.5",
        input="Pythonとは何ですか?"
    )

    print(response.output_text)

asyncio.run(main())

同期処理で使う OpenAI に対して、非同期処理では AsyncOpenAI を利用します。(GitHub)


ストリーミングで回答を取得する

AIの回答をすべて生成してから表示するのではなく、生成された内容を順番に受け取ることもできます。

from openai import OpenAI

client = OpenAI()

stream = client.responses.create(
    model="gpt-5.5",
    input="Pythonについて詳しく説明してください。",
    stream=True
)

for event in stream:
    print(event)

ストリーミングを利用すると、ChatGPTのように回答が徐々に表示されるUIを作ることができます。OpenAI Python SDKはServer-Sent Events(SSE)によるストリーミングに対応しています。(GitHub)


Chat Completions APIとの違い

OpenAI Python SDKには、従来から利用されてきたChat Completions APIもあります。

例えば、

from openai import OpenAI

client = OpenAI()

completion = client.chat.completions.create(
    model="gpt-5.5",
    messages=[
        {
            "role": "user",
            "content": "Pythonとは何ですか?"
        }
    ]
)

print(completion.choices[0].message.content)

という書き方です。

一方、現在の公式SDKでは新しいアプリケーションの主要なAPIとしてResponses APIが案内されています。Chat Completions APIも引き続きサポートされています。(GitHub)

Responses APIとChat Completions API

項目 Responses API Chat Completions API
新規開発 ◎ ○
テキスト生成 ○ ○
マルチモーダル ○ ○
ストリーミング ○ ○
既存システム △ ◎
今後の開発 おすすめ 既存用途中心

これからOpenAI APIを使ったPythonアプリを作るのであれば、まずResponses APIを学ぶのがおすすめです。


OpenAI Python SDKでエラーが発生した場合

APIを利用していると、

  • APIキーが間違っている

  • API利用権限がない

  • リクエストが多すぎる

  • ネットワークに問題がある

  • API側でエラーが発生する

などの問題が発生することがあります。

OpenAI Python SDKでは、エラーの種類に応じた例外クラスが用意されています。(GitHub)

例えば、

import openai
from openai import OpenAI

client = OpenAI()

try:
    response = client.responses.create(
        model="gpt-5.5",
        input="Hello"
    )

    print(response.output_text)

except openai.RateLimitError:
    print("APIの利用制限に達しました。")

except openai.APIConnectionError:
    print("APIに接続できませんでした。")

except openai.APIStatusError as e:
    print("APIエラー:", e.status_code)

のように処理できます。


エラーの種類と自動リトライを手元で確かめる

OpenAI Python SDK は、エラーの種類によって自動で送り直す(リトライする)ものと、すぐに例外を出すものを分けています。本物のAPIを呼ぶと料金がかかるので、決まったステータスコードを返すだけのサーバーを手元に立てて、SDKがどの例外を出し、何回リクエストを送ったかを数えました。APIキーは不要で、料金もかかりません。

import json, threading
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
import openai
from openai import OpenAI

# 本物のAPIには接続せず、手元に「決まったエラーを返すだけ」のサーバーを立てる
calls = []
class Handler(BaseHTTPRequestHandler):
    def do_POST(self):
        self.rfile.read(int(self.headers["Content-Length"]))
        calls.append(self.path)
        status = int(self.headers["X-Test-Status"])
        body = json.dumps({"error": {"message": "test"}}).encode()
        self.send_response(status)
        self.send_header("Content-Type", "application/json")
        self.send_header("Content-Length", str(len(body)))
        self.end_headers()
        self.wfile.write(body)
    def log_message(self, *args):
        pass

server = ThreadingHTTPServer(("127.0.0.1", 0), Handler)
threading.Thread(target=server.serve_forever, daemon=True).start()
url = "http://127.0.0.1:%d/v1" % server.server_port

for status in [400, 401, 403, 404, 429, 500]:
    calls.clear()
    client = OpenAI(api_key="dummy", base_url=url,
                    default_headers={"X-Test-Status": str(status)})
    try:
        client.responses.create(model="dummy-model", input="Hello")
    except openai.APIStatusError as e:
        print(status, type(e).__name__, "送信回数:", len(calls))

実行結果:

400 BadRequestError 送信回数: 1
401 AuthenticationError 送信回数: 1
403 PermissionDeniedError 送信回数: 1
404 NotFoundError 送信回数: 1
429 RateLimitError 送信回数: 3
500 InternalServerError 送信回数: 3
ステータス例外クラス送信回数意味
400BadRequestError1リクエストの中身が誤っている
401AuthenticationError1APIキーが誤っている・無効
403PermissionDeniedError1そのモデルや機能を使う権限がない
404NotFoundError1指定したモデルやファイルが見つからない
429RateLimitError3利用制限に達した
500InternalServerError3API側のエラー

429と500は3回送っています。SDKの既定は max_retries=2 なので、最初の1回と、リトライ2回です。一時的なエラーは待てば通る可能性があるので、SDKが自動で送り直します。一方、APIキーやリクエストの誤り(400・401・403・404)は何度送っても結果が変わらないので、1回で例外になります。

例外クラスの親子関係も確認しておきます。

import openai

for name in ["AuthenticationError", "PermissionDeniedError", "NotFoundError",
             "BadRequestError", "RateLimitError", "InternalServerError",
             "APIConnectionError", "APITimeoutError"]:
    cls = getattr(openai, name)
    print(name, "->", cls.__mro__[1].__name__)

実行結果:

AuthenticationError -> APIStatusError
PermissionDeniedError -> APIStatusError
NotFoundError -> APIStatusError
BadRequestError -> APIStatusError
RateLimitError -> APIStatusError
InternalServerError -> APIStatusError
APIConnectionError -> APIError
APITimeoutError -> APIConnectionError

HTTPのエラー(サーバーから返事が来た場合)はすべて APIStatusError の子です。接続できない・タイムアウトした場合(APIConnectionError・APITimeoutError)は別の系統なので、except openai.APIStatusError だけでは受けられません。上の「エラーが発生した場合」のコードで、RateLimitError → APIConnectionError → APIStatusError の順に書いているのはこのためです。

タイムアウトとリトライ回数を変える

既定値はクライアントの属性で確認できます(APIキーはダミーで構いません。通信はしません)。

from openai import OpenAI

client = OpenAI(api_key="dummy")
print(client.base_url)
print(client.timeout)
print(client.max_retries)

fast = client.with_options(timeout=20.0, max_retries=0)
print(fast.timeout, fast.max_retries)

実行結果:

https://api.openai.com/v1/
Timeout(connect=5.0, read=600, write=600, pool=600)
2
20.0 0

既定では接続に5秒、応答の読み込みに最大600秒(10分)待ちます。ユーザーが画面の前で待っているアプリでは長すぎることがあるので、with_options() で一時的に短くするか、最初から OpenAI(timeout=20.0, max_retries=0) のように指定します。リトライを0にすると、429が返ったときにすぐ例外になるので、自分で待ち時間を決めて送り直す処理を書けます。

確認した版は openai 3.24.0 です。既定値は版によって変わる可能性があるので、使っている版で上のコードを実行して確かめてください。

APIキーを直接コードに書くのは危険

次のようなコードは、個人で試すだけなら動作します。

client = OpenAI(
    api_key="sk-xxxxxxxx"
)

しかし、実際の開発ではおすすめできません。

GitHubなどにコードを公開すると、APIキーまで公開してしまう可能性があります。

そのため、

client = OpenAI()

として、環境変数の

OPENAI_API_KEY

から読み込ませる方法が基本です。


OpenAI Python SDKを使った簡単なAIアプリ

例えば、ユーザーから質問を入力してAIが回答するプログラムは次のように作れます。

from openai import OpenAI

client = OpenAI()

question = input("質問してください:")

response = client.responses.create(
    model="gpt-5.5",
    input=question
)

print("\nAIの回答:")
print(response.output_text)

実行すると、

質問してください:
PythonでCSVファイルを読み込む方法を教えて

のように質問できます。

AIから回答が返ってくるため、非常に簡単なAIチャットアプリになります。


OpenAI Python SDKは何に使える?

OpenAI Python SDKを利用すると、例えば次のようなサービスを開発できます。

文章生成サービス

ユーザー
 ↓
Python
 ↓
OpenAI API
 ↓
AIによる文章生成

ブログ記事、メール、商品説明、企画書などの文章生成に利用できます。

AIチャットボット

ユーザー
 ↓
Webアプリ
 ↓
Python
 ↓
OpenAI API
 ↓
AI

問い合わせ対応や社内FAQなどに利用できます。

プログラミング支援ツール

PythonからAIにコードを渡して、

  • コードレビュー

  • バグの原因分析

  • リファクタリング

  • コメント生成

  • テストコード生成

などを行うこともできます。

業務自動化

例えば、

メール
 ↓
Python
 ↓
OpenAI API
 ↓
内容を分類
 ↓
担当部署へ振り分け

といった業務自動化にも利用できます。


OpenAI Python SDKとChatGPTの違い

ここは初心者が特に混乱しやすいポイントです。

ChatGPTは人間がAIを利用するためのサービスです。

一方、

OpenAI API+Python SDKは、開発者が自分のプログラムからAIを利用するための仕組みです。

項目 ChatGPT OpenAI Python SDK
主な利用者 一般ユーザー 開発者
操作方法 Web・アプリ Pythonプログラム
AIを自分のサービスに組み込む △ ◎
自動処理 △ ◎
API利用 ― ◎
Pythonとの連携 △ ◎

例えば、

「ChatGPTに文章を書いてもらう」

のであればChatGPTを使います。

一方、

「自社システムから自動的にAIへ文章作成を依頼する」

のであればOpenAI APIとPython SDKが候補になります。


OpenAI Python SDKを学ぶメリット

OpenAI Python SDKを学ぶメリットは、AIを「使う側」から「作る側」へ進めることです。

ChatGPTを利用するだけなら、プログラミングの知識は必須ではありません。

しかしOpenAI Python SDKを使えば、

Python
+
OpenAI API
+
データベース
+
Webアプリ

という組み合わせで、独自のAIサービスを作れるようになります。

特にPythonはAI・機械学習・データ分析との相性が良いため、AIエンジニアを目指す人にとって重要な技術の一つです。


OpenAI Python SDKを始めるなら何を学べばいい?

初心者の場合、次の順番がおすすめです。

STEP 1:Python基礎

まず、

  • 変数

  • if文

  • for文

  • 関数

  • リスト

  • 辞書

  • クラス

などを学びます。

STEP 2:APIの基本

HTTP、JSON、APIキーなど、APIの基本概念を理解します。

STEP 3:OpenAI Python SDK

pip install openai

でSDKをインストールします。

STEP 4:Responses API

client.responses.create()

を使ってAIに質問するところから始めます。

STEP 5:AIアプリを作る

例えば、

  • AIチャットボット

  • AI文章作成ツール

  • AI議事録

  • FAQシステム

  • 社内AIアシスタント

などを実際に作ってみると理解が深まります。


OpenAI Python SDKに関するよくある質問

OpenAI Python SDKは無料ですか?

SDKそのものはpipからインストールできますが、OpenAI APIの利用料金は別途考える必要があります。

つまり、

Python
 ↓
OpenAI Python SDK
 ↓
OpenAI API
 ↓
モデル

という構成になり、APIを利用する場合は利用量に応じた料金が発生します。

料金はモデルや利用量によって異なるため、実際に利用する際はOpenAIの最新料金表を確認しましょう。


OpenAI Python SDKは初心者でも使えますか?

はい。

Pythonの基本文法が分かれば、比較的簡単に利用できます。

最初は、

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5.5",
    input="こんにちは"
)

print(response.output_text)

程度のコードから始めるとよいでしょう。


OpenAI Python SDKとOpenAI APIは違いますか?

厳密には違います。

OpenAI APIは、OpenAIが提供するAPIそのものです。

OpenAI Python SDKは、そのAPIをPythonから利用しやすくするための公式ライブラリです。

イメージとしては、

OpenAI API
   ↑
OpenAI Python SDK
   ↑
Pythonプログラム

という関係です。


あわせて読みたい

ここで扱った内容は、他のPython機能と組み合わせて使う場面が多くあります。あわせてOpenAI API完全ガイド – 使い方から活用事例まで、Claude Code・Claude API、Vercel AI SDK とは?Next.jsでAIアプリを10分で作る方法も参考になります。

Pythonの文法や学習の順序から確認したい場合はPython入門ロードマップにまとめています。

まとめ:OpenAI Python SDKはAI開発の重要な入口

OpenAI Python SDKは、PythonプログラムからOpenAI APIを利用するための公式ライブラリです。

特に覚えておきたいポイントは以下です。

  • 現行版はPython 3.10以上に対応

  • pip install openaiでインストールできる

  • OpenAI()でクライアントを作成できる

  • Responses APIでAIを呼び出せる

  • response.output_textでテキストを取得できる

  • 画像やファイルなどの入力にも対応

  • 非同期処理にも対応

  • ストリーミングにも対応

  • エラー処理のための例外クラスが用意されている

  • APIキーは環境変数などで安全に管理する

  • 新しく開発する場合はResponses APIを中心に学ぶのがおすすめ

OpenAI Python SDKを使えば、単にChatGPTを利用するだけでなく、Pythonを使って独自のAIサービスや業務システムを開発できるようになります。

Pythonを学習している人にとって、OpenAI Python SDKは生成AI時代の重要な開発スキルの一つと言えるでしょう。

公式情報: OpenAI Python SDK(GitHub)
公式ドキュメント: OpenAI API クイックスタート