1. 事前準備
生成式 AI 是機器學習 (ML) 最令人振奮的突破之一,可根據使用者提供的簡單文字或提示,生成令人驚豔的圖片、文字、音訊,甚至是影片。Google 推出 PaLM API,讓開發人員能運用 PaLM 技術,打造各類應用程式,提供令人驚豔的使用者體驗。
在本程式碼研究室中,您將建構一個應用程式,使用 PaLM API 根據 Google 產品名稱生成俳句。您也會使用 Flutter 建立可顯示俳句的跨平台應用程式。
必要條件
- 大型語言模型 (LLM) 的基本知識,例如提示
- 具備使用 Dart 進行 Flutter 開發的基本知識
課程內容
- 如何使用 Google 的 PaLM API。
- 如何建構跨平台的 Flutter 應用程式來顯示結果。
軟硬體需求
- Flutter SDK
- 文字編輯器,例如 Visual Studio Code (VS Code)
- 設定 VS Code 以使用 Flutter 和 Dart
- Flutter 的 Android 或 iOS 設定 (包括模擬器)
- 適用於 Windows、Linux 或 macOS 的 Flutter 桌面設定
- Flutter 的網頁設定
- PaLM API 的 API 金鑰
2. 做好準備
下載範例程式碼
- 前往這個 GitHub 存放區。
- 依序點選「Code」>「Download zip」,下載這個程式碼研究室的所有程式碼。
- 將下載的 ZIP 檔案解壓縮,解壓縮後會產生
codelabs-main根資料夾。您只需要haiku-generator子目錄,其中包含下列資料夾:
step0到step3資料夾,內含您在本程式碼研究室中每個步驟的範例程式碼。finished資料夾,內含完成的範例應用程式程式碼。
下載專案依附元件
- 在 VS Code 中,依序點選「File」>「Open folder」>「codelabs-main」>「haiku_generator」>「step0」>「lib」>「main.dart」。
- 如果看到 VS Code 對話方塊,提示您下載範例應用程式所需的套件,請按一下「Get packages」(取得套件)。

- 如果沒有看到 VS Code 對話方塊,提示您下載範例應用程式的必要套件,請開啟終端機,然後前往
step0資料夾並執行flutter pub get指令。
執行範例應用程式
- 在 VS Code 中,確認 Android Emulator 或 iOS 模擬器已正確設定,並顯示在狀態列中。
舉例來說,在 Android 模擬器中使用 Pixel 5 時,畫面會顯示以下內容:

以下是使用 iOS 模擬器搭配 iPhone 13 時的畫面:

- 按一下「Start debugging」
。應用程式會在 Android Emulator 或 iOS Simulator 上啟動。
探索範例應用程式
在範例應用程式中,請注意下列事項:
- 使用者介面相當簡單。
- 使用者可以透過下拉式選單選擇特定 Google 產品。
- 使用者選取「Generate haiku!」(生成俳句!) 按鈕後,Flutter 應用程式會將內建提示傳送至 PaLM API 端點,生成俳句。
- 應用程式收到回覆後,會在文字小工具中顯示生成的俳句。不過,如果您選取「Generate haiku!」(生成俳句!),應用程式不會有任何反應,因為目前還無法與 PaLM API 通訊。

