by Devin Yang

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

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

D-Laravel學習三階段

閒聊D-Laravel的使用的三階段,為何使用D-Laravel。 因為D-Laravel使用的設定檔都相當的簡單,極適何Docker的初學者學習, 並且就自不懂Docker運用的使用者,也可以借住./console及./create兩個指令建立專案。

docker,container,laravel

在Nas上手動更新D-Laravel的使用者id全記錄

本文全記錄,紹我如何更新我家Nas上的fpm image的uid。 本文章中,您應該會學會查詢容器id及commit容器等相關概念。

laravel,dotenv,seo

我如何依子域名動態載入Laravel不同的dotenv檔

開始前先來抱怨一下,本來我的網站可以依使用者的瀏覽器自動顯示不同的語系的。這有何不可,但Google的SEO似乎不喜歡這麼搞,他建議每種語言使用不同的網址,不要用cookie或瀏覽器設定來調整網頁內容,好吧那我只能乖乖就範了。他的建議作法,第一種方案:依國家區分,像是example.tw或example.de這真的天方夜譚怎麼可能,要嘛收購被註冊的域名,要不然取個全球沒人會取的怪域名還比較有機會。第二種方案:用子域名區分,這正式我準備要做的,等等來說明在Laravel中怎麼弄。第三種方案:example.com/tw/ 之類的,Apple好像就這麼弄的。第四種方案:site.com?loc=tw之類,不建議使用,確實我也覺的這個不是一個好主意。