「自社のサービスにAIを組み込みたいけど、どこから手をつければいいかわからない」——そう感じている方は多いのではないでしょうか。ChatGPTのチャット画面に毎回プロンプトを貼り付けるのではなく、社内ツールやWebサービスに直接AIを埋め込む方法があります。それが OpenAI API です。
この記事では、OpenAI APIの基本的な仕組みから、Pythonで最初のAIチャットボットを動かすまでをステップごとに解説します。「コードをまともに書いたことがない」という方でも、コピペで動かせる完成形のサンプルを掲載していますので、ぜひ手を動かしながら読み進めてください。

OpenAI APIとは?チャット画面と何が違うのか
OpenAI APIとは、ChatGPTが内部で使っているAIモデル(GPT-4oなど)を、プログラムから直接呼び出せるサービスです。ブラウザのチャット画面を使わず、自分のコードからAIに質問を送って回答を受け取ることができます。
チャット画面とAPIの主な違いは次のとおりです。
・チャット画面: ブラウザ上で手動操作する、1問1答の対話ツール
・API: プログラムから自動呼び出しができ、既存のシステムや業務フローに組み込める
・チャット画面: 他システムとの連携は基本的にできない
・API: Pythonコード経由でデータベース・Slack・スプレッドシートなどと組み合わせられる
APIを使えると、次のようなことが実現できます。
・社内チャットツールに組み込んだ問い合わせ対応ボット
・入力フォームのデータをもとに、AIが自動でメール文案を生成するシステム
・毎朝データを取得して自動でレポートを作成するスクリプト
OpenAI APIを使うための準備
1. OpenAIアカウントとAPIキーの取得
OpenAIの公式サイト(platform.openai.com)にアクセスし、アカウントを作成します。APIの利用にはクレジットカードの登録が必要です(執筆時点2026年10月、従量課金制)。
アカウント作成後、ダッシュボードの「API keys」メニューから新しいAPIキーを発行できます。発行されたキーは一度しか表示されないため、必ずメモ帳などに控えておいてください。
【重要】APIキーの取り扱い
APIキーは「パスワード」と同じです。コードに直接書いてGitHubへアップロードするのはセキュリティ上の重大なリスクになります。必ず環境変数や設定ファイルに別途保管し、ソースコードには含めないようにしましょう。
2. Python環境のセットアップ
Python 3.10以上がインストールされていることを確認してください。ターミナル(WindowsのコマンドプロンプトまたはMacのターミナル)で次のコマンドを実行します。
python --version # Python 3.10.x または 3.11.x 以上が表示されればOK
Pythonがインストールされていない場合は、公式サイト(python.org)からダウンロードできます。
3. openaiライブラリのインストール
PythonからOpenAI APIを呼び出すための公式ライブラリをインストールします。
pip install openai
インストールが完了したら、次のコマンドでバージョンを確認します。
pip show openai # version: 1.xx.x のように表示されればOK(2026年時点では1.x系)
最初のAIチャットボットを作る(ステップバイステップ)
1. 基本的なAPIコール
まずは最もシンプルな形で、AIに一言話しかけるコードを書いてみましょう。`chatbot.py` というファイルを作成し、以下を貼り付けます。
from openai import OpenAI # APIキーを直接書かず、環境変数から読み込む(推奨) import os client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY")) response = client.chat.completions.create( model="gpt-4o-mini", # 低コストで高性能なモデル messages=[ {"role": "user", "content": "こんにちは!AIの活用法を一言で教えてください。"}, ] ) print(response.choices[0].message.content)
実行前に環境変数を設定します(Macの場合)。
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx" python chatbot.py
Windowsの場合はコマンドプロンプトで `set OPENAI_API_KEY=sk-xxx…` と入力します。
出力例:
2. 会話を続けるためのメッセージ管理
チャットボットとして機能させるには、「前の会話を記憶した状態」で次の返答を生成する必要があります。OpenAI APIはセッションをまたいで記憶を持たないため、会話の履歴を messages リスト に積み上げていく形で実装します。
from openai import OpenAI import os client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY")) # 会話履歴を保持するリスト conversation_history = [] def chat(user_message): conversation_history.append({ "role": "user", "content": user_message }) response = client.chat.completions.create( model="gpt-4o-mini", messages=conversation_history ) assistant_message = response.choices[0].message.content conversation_history.append({ "role": "assistant", "content": assistant_message }) return assistant_message # 対話ループ print("AIチャットボットを起動しました。'終了'と入力すると終了します。") while True: user_input = input("あなた: ") if user_input == "終了": break reply = chat(user_input) print(f"AI: {reply}\n")
3. システムプロンプトで動作をカスタマイズする
AIの「キャラクター」や「役割」を固定したい場合は、システムプロンプト(role: “system”)を使います。これが社内チャットボットの作り込みにとって最も重要なポイントです。
from openai import OpenAI import os client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY")) # システムプロンプトで役割を設定 system_prompt = """ あなたは中小企業向けのAI活用アドバイザーです。 以下のルールを守ってください: - 回答は必ず200文字以内にまとめる - 専門用語は使わず、平易な言葉で説明する - 具体的な次のアクションを1つ提示する """ def chat_with_system(user_message, history): messages = [{"role": "system", "content": system_prompt}] + history messages.append({"role": "user", "content": user_message}) response = client.chat.completions.create( model="gpt-4o-mini", messages=messages, max_tokens=300, # 最大出力トークン数 temperature=0.7 # 創造性のレベル(0~2) ) return response.choices[0].message.content # テスト実行 history = [] reply = chat_with_system("業務改善にAIをどう使えばいいですか?", history) print(reply)
システムプロンプトの書き方については、システムプロンプトの書き方|ChatGPT・Claudeで使えるテンプレートと設計のコツで詳しく解説しています。
主要パラメータの意味と使い分け
APIコールで指定できる主なパラメータをまとめます。
| パラメータ | 役割 | 推奨設定 |
|---|---|---|
| model | 使用するAIモデル | コスト重視→gpt-4o-mini、品質重視→gpt-4o |
| temperature | 出力の多様性・創造性(0~2) | 定型文:0.3、文章生成:0.7、ブレスト:1.2 |
| max_tokens | 最大出力トークン数 | 短文:150~300、長文:1000~4000 |
| messages | 会話履歴(system/user/assistantの配列) | 最新N件に絞ってコスト節約 |
モデル選びで迷ったときは、AIコードエディタ比較の記事でも触れているように「まず安価なモデルで試す→品質が足りなければ上位モデルに切り替える」というアプローチが現実的です。
実務での活用例(想定例)
以下は架空の想定例です。実在の企業・人物・実測数値ではありません。
【想定例】問い合わせメール自動返信の下書きシステム
Before: 担当者が受信した問い合わせメールを読み、返信文を毎回ゼロから作成。1件につき15~20分かかっていた。
After(想定例): 問い合わせ内容をAPIに送り、返信下書きを自動生成。担当者は確認・修正するだけになり、作業時間が大幅に短縮できる可能性がある。
実装の概要イメージ(想定例)
def generate_reply_draft(inquiry_text): system = """ あなたは丁寧なビジネスメール担当者です。 問い合わせ内容に対して、礼儀正しい返信の下書きを作成してください。 署名は「株式会社〇〇 担当:△△」と入れてください。 """ response = client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": system}, {"role": "user", "content": f"以下の問い合わせへの返信を作成してください:\n\n{inquiry_text}"} ], temperature=0.4 # 定型文なので低めに設定 ) return response.choices[0].message.content
このように、APIを使えば「受信メールの本文を読み込む→AIで下書きを生成→担当者に提示」というフローをコードで自動化できます。
うまくいかない時の対処法
エラー: AuthenticationError
APIキーが正しく設定されていない場合に発生します。環境変数が正しく設定されているか確認してください。
# 環境変数の確認(Macの場合) echo $OPENAI_API_KEY # sk-xxx... と表示されればOK(空白の場合は設定されていない)
エラー: RateLimitError
APIの利用制限(Rate Limit)に達した場合です。アカウントの使用量上限を確認し、必要であれば上限を引き上げるか、リクエスト間に待機時間を設けます。
回答の品質が期待と違う
よくあるつまずきとして、システムプロンプトが曖昧すぎるケースがあります。「箇条書きで3点にまとめる」「200文字以内」「専門用語は使わない」など、出力のフォーマットや制約を具体的に指定すると改善することが多いです。
制約付きプロンプトの書き方の記事で、出力品質を安定させるテクニックを詳しく紹介しています。
コストが想定より高い
会話履歴を全件送り続けるとトークン数が膨らみ、コストが上がります。一般的な対策として、履歴を直近N件(例:10件)に絞る、または要約してから渡す方法があります。

本記事のまとめ
OpenAI APIを使えるようになると、AIをただ「使う」だけでなく、自分のビジネスに「組み込む」段階に進めます。
・OpenAI APIはプログラムからAIモデルを呼び出すサービスで、チャット画面の操作を自動化・システム化できる
・Pythonとopenaiライブラリを使えば、20~30行のコードで最初のチャットボットが動く
・システムプロンプトでAIの役割・ルール・出力形式を固定することで、安定した品質を保てる
・temperatureやmax_tokensなどのパラメータを使い分けることで、用途に応じた最適化ができる
「まずは動くものを作る→少しずつ改善する」というサイクルが、APIを使いこなすための最短ルートです。他のAIコーディングツールとの組み合わせ方についてはAIコードエディタ比較|Cursor・Windsurf・Claude Codeの違いと業務別の選び方も参考にしてください。
PR
OpenAI APIをはじめとするLLMの仕組みをゼロから丁寧に解説した一冊。APIの構造やトークン管理の考え方を理解するうえで、実装前に読んでおくと理解の深さが変わります。
