クリエイターの教科書

ChatGPT, Stable Diffusion, Visual Studio, Excelなど教科書

【ChatGPT開発】ChatGPTのAPIをPHPから使うには?文章が返ってこない場合は?

OpenAIのAPIは、基本的にはシンプルなのでPHPからCURL経由でも取得できます。

ChatGPTのAPIをPHPから使うには?

PHP Logo

 

事前に有料APIの利用を申し込み、クレジットカードなどを設定しておきましょう。

 

APIの利用にあたっては個別キーを発行しておきましょう。

Account API Keys - OpenAI API

 

PHPでのサンプル例がいくつかネットに上がっています。

ライブラリを特に使わなくても、PHPでCURLで対応できます。

 

PHP | OpenAIのAPIを実装するサンプルコード | ONE NOTES (1-notes.com)

 

ChatGPT-PHP/Index.php at main · p4us/ChatGPT-PHP · GitHub

 

 

上記サンプルをうちでためしたところ、エラーにはならいなものの文章が返ってきませんでした。

 

いろいろしらべたところ、CURLに以下の一文を付け加えればちゃんと文章が返ってきました。

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);

 

上記サンプルにこの一文を加えて試してみてください。

What am I doing wrong? (PHP, API OpenAI) - Prompt Assistance - OpenAI API Community Forum

 

 

上記サンプルを改変し、うちで実際に動いたPHPのサンプルコードは以下になります。

 

        $prompt = "空はなぜ青いの?";        
        $OPENAI_API_KEY = "{ここにAPIキー}";
         
        $ch = curl_init();
        $headers  = array(
            'Accept: application/json',
            'Content-Type: application/json',
            'Authorization: Bearer ' . $OPENAI_API_KEY . ''
        );

        $postData = array(
            'model' => "text-davinci-003",
            'prompt' => str_replace('"', '', $prompt),
            'temperature' => 0.9,
            'max_tokens' => 512,
            'top_p' => 0.5,
            'frequency_penalty' => 0.0,
            'presence_penalty' => 0.0,
            'stop' => '[" Human:", " AI:"]',
        );

        curl_setopt($ch, CURLOPT_URL, 'https://api.openai.com/v1/completions');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);

        $result = curl_exec($ch);
        if($result === false){
            $this->pErr = curl_error($ch);
            return false;
        }


        $decoded_json = json_decode($result, true);
        print_r($decoded_json['choices'][0]['text']);

 

 

 

ChatGPTのAPIの不具合

サーバーにつながらない?

ChatGPTへのアクセスはかなり多いようで、サーバ障害が起きる場合があります。

 

サーバのステータス情報は以下に公開されているのでチェックしてみましょう。

OpenAI Status

 

 

返答の文字が途中で途切れるんだけど?

返答文字数は、APIのmax_tokens数で指定されます。

max_tokens数を多くすると返ってくる文字数が増えます。

 

ただtoken数が多いと、APIの利用料金は増えていくものと思われます。

 

 

改行をするには?

返答に改行が入る場合は、「\n」を「<BR>」へ変換すると、改行されたHTMLとして表示できます。

$pDat = str_replace("\n", "<BR>", $pDat);

 

 

回答内容を変えたい?

回答内容はtemperature、top_pといったパラメータの影響を受けます。

 

temperatureが0なら毎回同じ回答となります。2になると完全にランダムとなります。

top_pは、出現率の高いものから選択するので小さい数値ほど高頻度の単語が選択されます。

 

 

返答内容に繰り返しの文言が多い?

presence_penalty、frequency_penaltyといったパラメータで指定します。

 

presence_penaltyが-2なら繰り返しが多く、2なら少ないです。

frequency_penaltyが-2なら繰り返しが多いほどペナルティを加算します。

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

プライバシーポリシー |〇利用規約 |〇問い合わせ