OpenAI APIとは?使い方を実際の手順を紹介しながら解説
AIの進化は我々の日常生活に大きな影響を与えています。いろんなサービスで提供されるAPIの中でも、OpenAIのAPIは新たな可能性を切り開き、驚くべきアプリケーションが生み出されています。
前回、バリュードメインAPIでAPI連携を紹介しましたが、本記事では、OpenAIのAPIのGPT-3.5モデルを利用して、具体的な手順を通じて実際にAPIを使用する方法を紹介します。
OpenAI APIとは
OpenAI APIは、OpenAIが提供する人工知能のAPI(Application Programming Interface)です。
APIは、プログラムやアプリケーションが外部のサービスとやり取りするためのインターフェースで、OpenAI APIは、テキスト生成や自然言語処理のタスクを行うためのツールセットがユーザに提供されています。
OpenAI APIは、GPT(Generative Pre-trained Transformer)というモデルを基にしており、その最新バージョンはGPT-4です。現在、GPT-4を利用する場合は「ChatGPT Plus」に登録する必要があります。GPT-4にアクセスできない場合は、ウェイティングリストへの登録が必要です。GPT-3.5が一般に利用可能です。
GPT-3.5および4は、大規模なトレーニングデータセットを使用して学習された言語モデルであり、テキスト生成、文章の要約、質問応答などの多様な自然言語処理タスクをこなすことができます。
ユーザはOpenAI APIを使用して、自分のアプリケーションやサービスに高度な自然言語処理機能を統合することができます。
例えば、チャットボットの開発、文章生成、翻訳、文章の分類などのタスクをOpenAI APIを利用して実現することが可能です。利用にはAPIキーが必要であり、利用料金が発生する場合があります。
OpenAIは利用ポリシーや価格体系を変更することがあります。また、サービスのアップデートや新しいモデルの導入が頻繁に行われるので、最新の情報を得るには公式ウェブサイトやドキュメンテーション及びリファレンスを確認することをおすすめします。
APIについて詳しく知りたい方は、「SAMURAI ENGINEER Blog」が公開している「APIとは?意味や仕組み、活用するメリットもわかりやすく解説」を参考にしてください。
OpenAIのAPIサービスの種類
OpenAIのAPIサービスの種類は下記の6つが利用できます。GPT-3.5モデルでは主にテキスト生成に特化しています。「GPT best paractices」はGTP-4でのみ機能します。
・GPT(文章生成、コード生成)
・GPT best paractices(高性能モデル)
・Speech to text(音声テキスト化)
・Embedding(数字変換)
・Image Generation(画像生成)
・Fine-tuning(モデル学習)
OpenAI APIは、多くの異なるタスクや用途に利用できる幅広いサービスが提供されていますが、以下にいくつかの主要なサービスを挙げます。
1.文章生成 (text generation)
davinci: 通常の文章生成タスクに使用される、高度な自然言語生成モデル。
curie: 比較的短い文章の生成に適したモデル。
babbage: 長文の生成に特化したモデル。
2.質問応答 (question answering)
davinci: 問いに対して最も適切な回答を生成する能力を持つモデル。
3.自然言語理解 (natural language understanding)
davinci: 文章の意図や情報の抽出、意味解釈などの自然言語理解タスクに使用できるモデル。
4.翻訳 (translation)
text-davinci-003: 異なる言語間でのテキスト翻訳に使用されるモデル。
OpenAI API自体に直接的な翻訳機能は含まれていないため、別途の翻訳ツールやAPIを使用する必要があります。
例えば、googleの翻訳APIを呼び出すことで翻訳します。
本記事では、文章生成 (text generation)でtext-davinci-003モデルを利用して、質問応答でAPIを利用してみます。
「text-davinci-003」は、自然言語の理解や文脈に基づいた質問応答タスクにおいて高度な性能を発揮します。
質問応答の一般的な手順は次のようになります。
- APIへのリクエストの準備
OpenAI APIへのリクエストを作成し、text-davinci-003モデルを指定します。 - コンテキストの入力
質問応答の文脈や背景となる文章や情報をAPIに送信します。これは、質問に対して回答を得るためのコンテキストを提供するものです。 - 質問の入力
APIに対して具体的な質問を送信します。 - APIリクエストの送信
質問応答のためのAPIリクエストを送信します。 - 応答の受け取り
APIは、指定したモデル(text-davinci-003)に基づいて生成された回答を返します。 - 応答の整理と加工
APIの応答を受け取った後、必要に応じて回答を整理し、加工します。
text-davinci-003モデルの特徴として、davinciよりもコストが低く、トークン制限(テキストの長さに制約)が緩和されています。またテキスト生成や質問応答のタスクに特に適しており、より効率的に使用できます。
したがって、text-davinci-003はdavinciよりもリソース効率が高く、特にテキスト生成や質問応答のタスクに特化しています。
具体的な質問応答の例や詳細なAPIの使用方法については、OpenAIの公式ドキュメンテーションやAPIリファレンスを参照してください。
OpenAI API料金
現在、API利用の無料枠は5ドルです。(2022/8/4当時は18ドルでした。)
GPT-3.5 text-davinci-003を利用した場合、無料枠の5ドルでどれぐらい使えるかですが、コストはトークンが発生するたびにかかります。text-davinci-003は1000トークンあたり0.0200ドル消費します。
一つの問い合わせ文と結果を含めて500トークン消費した場合、コストは(500/1000)*0.02ドル=0.01ドルで、1$=145円換算で1.45円です。
主なモデルとコスト一覧
モデル | 1000トークン当たり(ドル) |
---|---|
Ada | 0.0004 |
Babbage | 0.0005 |
Curie | 0.0020 |
text-davinci-003 | 0.0200 |
OpenAIのAPIの準備(APIキーの取得)
まずは、OpenAI APIを利用するためにアカウント登録とAPIの認証にAPIキー(トークン)が必要です。
OpenAIのAPI公式サイトにアクセスし、「GET startted」をクリックします。
Create your account画面が表示されますので、適宜アカウントを作成してください。
ログイン後、右上のアカウントから「View API keys」をクリックします。
API Keys画面で「Create new secret key」をクリックしてAPIキーを作成します。
※キーの名前を付けたい場合は適宜名前を付けられます。
これで、APIキーの発行は完了です。キーはこの段階で保管してください。後で参照することはできません。
もし忘れた場合は再発行をしてください。また、APIキーは大切に他人には漏洩しないように保管してください。
3か月限定で5ドルまで無料で利用できますが、そのためには、クレジットカードの支払い情報を設定しないと利用できません。
6月時点では、支払い情報は未設定でも使えましたが、現時点7/31ではだめなようです。クレジットカードの支払い情報を登録後5ドルが付与されます。
OpenAIのAPIを使ってみよう
curlコマンドで利用できるか試してみます。(curlコマンドはLinux、Windowsのコンソール画面上のコマンドラインで利用できます。)
「text-davinci-003」を使用する際のAPIエンドポイントのURLは、
https://api.openai.com/v1/models/text-davinci-003です。$OPENAI_API_KEYには、ご自身で取得したAPIキーを記入してください。
正常なら以下のような応答があります。
エラーの場合は[message]にエラー内容が入りますので適宜対処してください。
例えば無料で3か月限定期間の期限切れの場合は、
[message] => You exceeded your current quota, please check your plan and billing details.
のようなメッセージが返送されます。
入力トークン数が事前にどれぐらいあるか知りたい場合は、
https://platform.openai.com/playground/?mode=completeにアクセスします。
MODE:complete Legacy
MODEL:text-davinci-003
を選択し、文章を入力するとトークン数が右下に表示されます。
[Submit]を押すと回答が得られ、回答のトークン数も加算され表示されます。(Submitを押した段階で、入出力合わせたトークン数が課金対象となります)
入出力合わせたトークン数が366トークンとなりました。コストは(366/1000)*0.02ドル=0.00732ドルで、
1$=145円換算で約1円です。
このトークン数で無料分の5ドルでは680回程度試せることになります。テスト使用には十分あるかと思います。
PHPでOpenAIのAPIを使ってみる
OpenAIのAPIをPHP言語で操作してみます。
まず、OpenAIから回答を期待する事項として、次のようなものを検討してみたいと思います。
「新規に.comのドメインを取得するにあたりドメイン名の提案を受ける。サイトやサービスのコンセプトを入力後にいくつかのドメイン名を提案してくれるものを作成してみます。」
プログラムで結果を利用する場合は出力結果を意識して問い合わせをする必要があります。
トライ&エラーで質問事項の出力の挙動を確認することになりますが、無料のChatGPTを使ってどういう結果が返送されるか見ながら質問の文言を調整した方がいいでしょう。API経由や前述の専用画面のUIで行うとその度に1回1円前後のコストが発生します。
サンプルコード:
//aidns.php
<?php
if(is_null($argv[1])){
print "どのようなコンセプトか、どんなサイトなのか自由に記述\n";
exit();
}else{
$qa = $argv[1];
}
function getOpenAIKeywords($text) {
$apiKey = 'OpenAI API KEY'; // OpenAI APIキーを設定してください
$model = 'text-davinci-003';
$headers = [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey,
];
$data = [
'prompt' => $text,
'max_tokens' => 1000,
'temperature' => 0.5,
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.openai.com/v1/engines/' . $model . '/completions');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($curl);
curl_close($curl);
$responseData = json_decode($response, true);
$choices = $responseData['choices'];
$keywords = [];
foreach ($choices as $choice) {
$keywords[] = $choice['text'];
}
return $keywords;
}
$resnum = 5;
$rescreatenum = 3;
$header = "新しくドメイン名を付けたいです。
次のコンセプトの場合は何がいいでしょうか?
";
$footer = "
ドメイン名を" . $resnum . "個提案してください。
その結果と新たに造語で単語を短くして". $rescreatenum ."個提案してください。
返答はTLDがcomのドメイン名にしてください。
出力順は最初の" . $resnum ."個と造語の" . $resnum . "個を連続して表示してくださ い。
出力データをプログラムで利用するのでjson形式で出力してください。キーの名前はdataにしてください。
";
$text = $header . $qa . $footer; // 入力文にヘッダーとフッターの文を連結
$keywords = getOpenAIKeywords($text);
echo "連想されたキーワード:\n";
foreach ($keywords as $keyword) {
echo $keyword . "\n";
}
?>
サンプルコードを使って質問した結果が次です。結構使えそうなドメイン名を提案してくれます。
連想されたキーワード:
0. kimonoworld.com
1. kimonoglobe.com
2. kimonoexpo.com
3. kimonoempire.com
4. kimonoexchange.com
5. kimoworld.com
6. kimoglobe.com
7. kimoexpo.com
8. kimoempire.com
9. kimoexchange.com
$
$ php aidns.php 紫、電気自動車、先進性があり、インパクトのあるドメイン名が欲しい。
1.VioletEV.com
2.EcoViolet.com
3.VioletElectric.com
4.VioletAuto.com
5.VioletInnovative.com
6.VioEV.com
7.EcoVio.com
8.VElec.com
9.VAuto.com
$
サンプルコードの説明
・設定値
max_tokens:Maximum lengthは最大トークン数で、プロンプトのトークン数と合わせて、text-davinci-003 なら4097以下であること。
temperature:サンプリング温度と呼ばれ、多様性パラメータのことです。テキスト生成の際に多様性を制御するために使われるパラメータで、上げるほど答えがランダムになり多様性、創造性が上がります。上げすぎると意味不明になることもあります。
・質問事項の入力に対して、ヘッダー($header)とフッター($fotter)を付加して意図した結果を生成してくれるように調整します。プログラムでデータを扱うためjson形式でキーの名前も指定して出力するように促しています。
ホームページでサービスを作成してみましょう
前述のaidns.phpを修正してホームページ上で動作するサービスを作ります。
Apache+PHPの環境があれば動作します。
もちろんValue Domainのコアサーバー、バリューサーバー、XREAでも動作します。
サンプルテストサイト:https://op.gy/aidns/ ※2023年10月までの限定公開です。
サイトやサービスのコンセプトを入力したらいくつかの.comのドメイ名を提案し、さらにそのドメイン名が取得できるかどうか、Value DomainのAPIで検索します。
Value DomainのAPIの利用は、「API連携とは?バリュードメインAPIでドメイン、DNS設定の取得と変更を実践」を参考にしてください。プログラム一式はGitHub「openaidomainname」からダウンロードできます。
- index.php メイン画面
- config.php 設定ファイル・OpenAIのAPIキー、Value DomainのAPIキー
- createname.php openai APIアクセス
- c13-9-1.php value-domain APIアクセス
- css スタイルシート一式
実行時間の表示とともに、新しいドメイン名の提案と各ドメインが取得できるかどうかを一覧で表示します。APIを利用すると簡単にサービスを作成できます。
Value DomainでもNFTのAIドメイン生成で同様のことが実現されています。
Value Domain Web3 byGMOの専用サイト筆者が使用したところ、今回紹介したプログラムと違いよりいい名前が提案されます。
ご紹介したプログラムでは、1回の質問・応答で結果を得ています。AIを利用するにあたっては、ユーザが入力した質問内容にどのように内部で追加の質問をするか、また質問を内部で繰り返しよりよい提案結果を得るためのハンドリングが必要となってきます。
OpenAIトークン数のカウントは言語によって変わる!
大規模なアクセスサイトになると、コスト(トークン数)も馬鹿にならないので、効率のいい文を考えることが必要となってきます。極端な例として日本語の文末の「。」を省くと1トークン減ります。
また、言語によるトークン数の差もあります。面白いので例として上げておきます。
日本語で以下の302トークンの内容を翻訳して違う言語で試した結果が下の表です。(翻訳はDeepL翻訳を使用し、OpenAIのplaygroud画面でカウントしました。)
ECサイトで着物を扱います。ワールドワイドに売るサイトです。青色を強調してください。
ドメイン名を5個提案してください。
その結果と新たに造語で単語を短くして3個提案してください。
返答はTLDがcomのドメイン名にしてください。
出力順は最初の5個と造語の3個を連続して表示してください。
出力データをプログラムで利用するのでjson形式で出力してください。キーの名前はdataにしてください。
トークン数 | 言語 |
---|---|
122 | 英語 |
232 | フィンランド語 |
271 | マオリ語 |
302 | 日本語 |
319 | 中国語 |
461 | ベトナム語 |
582 | 韓国語 |
606 | ロシア語 |
718 | タイ語 |
言語によってトークン数にかなりの差があります。インド=ヨーロッパ語族のロシア語がなぜか高く、筆者にはマオリ語にどんな特性があるかまったくわかりませんが以外に低くなっています。
タイ語に至っては英語の6倍程度コストを要します。OpenAI内でどういう言語処理がなされているのかは不明です。
終わりに
OpenAIのAPIを利用して簡単なプログラムであらたなドメイン名を提案してくれるサービスが出来上がりました。
プログラムコードも大切ですが、質問応答の指示文を考えるのも大切です。
返答される文をプログラムで用意に利用できるように誘導することも考える必要があります。
Chat GPTで有名なOpen AIですが、最近のメディア報道では、AIボットで毎日70万ドルのコストが発生しており、GPT3.5/4 での収益化も不十分とのことです。
現在無料枠5ドルが設定されていますが今後無料枠はどうなるか不明ですので、試される方は使えるうちに試してみてはいかがでしょうか。
ドメインが実質0円(年間最大3,882円お得)になるサーバーセット割特典を展開中です。
最新のキャンペーンはこちらから
※ユーザーノートの記事は、弊社サービスをご利用のお客様に執筆いただいております。
医療メーカーで新素材研究開発後、電機メーカーで制御器系システム開発を経てIT系マルチエンジニアをしています。またデザイン思考を実践し、アート思考などのいろんな思考方法に興味があります。