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 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 から始めて、精度が足りなければ上位モデルに切り替えるのが経済的。
エラー処理の例の 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 に修正 |
| 例外 | 起きるとき | 確かめた結果 |
|---|---|---|
| ErrorException | API がエラーを返した(キーの誤り・モデル名の誤り・上限) | 無効なキーで status 401 |
| TransporterException | 通信できない(タイムアウト・DNS) | 今回は試していない |
モデルの名前と料金は変わるので、使う前に OpenAI の公式のモデル一覧で確かめてください(記事のモデル名は 2026年4月時点のものです)。
まとめ
composerで入れて3行書けば動く。PHPとの親和性は良好なので、既存のLaravel/Symfonyプロジェクトへの組み込みも難しくない。APIキーの管理(.envに書いてgitignore)だけ最初から意識しておくこと。