OpenAI社は、OpenAI APIというAPIを提供しています。最近人気のChatGPTをはじめとするAIサービスを利用できるAPIです。うまく活用すれば、AIを使った独自サービスが作れます。今回は、OpenAI APIの概要と使い方について解説いたします。
OpenAI APIの活用事例については別記事で解説しております。こちらもあわせてご覧ください。
https://soune.co.jp/chatgpt-api-whisper-api/
OpenAI APIとは
「OpenAI API」は、ChatGPTなどを実行できるAPIです。
APIなので、プログラミング言語を問わずに利用できることが特徴です。
基本的には、質問を投げると返答が返ってくるだけのシンプルな機能のAPIです。
使い方も簡単なので、ぜひマスターしましょう。
今記事で扱うのは「OpenAI API」となります。それとは別に「ChatGPT API」も存在します。
利用料金について
OpenAI APIの利用には料金がかかります。
「トークン」という単位で料金が計算されます。
英語の場合、1単語あたりだいたい1トークンになりますが、日本語の場合、文字の種類によって1~3トークンで変動します。
法則性は分かりませんが、漢字よりひらがなの方がトークン数が少なくなる傾向があります。
日本語は、英語と比較して1文字あたりの情報量が多いと言われています。
そう考えると、日本語の料金が高いとは一概に言えないかもしれません。
送信・受信する文章のトークン数と、後述のモデルごとに決められている単価をもとに、実際の利用金額が計算されます。
公式サイトに、トークン数が計測できるページが用意されています。
試しにいろんな文章を入力してみましょう。
https://platform.openai.com/tokenizer
ひとつのアカウントにつき、無料で18ドル分使うことができます。
技術検証や開発時に活用しましょう。
モデルについて
OpenAI APIを利用するにあたり、「モデル」を指定する必要があります。
機能が向上していたり、実行にかかるコスト、AIの訓練に利用されたデータが異なるなどの違いがあります。
公式サイトに利用できるモデルが掲載されています。
新しいモデルが公開されることもあるので、ぜひ確認しましょう。
https://platform.openai.com/docs/models
例えばGPT-3.5のモデルでも、「gpt-3.5-turbo」「text-davinci-003」など、複数のモデルが用意されています。
他にも、音声の文字起こしが可能な「Whisper」、画像生成AI「DALL·E」なども利用可能です。
モデルによって、APIのURLや使い方が異なります。
公式サイトに掲載されていますので、API利用前に一度確認しましょう。
https://platform.openai.com/docs/models/model-endpoint-compatibility
APIキーの取得
APIの利用には、APIキーが必要です。
OpenAIの公式サイトから取得しましょう。
まずは下記URLから、OpenAIのサイトにログインします。
https://chat.openai.com/auth/login
まだアカウントがなければ、上記URLの「Sign up」からアカウントを新規作成しましょう。
メールアドレスだけで作成できます。
右上のアカウント部分をクリック→「View API keys」→「Create new secret key」ボタンを押すと、APIキーが作成されます。
こちらのURLからでも、APIキー作成ページを開けます。
https://platform.openai.com/account/api-keys
取得したAPIキーは再表示できません。
ブラウザを閉じる前に忘れずメモをとりましょう。
もし忘れてしまった場合は、新しいAPIキーを再発行しましょう。
PHPからAPIを使う
サンプルコード
今記事では例として、OpenAI APIをPHPから実行してみるコードを元に説明いたします。
PHPから実行する場合は、cURLを使うことになります。
例として、モデル「gpt-3.5-turbo」を使用する際のコードを記載します。
「sk-APIKEY」の部分に、先ほど取得したAPIキーを設定しましょう。
$apikey = "sk-APIKEY";
$url = "https://api.openai.com/v1/chat/completions";
// リクエストヘッダー
$headers = array(
'Content-Type: application/json',
'Authorization: Bearer ' . $apikey
);
// リクエストボディ
$data = array(
'model' => 'gpt-3.5-turbo',
'messages' => [
["role" => "system", "content" => "関西弁で話して"],
['role' => 'user', 'content' => "ここに質問文を書きます")],
],
'max_tokens' => 500,
);
// cURLを使用してAPIにリクエストを送信
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);
// 結果をデコード
$result = json_decode($response, true);
$result_message = $result["choices"][0]["message"]["content"];
// 結果を出力
echo $result_message;
messages
ChatGPTに送信したいメッセージは、$data内の’messages’に設定します。
上記ソースコードで「ここに質問文を書きます」とある箇所です。
‘messages’は、「‘role’」と「‘content’」からなります。
「‘content’」は、メッセージ本文を入れます。
「‘role’」は、このメッセージがどのような扱いなのかを指定します。
role名 | 概要 |
user | ユーザーから送信されたメッセージ(プロンプト)として扱われます。 AIに質問・教育したいときなどに使用します。 |
assistant | AIから送信されたメッセージとして扱われます。 やり取りの前提条件を指定したいときなどに使用します。 |
system | AIの受け答え方などを指定できます。 例えば、上記サンプルコードのように「関西弁で答えて」と指定すると、関西弁で返答してくれるようになります。 |
APIの結果
APIの結果は、JSON形式で返ってきます。
下記に、実際に返ってくるJSONの例を挙げます。
{
"id": "chatcmpl-AAAAAAAAAAAAAAAAAA",
"object": "chat.completion",
"created": 1681289477,
"model": "gpt-3.5-turbo-0301",
"usage": {
"prompt_tokens": 87,
"completion_tokens": 312,
"total_tokens": 399
},
"choices": [
{
"message": {
"role": "assistant",
"content": "ここにAIからの返答が入ります"
},
"finish_reason": "stop",
"index": 0
}
]
}
ChatGPTからの返答文は”content”に入っています。
普通のテキストとして入っていますので、取り出して自由に使えます。
上記サンプルコードでは、結果をjson_decode()でデコードした後、返答文を取り出しています。
他に確認すべき内容としては、“finish_reason”があります。
これに“stop”が入っていると、質問に対する返答が最後まで完了したことを表します。
“length”が入っていると、返答が長すぎるため途中で終わってしまったことを表します。
この場合、max_tokensを増やしましょう。
API実行時に渡すデータの中にある”max_tokens”の値を増やしましょう。
ここまでの内容をマスターすれば、PHPで動作しているWordPress製サイトでもOpenAI APIを使えます。
まとめ
今記事では、PHPでの実行を例にご紹介しました。
APIなので、ほぼ全てのプログラミング言語でも利用できます。
プログラミング言語によってAPIの利用方法は変わります。
例えばpythonではOpen AI API用モジュールが用意されています。ぜひ活用しましょう。
使い方をマスターして、自分だけの独自サービスの制作などに役立てましょう。
余談ですが、今記事のサンプルコードはChatGPTに作ってもらい、私が修正・動作確認した上で掲載しています。
ChatGPTのことはChatGPTに聞いてみるのもよいかもしれません。