2023年11月に開催された Open AI の DevDay Conference では多くのAI関連の機能、サービスが発表されました。その中で、GPT-4 Turbo with vision についても発表があり、実際にAPIが利用できるようになりました。
GPT-4 Turbo with vision は、Open AI へプロンプトを送信する際、従来のテキストに加え、画像が送信できるようになりました。
送信側で以下のように配列をJSON形式に変換し、PHP側でJSONをデコードし、API に送信しております。
APIに送信するJSONの中身
// messages の中身
[
{
'role' => 'user',
'content' => [
['type' => 'text', 'text' => 'この画像を説明してください。'],
[
'type' => 'image_url',
'image_url' => 'https://upload.wikimedia.org/wikipedia/commons/4/44/Cuisine_Trois_%C3%A9toiles.jpg',
],
]
},
]
使用する画像
サンプルコード
<?php
//
// OpenAI のアカウントを作成 ( https://beta.openai.com/signup )
// API Key を取得 ( https://beta.openai.com/account/api-keys )
//
$API_KEY = 'API Key';
$header = [
'Authorization: Bearer '.$API_KEY,
'Content-type: application/json',
];
$messages = json_decode($_POST['messages'], true);
$params = json_encode([
'model' => 'gpt-4-vision-preview',
'messages' => $messages,
]);
$curl = curl_init('https://api.openai.com/v1/chat/completions');
$options = [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER =>$header,
CURLOPT_POSTFIELDS => $params,
CURLOPT_RETURNTRANSFER => true,
];
curl_setopt_array($curl, $options);
$response = curl_exec($curl);
$httpcode = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
if(200 == $httpcode)
{
$json_array = json_decode($response, true);
$choices = $json_array['choices'];
foreach($choices as $c)
{
echo $c['message']['content'].'<br>';
}
}
?>
出力結果
この画像は、フォーマルなセッティングの食卓を映しています。中央には、クリーミーなスープが入った深皿が置かれており、その上にはクルトンと見られるトーストされたパンが乗せられています。スープはおそらく何かのハーブが加えられており、緑色であることから、そのように見受けられます。 テーブルには、両サイドに銀色のナイフとスプーンが、またスープの皿の前にはフォークがセットされています。各カトラリーは光沢があり、清潔に整えられています。食器は模様が描かれた装飾的な縁取りが特徴的で、赤と金色の配色がフォーマルな雰囲気を醸し出しています。 背景にぼんやり見える他の皿には、スープ皿とは異なる料理が盛られているようですが、詳細ははっきりしません。左側の小皿にはバターのようなものが乗せられており、テーブルの上にはグラス類も複数セットされています。テーブルの上の紙には何か文字が書かれていますが、こちらも内容は判別できません。 全体を通して、この食事環境は高級レストランや特別なイベントでのディナーシーンを連想させ、緻密に配されたテーブルウェアがエレガントな食事体験を予感させます。