📘

はじめての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の詳細やサンプルコードが豊富に掲載されているので、実装前には一度目を通すことをおすすめします。

➡️ OpenAI API ドキュメント

3. APIキーの取得と環境設定

OpenAIの設定

APIキーの取得

まず、OpenAIの公式サイトでアカウントを作成し、APIキーを取得します。ダッシュボードのAPI Keysセクションから新しいキーを生成できます。

⚠️ APIキーは個人の秘密鍵のようなものです。コードに直接書かず、環境変数などで安全に管理しましょう。

課金設定

APIの利用にはクレジットの課金が必要です。

OpenAIのBillingから任意の額をクレジットを購入してください。

Pythonでの準備

以下の手順でPython環境を構築します。

  1. 必要なパッケージをインストール:

PythonからAPIを呼び出すには、openaiライブラリをインストールします。
ここでは、.envファイルからAPIキーを読み込むために python-dotenv というライブラリも合わせてインストールします。

pip install openai python-dotenv
  1. .envファイルを作成:

.envファイルを作成します。生成したAPIキーを設定してください。

OPENAI_API_KEY=sk-xxxxxxx...
  1. スクリプトでキーを読み込む:
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_tokenscompletion_tokens を見ると、トークン消費量も確認できます。

コストに関する注意点

OpenAI APIはトークン数に応じて課金されます。

  • 入力(プロンプト)と出力の合計トークンが課金対象
  • モデルに応じて費用単価は異なる
  • 長文のやり取りや高頻度のAPI呼び出しには注意が必要

試験運用では単価の低いモデルを使い、応答トークン数を制限する max_tokens の設定を活用するとコストを抑えられます。

まとめ

この記事では、OpenAI APIを使ってLLMを活用するための基本的な手順を紹介しました。

  • OpenAI APIの仕組みと利用方法
  • APIキーの取得と安全な管理
  • ChatCompletion APIによるテキスト生成の基本構文
  • メッセージ形式とシステムプロンプトの活用
  • コストを意識したトークン管理のポイント

Discussion