OpenAI API 実践例:Chat Completions API で JSON形式レスポンスを取得する方法
作成日:2025.06.04
OpenAI API の Chat Completions API を用いて、レスポンス形式を JSON に固定する実装手法を紹介します。PHP を使った具体的なコード例を通じ、response_format パラメータの設定方法や利用シーン、最新モデルでのオプション利用まで解説しています。
OpenAI の Chat Completions API では、レスポンスの形式を JSON に固定することができます。
APIへのリクエストで、response_format
パラメータを指定することで、レスポンスを JSON形式 に設定できます。
PHP での実装例
以下は、PHP で OpenAI の Chat Completions API を使って、レスポンスを JSON形式 に固定するコードの例です。
$openai_key = 'sk-proj--1234567890abcdefg';
$data = array(
'model' => 'gpt-4o-mini',
'messages' => $prompts,
'temperature' => 1.0,
'response_format' => ['type' => 'json_object'],
);
$json_data = json_encode($data);
$url = 'https://api.openai.com/v1/chat/completions';
$headers = array(
'Content-Type: application/json',
"Authorization: Bearer ".$openai_key
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);
$response = curl_exec($ch);
if($response === false){
echo 'Curl error: ' . curl_error($ch);
exit;
}
curl_close($ch);
$apiresult = json_decode($response);
return json_decode($apiresult->choices[0]->message->content);
このコードでは、response_format
パラメータに ['type' => 'json_object']
を指定しています。これにより、APIのレスポンスが JSON形式 に固定されます。
そもそものAPIのレスポンス全体がJSON形式で返ってくる上に、その中のAIによる生成結果も二重でJSON形式で返ってくるので、json_decode
を二回使って、最終的な結果を取得しています。
プロンプトの例
API に投げるプロンプトの一例。
日本のレコード会社の商品情報データベースの表示確認のために、架空の商品情報のテストデータを作成してください。
# 出力形式
JSON形式で以下のデータを出力してください。
- `title`: 商品タイトル
- `artist`: アーティスト名
- `release_date`: リリース日(YYYY-MM-DD形式)
- `genre`: ジャンル
- `price`: 価格(整数)
- `label`: レーベル名
- `description`: 商品説明
# 出力例
```json
{
"title": "夏の光線",
"artist": "青空アンサンブル",
"release_date": "2025-07-15",
"genre": "J-POP",
"price": 3300,
"label": "サンシャインミュージック",
"description": "注目の新人バンド・青空アンサンブルの待望のデビューアルバム。夏をテーマにした爽やかなメロディと心に響く歌詞が特徴の全12曲を収録。"
}
```
こんな感じで、システムの表示確認のために「それっぽい」テストデータを量産したい時とかに重宝します。
注意点
今回は response_format
パラメータに ['type' => 'json_object']
を指定する方法を紹介しましたが、新しめのモデルでは、['type' => 'json_schema']
を指定することもできます。これにより、より厳密な JSON スキーマに基づいたレスポンスが得られます。
詳しくはStructured Outputs - OpenAI API を参照。

奈良市を拠点に、26年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。
これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。
【制作会社・企業様向けサポート】
Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。
ぜひ、プロフィールやWeb制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
PHPによる OpenAI TTS API 実装ガイド ― GPT-4o mini TTSでテキストを音声に変換
2025.04.05
本記事では、最新の OpenAI TTS モデル「GPT-4o mini TTS」を利用し、PHPでテキストを自然な音声に変換する実装手法を詳しく解説します。curl を用いたリクエスト送信、JSON形式のパラメータ設定、ファイル出力処理まで、実際のサンプルコードを交えながら、各工程のポイントとパラメータの意味について解説。
PHPで実装する Response API と Function Calling を活用したチャットボットの開発ガイド
2025.03.24
PHPでOpenAIのResponse APIとFunction Calling機能を活用し、チャットボットにタスク管理機能を実装する方法を解説します。モデルとの再帰的な対話処理や、独自関数によるタスク登録・照会など、具体的なコード例を通して段階的に解説します。
Response APIのFile Search機能をPHPで実装:ファイルから情報を取得できるチャットボットの作り方
2025.03.18
OpenAIのResponse APIに新しく追加されたFile Search機能を使って、ファイルから情報を取得できるチャットボットをPHPで実装する方法を解説します。Vector Storeの作成から、実際のコード例まで、ステップバイステップで説明していきます。
Response APIのWeb Search機能をPHPで実装:最新情報を取得できるチャットボットの作り方
2025.03.17
Response APIの新機能"Web Search"を使って、インターネット上の最新情報を取得できるチャットボットを作ります。PHPによる実装方法や、APIレスポンスの処理方法など、実用的な内容をコード例とともに解説していきます