2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHPを使ってオリジナルアプリからChatGPT APIを利用してみた

Last updated at Posted at 2023-12-12

内容

ChatGPT APIを使って、簡単なアプリからChatGPTと連携してみたいと思います

目次

APIキーの取得

まずはAPIキーを取得しましょう。
OpenAIのサイトに飛びます。

サイドバーの「API keys」から「Start verification」をクリックします。
image.png

認証コードを受け取るための電話番号を入力します。
スクリーンショット 2023-12-12 20.37.26.png

受け取った認証コードを入力します。
image.png

発行するシークレットキーに好きな名前をつけます。
image.png

するとシークレットキーが発行されます。
このシークレットキーはここでしか確認できないので、コピーして忘れないように保存しておきましょう。
スクリーンショット 2023-12-12 20.40.31.png

このシークレットトークンを使ってChatGPTと連携をすることができます。

PHPを使ってChatGPTと連携する

ではさっそくオリジナルアプリからChatGPTを使ってみましょう。
※利用には多少のお金が発生します。

↓のように準備します

<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;
use Orhanerday\OpenAi\OpenAi;

$open_ai_key = '取得したシークレットキー';

// ライブラリのインスタンスを生成
$open_ai = new OpenAi($open_ai_key);

$seach_text = filter_input(INPUT_POST, 'seach_text', FILTER_DEFAULT);
$content = "のびえもーんは22世紀の未来から来たネコ型ロボットです。生年月日は2112年9月3日です。<br>
            ドラ太君は小学4年生の少年です。勉強も運動も苦手でド◯えもんの秘密道具に頼りっぱなしです。<br>
            ジャイカちゃんはのび太が思いを寄せるクラスメイトの少女です。成績は良く、真面目で優しい性格。よくお風呂に入っている。焼き芋が一番の好物であるがイメージダウンを気にして、あまり口にしない。<br>
            しず夫はのび○のクラスメイトの友達。身長が低いのをコンプレックスにしている。家が非常に裕福でよく自慢話をする。<br>
            スネアンはのび○のクラスメイトの友達。近所の「ガキ大将」。自己中心的で乱暴だが、非常に妹想いである。また、友情や愛情といった他人を思いやる行為に弱い一方、涙もろい一面も持つ";

if ($seach_text) {
    // ChatGPTを呼び出し
    $response = $open_ai->chat([
        'model' => 'gpt-3.5-turbo',
        'messages' => [
            [
                "role" => "assistant",
                "content" => $content
            ],
            [
                "role" => "user",
                "content" => $seach_text
            ],
        ],
    ]);
    $response_list = json_decode($response);
    $answer = $response_list->choices[0]->message->content;
}

?>
<!DOCTYPE html>

<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>GPTアプリ</title>
</head>
<body>
    <form action="" method="post">
        <div>
            <input name="seach_text" type="text" placeholder="何が知りたいですか?" size="150">
            <button>検索</button>
        </div>
    </form>
    <div>
        <p>【検索結果】</p>
        <p>↓ここに検索結果が表示されます。</p>
        <p><?php echo($answer); ?></p>
    </div>

    <div>
        <p>【登場人物】</p>
	<p><?php echo($content); ?></p>
    </div>
</body>
</html>

シークレットキーをべたがきしていますが、セキュリティ上やばいので絶対にやめましょう。
.envなどに書きましょう。

そして必要なパッケージをインストールします。

composer require vlucas/phpdotenv orhanerday/open-ai

サーバーにアップロードしてブラウザで表示してみます。
ブラウザで表示させる方法は↓を参照ください。

登場人物の「スネアン」の特徴を聞いてみましょう。
image.png

ChatGPTがスネアンの特徴を端的にまとめてくれました
image.png

今回は簡単に作った登場人物をまとめてもらいましたが、さらに登場人物が増えればGPT様の力が発揮されることでしょう。

エラーでうまくいかない時

実行してもエラーでうまく実行できない時があり、
ターミナルで実行すると

You exceeded your current quota, please check your plan and billing details.

というエラーが出ることがあります。
原因としては、予算オーバーだそうです。
送信する文字数によって、ChatGPT APIの利用にはお金がかかります。

※今回利用したGPT-3.5 Turboの場合は、1000トークンにつき$0.001~$0.002です。
ひらがなやカタカナは1文字1トークン、漢字だと1文字2~3トークンです。
1000文字送って1円かからないくらいですね。

上記のエラーが出る場合は、OpenAIのサイトでいくらか予算を確保しましょう。

サイドバーの「Setting」から「Billing」を選択し、「Add payment details」をクリックします。
image.png

「Individual」を選択します。
image.png

そしてクレジットカードの情報を入力して、予算を確保しましょう。
image.png

私は最低額の$5を入れて利用しました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?