AI・機械学習

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

ChatGPT APIをPHPから使う最小サンプルコード
目次
  1. APIキーの取得
  2. ComposerでSDKをインストール
  3. 最小サンプルコード
  4. エラーハンドリング
  5. モデルの選び方
  6. まとめ

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 OpenAI\Exceptions\ErrorException;
use OpenAI\Exceptions\TransporterException;

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 から始めて、精度が足りなければ上位モデルに切り替えるのが経済的。

2026年11月時点の補足:SDK を入れてエラー処理を確かめた結果

エラー処理の例の use の行は、名前空間の区切りの \ が抜けていて、そのままでは例外を捕まえられませんでした(直しました)。2026年11月5日に、手元の PHP 8.5.8 で SDK を入れ直して確かめています。

$ composer require openai-php/client guzzlehttp/guzzle
Using version ^0.22.0 for openai-php/client
Using version ^8.3 for guzzlehttp/guzzle

入った版は openai-php/client v0.22.0(2026年10月31日公開)で、PHP 8.2 以上が要ります。HTTP の通信には Guzzle などの HTTP クライアントを一緒に入れます。

わざと無効な API キーで 1回呼ぶと、記事の ErrorException で捕まえられました(認証で断られるので料金は 0円です)。

OpenAI\Exceptions\ErrorException
status: 401
Incorrect API key provided: sk-inval***********test. You can find your API key at https://platform.openai.com/account/api-keys.
項目この記事(2026年4月)2026年11月時点
openai-php/client版の記載なしv0.22.0(PHP 8.2 以上)
HTTP クライアント記載なしguzzlehttp/guzzle 8.3.1 などを一緒に入れる
use の行\ が抜けていたOpenAI\Exceptions\ErrorException に修正
例外起きるとき確かめた結果
ErrorExceptionAPI がエラーを返した(キーの誤り・モデル名の誤り・上限)無効なキーで status 401
TransporterException通信できない(タイムアウト・DNS)今回は試していない

モデルの名前と料金は変わるので、使う前に OpenAI の公式のモデル一覧で確かめてください(記事のモデル名は 2026年4月時点のものです)。

まとめ

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