はじめてのOpenAI API入門:Pythonで文章生成アプリを作ろう
※本記事はChatGPTによって作成されています。内容には自動生成による情報が含まれており、正確性・網羅性を保証するものではありません。
1. はじめに
本記事では、実際にOpenAI APIを活用して簡単なテキスト生成アプリケーションを構築する方法を解説します。APIキーの取得から環境設定、基本的なAPI呼び出しの方法まで、実践的な手順を丁寧に説明します。
LLMを用いた開発に初めて取り組むエンジニアでも、この記事を通じて「最初の一歩」をスムーズに踏み出せることを目指しています。
2. OpenAI APIの概要
OpenAIは、GPT-4やGPT-3.5などの大規模言語モデルを、REST APIを通じて利用できるサービスを提供しています。これにより、ブラウザ上のChatGPTと同様のモデルを、任意のアプリケーションやサービスに組み込むことが可能です。
主要なエンドポイントとしては以下があります:
-
chat/completions
:GPT-4/GPT-3.5に対するチャット形式のプロンプト送信と応答生成 -
completions
:従来のGPT-3向けのテキスト補完 -
embeddings
:テキストの意味的なベクトル変換 -
moderations
:不適切コンテンツの検出
公式ドキュメントにはAPIの詳細やサンプルコードが豊富に掲載されているので、実装前には一度目を通すことをおすすめします。
3. APIキーの取得と環境設定
OpenAIの設定
APIキーの取得
まず、OpenAIの公式サイトでアカウントを作成し、APIキーを取得します。ダッシュボードのAPI Keysセクションから新しいキーを生成できます。
⚠️ APIキーは個人の秘密鍵のようなものです。コードに直接書かず、環境変数などで安全に管理しましょう。
課金設定
APIの利用にはクレジットの課金が必要です。
OpenAIのBillingから任意の額をクレジットを購入してください。
Pythonでの準備
以下の手順でPython環境を構築します。
- 必要なパッケージをインストール:
PythonからAPIを呼び出すには、openai
ライブラリをインストールします。
ここでは、.envファイルからAPIキーを読み込むために python-dotenv
というライブラリも合わせてインストールします。
pip install openai python-dotenv
-
.env
ファイルを作成:
.env
ファイルを作成します。生成したAPIキーを設定してください。
OPENAI_API_KEY=sk-xxxxxxx...
- スクリプトでキーを読み込む:
from openai import OpenAI
from dotenv import load_dotenv
import os
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
これで、Pythonスクリプトから安全にAPIキーを利用する準備が整いました。
4. 基本的なAPI呼び出しとテキスト生成
OpenAIのAPIを使って、まずは最も基本的な「テキスト生成」を体験してみましょう。これはLLMを使った最もシンプルで強力な使い方であり、チャットボット、文書要約、アイデア生成など、あらゆる応用の出発点になります。
ChatCompletion API の基本
GPT-4oなどのチャットモデルを使うには、openai.ChatCompletion.create()
関数を使います。
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "あなたは親切なアシスタントです。"},
{"role": "user", "content": "東京のおすすめ観光地を教えてください。"}
],
temperature=0.7
)
# 出力されたテキストは response.choices[0].message.content に含まれます。
print(response.choices[0].message.content)
-
model
: 使用するモデル(gpt-3.5-turbo, gpt-4oなど) -
messages
: システム指示とユーザー発言の履歴 -
temperature
: 出力の多様性を制御(0で安定、1以上で創造的)
メッセージの設計
Chat APIでは、messages
に複数の発話を順番に渡す形式になっています。
-
system
: モデルの前提やキャラ設定(初期プロンプト) -
user
: ユーザーの質問や指示 -
assistant
: モデルの過去の応答(文脈保持用)
例:
messages=[
{"role": "system", "content": "あなたは英語教師です。"},
{"role": "user", "content": "Please translate: 私は学生です。"},
{"role": "assistant", "content": "I am a student."},
{"role": "user", "content": "次の文も翻訳してください:先生は優しいです。"}
]
このように履歴を渡すことで、文脈を踏まえた自然な応答が得られます。
返ってくるレスポンス
レスポンスの中で注目すべきは、以下の部分です:
response["choices"][0]["message"]["content"]
ここに生成されたテキストが格納されています。他にも usage
に含まれる prompt_tokens
や completion_tokens
を見ると、トークン消費量も確認できます。
コストに関する注意点
OpenAI APIはトークン数に応じて課金されます。
- 入力(プロンプト)と出力の合計トークンが課金対象
- モデルに応じて費用単価は異なる
- 長文のやり取りや高頻度のAPI呼び出しには注意が必要
試験運用では単価の低いモデルを使い、応答トークン数を制限する max_tokens
の設定を活用するとコストを抑えられます。
まとめ
この記事では、OpenAI APIを使ってLLMを活用するための基本的な手順を紹介しました。
- OpenAI APIの仕組みと利用方法
- APIキーの取得と安全な管理
- ChatCompletion APIによるテキスト生成の基本構文
- メッセージ形式とシステムプロンプトの活用
- コストを意識したトークン管理のポイント
Discussion