by Devin Yang

建立於: 5個月前 ( 更新: 5個月前 )

最近好像大家都在講OpenAI,如果您也想玩,可以在Laravel的API寫個簡易的API測試哦。
因為可以用curl呼叫,所以透過guzzle就能呼叫了。

如果您登入了openai的網站,可在此處看到官方的教學說明
https://beta.openai.com/docs/quickstart/build-your-application

API的KEY的申請,就在這頁的下方就有按鈕了

+ Create new secret key


再把key加到Laravel的.env中,這裡我取名叫
OPENAI_KEY=

在routes/api.php中新增/openai功能 

use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
Route::get('/openai', function (Request $r) {
    if(empty($r->text)){
        return sprintf("呼叫API:<br/>%s/api/openapi?text=問的問題",env("APP_URL"));
    }
    $client = new Client;
    $api_url = "https://api.openai.com/v1/completions";
    $json = <<<JSON
                {
                    "model": "text-davinci-003",
                    "prompt": "用正體中文回應我:$r->text",
                    "temperature": 0.9,
                    "max_tokens": 150,
                    "top_p": 1,
                    "frequency_penalty": 0.0,
                    "presence_penalty": 0.6,
                    "stop": [" Human:", " AI:"]
                }
            JSON;
    $json = json_decode(preg_replace('/[\x00-\x1F]/', '', $json), true);
    try {
        $r = $client->request('POST', $api_url, [
            'headers' => [
                'Authorization' => 'Bearer ' . env("OPENAI_KEY")
            ],
            'json' => $json
        ]);
    } catch (ClientException $e) {
        return json_decode($e->getResponse()->getBody()->getContents(), true);
    }
    return $r;
});


然後打開自己Laravel專案的/api/openai?text=就能輸入測試囉

在官方網站有大量的範例可以參考,中間的Json如何設定的
https://beta.openai.com/examples/

 

Tags: openapi ai laravel

Devin Yang

文章內容無法一一說明,如果您有什麼不了解處,歡迎提問哦:)

No Comment

Post your comment

需要登入才可留言!

類似的文章


Laravel,artisan

關於Laravel的artisan中的--env的操作

本文採用Lravel 9.40.1進行操作我相信很多人都知道了--env的用法,但我還是提供一下資訊給Laravel的初學者。在artisan的指令中,我們能透過--env來指定使用不同的.env檔,這樣在不同的子域名下,我就能用不同的環境甚至是不同的資料庫。大家應該也有注意到,本站採用的是多語的環境,寫兩套嗎?當然沒有,基本上我建了多個.env在同一個Project中。

laravel,trait,php

我的Browser Trait、webp圖檔支援功能檢測及是否為手機檢測

PHP trait相信很多人都不陌生,因為Laravel到處可見,但我還是寫出來分享給有緣人🙄。PHP trait可以讓兩個不同的CLASS都可以使用相同的方法。他不但能降低複雜度,更可讓程式碼重複被使用。所以放個Browser系列功能在Laravel的ViewServiceProvider上使用,應該是滿方便的😝

laravel

Laravel思緒整理,從Model到DatabaseSeeder.

本文將一步一步介紹相關的指令用例: Model=>Factory=>Seeder=>DatabaseSeeder 一步一腳印,讓我們就從Model開始檢視所有流程到DatabaseSeeder。