3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

chatgpt api (OPEN AI)を php で使う

Last updated at Posted at 2023-01-30

chatgpt 4 を使った

追記

エラーコードの意味

Error: 429
お金払ってね

shiharai.png

Error: 400
金払ったのわかるけど、古いデータのまま送信しないでね
テキストを変更すれば治る。

        $messages = [
            [
                'role' => 'system',
                'content' => 'あなたは、20歳の女性です。私のプロフィールを考慮し、私に質問をしてください。1から9までの箇条書きで、質問のみ出力して下さい。'
            ],
            [
                'role' => 'user',
                'content' => '超長期投資🎁飲食店株大好き🍖株主優待フェチ💓web会社経営💰早く結婚したい🤗彼女募集中DMお気軽に✨イケメン。億トレ。付き合ってくれたら株主優待あげます🎁'
            ],
            // その他のメッセージ
        ];


        //use Illuminate\Support\Facades\Http;
        $response = Http::withHeaders([
            'Content-Type' => 'application/json',
            'Authorization' => 'Bearer ' . config('app.open_ai_secret')
        ])->post('https://api.openai.com/v1/chat/completions', [
            'model' => 'gpt-4-1106-preview',
            'messages' => $messages,
            'max_tokens' => 500,
        ]);

        if ($response->failed()) {
            $res = 'Error: ' . $response->status();
            pd($response->body());
        } else {
            $res = $response->json();
//            var_dump($result['choices'][0]['message']['content']);
        }

これで gpt-4 turbo が使える。

chatgpt の api と書いてあるのは open aiのAPI
※ 同じGPT3.5系のモデルを使った文章生成AIのこと

アカウントを作成

.env を設定

キーが外部にもれないよう、.envに。

OPEN_AI_SECRET=sk-xxxfff

app.php

'open_ai_secret' => env('OPEN_AI_SECRET'),

キャッシュのお掃除

php artisan config:cache
rm -f bootstrap/cache/config.php

日本語生成

$apiUrl = 'https://api.openai.com/v1/completions';

// APIに送信するパラメーター
$apiParams = [
    'model' => 'text-davinci-003',
    'prompt' => '日本の現在の総理大臣は誰ですか?',
    'max_tokens' => 100,
];

// Guzzleを使ってAPIにリクエストを送信する
$client = new Client();
$response = $client->post($apiUrl, [
    'headers' => [
        'Content-Type' => 'application/json',
        'Authorization' => 'Bearer ' . config('app.open_ai_secret'),

    ],
    'json' => $apiParams,
]);

// APIからのレスポンスを取得する
$result = json_decode($response->getBody()->getContents(), true);



print_r($result);

結果


Array
(
    [id] => cxxx
    [object] => text_completion
    [created] => 16753333
    [model] => text-davinci-003
    [choices] => Array
(
[0] => Array
(
    [text] =>

安倍晋三です。
    [index] => 0
    [logprobs] =>
    [finish_reason] => stop
)

)

[usage] => Array
(
    [prompt_tokens] => 27
    [completion_tokens] => 14
    [total_tokens] => 41
)

)

はい、これで日本語出力できましたね
textのモデルは複数あるが、text-davinci-003以外は使いものにならない。

画像生成


$client = new Client();

$response = $client->post('https://api.openai.com/v1/images/generations', [
    'headers' => [
        'Content-Type' => 'application/json',
        'Authorization' => 'Bearer ' . config('app.open_ai_secret'),

    ],
    'json' => [
        'model' => 'image-alpha-001',
        'prompt' => '婚活している30代日本人女性',
        //                'prompt' => 'かわいい20歳の日本人女の子がマイクロビキニを着て男を誘惑している',//エロはダメ
        'num_images' => 1,
        'size' => '256x256'
    ],
]);

$json_result = json_decode($response->getBody(), true);
$image_url = $json_result['data'][0]['url'];

echo $image_url;

ここに画像

mesu.png
konkatusitesou.png
konka.png

他にできること

・Code Completion(コード生成)
・Fine-tuning(モデル学習)
・Embedding(数字変換)

料金は?

Davinci
1000トークン当たり0.0200ドル
( 1 ドル で 50000 トークン )

英語は1単語を1トークン。
カンマ(,)やピリオド(.)、クエスチョンマーク(?)も1トークン

日本語だと
十八番とは?:11トークン

大体1文字2トークン程度になる

Davinciで1回平均1000トークン消費して1000回APIリクエストした場合、100万トークン発生して20ドル(約2600円)が課金される

画像生成

1024×1024 $0.020 / 画像
512×512 $0.018 / 画像
256×256 $0.016 / 画像

つまり1024x1024を100枚で$2 (260円)

有名なダヴィンチさんは?

linebotでよく聞く、ダヴィンチさんは

4文字以下は応答対象外
81文字以上の文章も応答対象外
1日に対話できるのは3回まで

らしいです。

さらに追記していきます

3
6
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
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?