先月、OpenAIから対話型AI、ChatGPT(https://chat.openai.com/chat)がリリースされ、その完成度と汎用性の高さから各所で話題となっています。2020年頃からGPT-3をベースとしたサービスが度々リリースされ、話題となってきましたが、これらはあくまでも特定の機能を支援するものに留まっておりました。またそれ以前から対話型AIも存在しましたが、それらは定型的な質問に答えたり、キーワードを抽出して検索結果を出力するに留まっていました。しかしChatGPTでは、多少あいまいな質問でも、文脈やこちらの意図を理解し、正直、恐怖心を感じるほど自然で的確な回答が出力され、私もその完成度の高さにとても驚いています。最近は Google ではなく、ChatGPT で調べ物や問題解決をすることが増えてきました。他にも様々なことに応用することができるものと考えられます。
現在、ChatGPT の API は公開されておりませんが、Open AI から GPT-3 のAPIが公開されており、簡単な登録で利用できるようになっていたため、APIを利用するまでの手順を簡単にまとめてみました。
OpenAI にてAPI Key を発行
- OpenAIの以下のページにアクセスし、右上の「Sign up」をクリックします。
https://beta.openai.com/signup - 新規アカウントを作成し、ログインします。
Google アカウントがあれば簡単に登録可能です。 - ORGANIZATION メニューから、[API Keys] を選択し、「Create new secret key」ボタンをクリックします。
4. 発行された API Key をコピーします。
※ このAPI Key は後から確認することができないため、必ずどこかに保存しておく必要があります。
サンプルコードの実行
以下のコードは、HTMLフォームからPOSTされた質問を Open AI API に送信し、回答を出力するPHPのサンプルコードです。 $API_KEY にOpen AI のサイトで発行した API Key を設定します。
<?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',
];
//$question = 'ChatGPTについて教えてください。';
$question = $_POST['question'];
$params = json_encode([
'prompt' => $question,
'model' => 'text-davinci-003',
'temperature' => floatval($_POST['temperature']),
'max_tokens' => floatval($_POST['max_tokens']),
'top_p' => floatval($_POST['top_p']),
'frequency_penalty' => floatval($_POST['frequency_penalty']),
'presence_penalty' => floatval($_POST['presence_penalty'])
]);
$curl = curl_init('https://api.openai.com/v1/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['text'].'<br>';
}
}
?>
API に送信するパラメータの内容は以下の通りです。
model | 使用する言語モデル。 GPT-3 を使用する場合は「text-davinci-003」 を指定。 |
prompt | 質問内容。 |
temperature | 生成するトークンをサンプリングする確率、ランダム性。 デフォルト値:1.0 |
max_tokens | トークン数の上限。 1024 |
top_p | Top-p サンプリング、多様性。 デフォルト値:1.0 |
frequency_penalty | 頻出ペナルティ、高いほど同じ話題を繰り返さなくなる。 デフォルト値:0 |
presence_penalty | プレゼンスペナルティ、高いほど新しいトピックが出現しやすくなる。 デフォルト値:0 |
詳細には以下のOpenAI社のドキュメントを参照してください。
Open AI API reference – Completions
https://platform.openai.com/docs/api-reference/completions
実際にデモページを作成いたしました。予算の上限に達したら停止します。履歴等は取っていません。
OpenAI API(GPT-3)との対話
https://labs.irohasoft.com/openai/
API の課金状況については[Usage]にて、後からリアルタイムに確認することが可能です。
登録後、18ドル分の利用枠が無料で割り当てられます。