ChatGPT APIをPHPから使う最小サンプルコード

OpenAI APIをPHPから使う場面は思った以上に多い。簡単な要約ツール、チャットボット、コード補完ヘルパーなど、PHPバックエンドにサクッと組み込みたい時のために、最小限のサンプルコードをまとめた。

APIキーの取得

platform.openai.com にログインし、「API keys」からキーを生成する。キーは sk-... の形式。生成直後しか表示されないのでコピーしておく。

課金はデフォルトでpay-as-you-go。最初の数ドルは無料クレジットがある。

ComposerでSDKをインストール

composer require openai-php/client

公式PHPクライアント。メンテナンスが活発でLaravelとの親和性も高い。

最小サンプルコード

<?php

require 'vendor/autoload.php';

$client = OpenAI::client(getenv('OPENAI_API_KEY'));

$response = $client->chat()->create([
    'model'    => 'gpt-4o-mini',
    'messages' => [
        ['role' => 'user', 'content' => 'PHPの配列とリストの違いを3行で説明してください'],
    ],
]);

echo $response->choices[0]->message->content;

OPENAI_API_KEY は環境変数から読み込む。コードに直書きしない(うっかりgit pushするリスクがある)。

エラーハンドリング

APIが503を返すことや、レートリミットに引っかかることがある。最低限のtry-catchは入れておく。

<?php

use OpenAIExceptionsErrorException;
use OpenAIExceptionsTransporterException;

try {
    $response = $client->chat()->create([...]);
    echo $response->choices[0]->message->content;
} catch (ErrorException $e) {
    // APIエラー(無効なキー、モデル名ミスなど)
    error_log('OpenAI API error: ' . $e->getMessage());
    echo 'APIエラーが発生しました。';
} catch (TransporterException $e) {
    // ネットワークエラー、タイムアウトなど
    error_log('OpenAI transport error: ' . $e->getMessage());
    echo '通信エラーが発生しました。しばらく待ってから再試行してください。';
}

モデルの選び方

  • gpt-4o-mini: コスト最安。簡単なタスクならこれで十分
  • gpt-4o: 精度重視。コードレビューや複雑な推論に
  • gpt-4-turbo: 大きなコンテキスト(128k tokens)が必要な時

手軽に試すなら gpt-4o-mini から始めて、精度が足りなければ上位モデルに切り替えるのが経済的。

まとめ

composerで入れて3行書けば動く。PHPとの親和性は良好なので、既存のLaravel/Symfonyプロジェクトへの組み込みも難しくない。APIキーの管理(.envに書いてgitignore)だけ最初から意識しておくこと。

読んで頂いて有り難うございます!