OpenAI Vision API を使った画像分析


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>';
	}
}
?>

出力結果

この画像は、フォーマルなセッティングの食卓を映しています。中央には、クリーミーなスープが入った深皿が置かれており、その上にはクルトンと見られるトーストされたパンが乗せられています。スープはおそらく何かのハーブが加えられており、緑色であることから、そのように見受けられます。 テーブルには、両サイドに銀色のナイフとスプーンが、またスープの皿の前にはフォークがセットされています。各カトラリーは光沢があり、清潔に整えられています。食器は模様が描かれた装飾的な縁取りが特徴的で、赤と金色の配色がフォーマルな雰囲気を醸し出しています。 背景にぼんやり見える他の皿には、スープ皿とは異なる料理が盛られているようですが、詳細ははっきりしません。左側の小皿にはバターのようなものが乗せられており、テーブルの上にはグラス類も複数セットされています。テーブルの上の紙には何か文字が書かれていますが、こちらも内容は判別できません。 全体を通して、この食事環境は高級レストランや特別なイベントでのディナーシーンを連想させ、緻密に配されたテーブルウェアがエレガントな食事体験を予感させます。


関連記事:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください