OpenAIのPHP向けクライアントライブラリ 3種を比較する
目次
スポンサードリンク
はじめに
OpenAIはAIモデルを使用できるWebAPIを公開しています。その中にChatGPTでも使用されているGPT-4やGPT-3.5、プロンプトから画像を生成するDALL·E 3などがあります。
WebAPIはcurlコマンドなどで直接呼び出すこともできますが、APIを利用しやすいよう工夫されたライブラリが公開されています。OpenAIの公式サイトに掲載されているphp向けのライブラリは三種類あります。
- orhanerday/open-ai by orhanerday
- openai-php clinet by openai-php
- tectalic/openai by tectalic
Google Trends で検索動向を調べる
まずは Google Trends に各ライブラリの名称をいれて検索動向を見てみましょう。多く検索されていれば、それだけライブラリを試しているエンジニアが多いという事でしょう。結果を見るとそもそもボリュームは多くないですが、「orhanerday/open-ai」と「openai-php」は検索されている形跡がありました。「tectalic/openai」はまだあまり検索されていないようです。
GitHubスターの数
続いて、GitHubに登録されているリポジトリのスター数を見てみましょう。GitHubはプログラムのコードやデータをオンラインで保存、共有、管理できるウェブサービスです。世界中の開発者が利用しており今回紹介するライブラリもすべてGitHubでソースコードが公開されています。GitHubの利用者はお気に入りのソフトウェアに対し、スターをつけることができます。スターの数が多いフレームワークは、それだけ人気があるフレームワークということです。
- orhanerday/open-ai 1.9k stars
- openai-php clinet 3.5k stars
- tectalic/openai 315 stars
※2023年10月時点
「orhanerday/open-ai」が他二つを離して最も多いスターを獲得しています。続いて「openai-php」、かなり差が空いて「tectalic/openai」です。
ライセンス
業務で使用する場合はライセンスも重要な要素です。確認したところ、3つのライブラリ全てが「MIT license」でした。
MITライセンスとは ソフトウェアを自由に使ったり、改変したり、配布したりできるライセンス。ただし、著作権表示とライセンスの全文を記載する必要があります。
対応するPHPバージョン
対応しているPHPのバージョンも調べてみました。
- orhanerday/open-ai PHP 7.4以上
- openai-php clinet PHP 8.1以上
- tectalic/openai PHP 7.2.5以上、8.0以上
「openai-php client」は PHP 8.1以上になっており、7系では利用できない様です。その他のライブラリは細かな違いはありますが、7系、または 8系のPHPが利用できます。
ライブラリの使用方法の違い
1. orhanerday/open-ai
使用方法
use Orhanerday\OpenAi\OpenAi;
$open_ai_key = getenv('OPENAI_API_KEY');
$open_ai = new OpenAi($open_ai_key);
$chat = $open_ai->chat([
'model' => 'gpt-3.5-turbo',
'messages' => [
[
"role" => "system",
"content" => "You are a helpful assistant."
],
[
"role" => "user",
"content" => "Who won the world series in 2020?"
],
[
"role" => "assistant",
"content" => "The Los Angeles Dodgers won the World Series in 2020."
],
[
"role" => "user",
"content" => "Where was it played?"
],
],
'temperature' => 1.0,
'max_tokens' => 4000,
'frequency_penalty' => 0,
'presence_penalty' => 0,
]);
2. tectalic/openai
使用方法
$openaiClient = \Tectalic\OpenAi\Manager::build(
new \GuzzleHttp\Client(),
new \Tectalic\OpenAi\Authentication(getenv('OPENAI_API_KEY'))
);
/** @var \Tectalic\OpenAi\Models\ChatCompletions\CreateResponse $response */
$response = $openaiClient->chatCompletions()->create(
new \Tectalic\OpenAi\Models\ChatCompletions\CreateRequest([
'model' => 'gpt-4',
'messages' => [
[
'role' => 'user',
'content' => 'Will using a well designed and supported third party package save time?'
],
],
])
)->toModel();
echo $response->choices[0]->message->content;
3. openai-php clinet
使用方法
$response = $client->chat()->create([
'model' => 'gpt-3.5-turbo',
'messages' => [
['role' => 'user', 'content' => 'Hello!'],
],
]);
$response->id; // 'chatcmpl-6pMyfj1HF4QXnfvjtfzvufZSQq6Eq'
$response->object; // 'chat.completion'
$response->created; // 1677701073
$response->model; // 'gpt-3.5-turbo-0301'
foreach ($response->choices as $result) {
$result->index; // 0
$result->message->role; // 'assistant'
$result->message->content; // '\n\nHello there! How can I assist you today?'
$result->finishReason; // 'stop'
}
$response->usage->promptTokens; // 9,
$response->usage->completionTokens; // 12,
$response->usage->totalTokens; // 21
$response->toArray(); // ['id' => 'chatcmpl-6pMyfj1HF4QXnfvjtfzvufZSQq6Eq', ...]
まとめ
いくつかの観点で比較してみましたが、いかがでしょうか。ライブラリの使用方法はどのライブラリも似たものになっています。ライセンスにも差がありません。今後もOpenAI のAPIは機能が追加されていくはずなので、追従スピードなども重要な要素になるかもしれません。 現時点では最も人気がありPHP7系、8系に対応している「orhanerday/open-ai」を選ぶのが最良の選択と言えそうです。
スポンサードリンク
ChatGPT、Laravelを学ぶ際のおすすめ書籍
ChatGPT/LangChainによるチャットシステム構築[実践]入門
ChatGPTのAPIとLangChainを使って、大規模言語モデル(LLM)を本番レベルのシステムに組み込むための知識をステップバイステップで、手を動かしながら実践できる書籍です。入門から実践まで体系的に学べます。
レベルアップPHP ~言語を理解して中級者へ~
PHPの入門書を読み終えさらなる実力をつけたいエンジニア向けの技術書です。PHPの入門書にはあまり載っていないバージョンアップ方法やパフォーマンスなど、実務に役立つ内容も記載が豊富。30日間の無料体験もできる『Kindle Unlimited』でも読めます。
独習PHP 第4版
PHP の基本から抑えたいときはこちら。解説が詳しい、練習問題で知識の定着も促せる。辞書のような一冊。手元にある安心感。とにかく分厚い。
関連記事
Laravel + openai-php/client を使ってAIを教育・質問する方法
Twitterもやってます。
Web開発やノーコード開発、趣味のお酒や家庭菜園についてつぶやいてます。
https://twitter.com/haradedede
Search
Recent Posts
- OpenSSHのエラー「bad ownership or modes for chroot directory component」の原因と解消方法
- Apacheの起動状態をチェックして停止してる場合にApacheを起動するシェルスクリプト
- Amazon LinuxのOSバージョンを調べる方法|/etc/redhat-release の代替ファイル
- MYSQLでダンプファイルを取得する際に発生したエラー「Couldn't execute 'SELECT BINLOG_GTID_POS('', '0')': You are not using binary logging (1381)」の原因と対処方法
- RHEL系Linuxでリポジトリを一覧表示するコマンド(dnf repolist)