This Post is under 軟體開發
前文以 php curl 來實作在網站伺服器端呼叫 Google Gemini 生成內容(generateContent),但網路上已經有前人把呼叫的細節與資料結構包裝成套件,呼叫Google Gemini API可以非常直覺,用幾行程式碼就打發了;本文使用套件跟前文的差別在於原本以curl呼叫API的部分被封裝程短短的兩行程式碼(以粗體字顯示)。此次要介紹的套件是 google-gemini-php,從安裝到使用。以下是在Windows作業系統安裝的注意事項:
- 使用 composer 安裝google-gemini-php套件,若不熟 composer ,可參考這一篇先安裝composer。注意 composer 安裝好了之後會需要 php,如果不想在系統 path 設置 php 路徑,可到 composer 安裝目錄(如 C:\ProgramData\ComposerSetup\bin) 修改 composer.bat,將最後一行:php “%~dp0composer.phar” %* 的 php 前頭加上你所安裝的 php 路徑,如C:\php8.3\bin\php “%~dp0composer.phar” %*。
- 注意執行 composer 的Console(命令提示字元)其目錄需在你專案的目錄(或是你所設定的lib目錄)之下,以本文來說是在本地電腦測試網站根目錄下的lib目錄,執行 composer,爾後在程式碼的第一行將之include進來,如require ‘/lib/gemini-api-php/vendor/autoload.php’;。以後要發布到外部網站(如冬烘居)時,可以整個壓縮打包,FTP到遠端網站對應的目錄,再解壓縮即可。
- 套件可用的Model都宣告在 /vendor/gemini-api-php/client/src/Enums/ModelName.php。不過就在2024/7/12,Google已將其中的 gemini-pro-vision 廢棄,改用 gemini-1.5-flash。 截至本文發表之時,gemini-1.5-flash 尚未加入到 enum ModelName 之中,所以如果想使用 gemini-1.5-flash,可自行修改加入即可,如加入這一行:case GeminiFlash = ‘models/gemini-1.5-flash’;。
以上的前端介面跟前文幾乎一樣,只是呼叫後端的端口改成以google-gemini-php 套件實作的後端,程式碼如下。使用現成的套件雖然失去一點彈性,但確實在封裝「輸入參數」、「呼叫方法」、「回傳結果」等都幫我們節省了一些力氣,方便我們更專注在生成式AI應用層面上的程式開發。
另外google-gemini-php 套件並沒有 Batch Request。這個主要是用在聊天,在設定一連串的對話都必須再當作輸入(只是你的問題的角色是 user,而AI的回應的角色是 model)。
<?php require '/lib/gemini-api-php/vendor/autoload.php'; use GeminiAPI\Client; use GeminiAPI\Resources\Parts\TextPart; use GeminiAPI\Enums\ModelName; $model = isset($_REQUEST['m']) ? $_REQUEST['m'] : ""; $geminiQuery = isset($_REQUEST['q']) ? $_REQUEST['q'] : ""; if(empty($geminiQuery) || empty($model)) { die('{ "error": "invalid query" }'); } $api_key = "YOUR_GEMINI_KEY"; $client = new Client($api_key); $response = $client->generativeModel(ModelName::from("models/{$model}"))->generateContent( new TextPart($geminiQuery), ); header('Content-type: application/json'); print(json_encode($response, JSON_UNESCAPED_UNICODE));