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.0 | 3.9以上 | 2026年7月23日 |
| 2.49.0 | 3.10以上 | 2026年7月27日 |
| 3.0.0 | 3.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
| ステータス | 例外クラス | 送信回数 | 意味 |
|---|---|---|---|
| 400 | BadRequestError | 1 | リクエストの中身が誤っている |
| 401 | AuthenticationError | 1 | APIキーが誤っている・無効 |
| 403 | PermissionDeniedError | 1 | そのモデルや機能を使う権限がない |
| 404 | NotFoundError | 1 | 指定したモデルやファイルが見つからない |
| 429 | RateLimitError | 3 | 利用制限に達した |
| 500 | InternalServerError | 3 | API側のエラー |
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 クイックスタート