3. 設定 PaLM API 的存取權
您必須具備 API 金鑰,才能使用 PaLM API。本程式碼實驗室發布時,PaLM API 仍處於不公開預先發布階段。
- 如要設定 PaLM API 的存取權,請按照說明文件建立 API 金鑰,並記下金鑰,以便在本程式碼研究室稍後使用。
4. 新增 Google 產品選單
你的目標是為 Google 產品生成俳句。在執行階段,應用程式使用者可以從預先填入的產品名稱清單中動態選擇產品。
如要在應用程式中新增 Google 產品清單,請按照下列步驟操作:
- 在 VS Code 中,前往
step1/lib/data/repositories/product_repository_impl.dart檔案。 - 在
getAllProducts()函式的主體中,新增下列變數,用於儲存 Google 產品名稱的陣列:
product_repository_impl .dart
var productData = [
{'productName': 'Google Search'},
{'productName': 'YouTube'},
{'productName': 'Android'},
{'productName': 'Google Maps'},
{'productName': 'Gmail'}
];
5. 將要求傳送至 PaLM API,並解碼回應
使用者選擇的產品名稱會與下列提示範本合併:
Context: You are an awesome haiku writer.
Message content: Write a cool haiku about {product name}.
如要將這項要求傳送至 PaLM API 端點來生成俳句,請按照下列步驟操作:
- 在 VS Code 中,前往
step2/lib/data/repositories/poem_repository_impl.dart檔案。 - 在
getPoems()函式的主體中新增下列程式碼:
poem_repository_impl.dart
// TODO: Replace YOUR_API_KEY with your API key.
var apiKey = 'YOUR_API_KEY';
const haikuCount = 5;
final url = Uri.parse(
'https://generativelanguage.googleapis.com/v1beta2/models/chat-bison-001:generateMessage?key=$apiKey');
final headers = {'Content-Type': 'application/json'};
final body = jsonEncode({
"prompt": {
"context": "You are an awesome haiku writer.",
"examples": [
{
"input": {"content": "Write a haiku about Google Photos."},
"output": {
"content":
"Google Photos, my friend\nA journey of a lifetime\nCaptured in pixels"
}
}
],
"messages": [
{"content": "Write a cool haiku for $productName"}
]
},
"candidate_count": haikuCount,
"temperature": 1,
});
try {
final response = await http.post(url, headers: headers, body: body);
if (response.statusCode == 200) {
final decodedResponse = json.decode(response.body);
String haikus = 'Here are $haikuCount haikus about $productName:\n\n';
for (var i = 0; i < haikuCount; i++) {
haikus += '${i + 1}.\n';
haikus += decodedResponse['candidates'][i]['content'] + '\n\n';
}
return haikus;
} else {
return 'Request failed with status: ${response.statusCode}.\n\n${response.body}';
}
} catch (error) {
throw Exception('Error sending POST request: $error');
}
將 YOUR_API_KEY 字串替換為您先前的 API 金鑰。
成功接收並解碼回應後,UI 中的文字小工具就會算繪生成的俳句。
6. 在行動平台執行應用程式
- 在 VS Code 中,將目標裝置設為 Android 或 iOS 裝置。
- 按一下「開始偵錯」圖示
,然後等待應用程式載入。 - 從下拉式選單中選取產品,然後選取「生成俳句!」。應用程式會顯示所選產品的俳句。

7. 在電腦平台執行應用程式
除了 Android 和 iOS,Flutter 也支援 Linux、macOS 和 Windows 等電腦平台。
在 Linux 上執行應用程式
- 在 VS Code 中,將目標裝置設為 Linux (linux-x64)。
- 按一下「開始偵錯」圖示
,然後等待應用程式載入。 - 從下拉式選單中選擇產品,然後選取「生成俳句!」。

在 macOS 上執行應用程式
如果是 macOS,由於應用程式會將 HTTP 要求傳送至後端,因此您需要設定適當的權利。詳情請參閱「Entitlements and the App Sandbox」。
如要在 macOS 上執行應用程式,請按照下列步驟操作:
- 在
step3/macos/Runner/DebugProfile.entitlements和step3/macos/Runner/Release.entitlements檔案中,新增下列程式碼:
DebugProfile.entitlements | Release.entitlements
<key>com.apple.security.network.client</key>
<true/>
- 在 VS Code 中,將目標裝置設為 macOS (darwin)。
- 按一下「開始偵錯」圖示
,然後等待應用程式載入。 - 從下拉式選單中選擇產品,然後選取「生成俳句!」。

在 Windows 上執行應用程式
- 在 VS Code 中,將目標裝置設為 Windows (windows-x64)。
- 按一下「Start debugging」圖示
,然後等待應用程式載入。 - 從下拉式選單中選擇產品,然後選取「生成俳句!」。

8. 在網頁平台上執行應用程式
您也可以為 Flutter 應用程式新增網頁支援。根據預設,Flutter 應用程式會自動啟用網頁平台,因此您只需要啟動即可。
如要在網頁平台上執行應用程式,請按照下列步驟操作:
- 在 VS Code 中,將目標裝置設為 Chrome (web-javascript)。
- 按一下「開始偵錯」
,然後等待應用程式在 Google Chrome 中載入。 - 從下拉式選單中選擇產品,然後選取「生成俳句!」。

9. 恭喜
您建構了完整堆疊的應用程式,可生成有關 Google 產品的俳句!雖然這款應用程式只會為特定 Google 產品生成俳句,但你可以輕鬆變更提示詞,生成所需文字。現在您已瞭解如何使用 PaLM API,可以運用 LLM 的強大功能建構出色的應用程式!