by Devin Yang

建立於: 2年前 ( 更新: 2年前 )

最近好像大家都在講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

需要登入才可留言!

類似的文章


dlaravel

如何在host直接執行容器內,不同Project的php artisan.

本篇為D-Laravel的運用教學,如何在主機端直接執行container內的php artisan. 自訂別名後,就能直接在host端的project資料夾內,直接執行contianer內的php artisan了。 alias a="../../artisan.sh"

docker,laravel

[D-Laravel]./console node

進行Laravel開發時,有時我們會需要透過npm安裝nodejs的套件,但是偏偏我們系統中的Node又不夠新。 或許因某些因素沒法升級,例如要跑舊版的nodejs程式等。 其實我們可以透過簡單的指令,用docker,讓我們就能使用最新版本的node image來掛載host端的/sites資料夾囉。 這麼一來我們就可以隨時執行新版本的npm指令啦。

laravel,oauth2

我最常用的Laravel passport指令

Laravel提供了相當多好用的Package,像Passport就是其中之一,當網站需要自架OAuth2驗證主機時,真的是省時省力。本站為例,因為採前後台分離機制(有兩個不同的Laravel專案),我都透過前台的WEB進行驗證。基本上,我還有很多其他不同的專案,也都靠Laravel提供的OAuth2就搞定跨域驗證。