完成事前準備後,本章將進入實作的第一步:配置開發環境。我們將跳過瑣碎的安裝細節,直接進入現代化 Spring Boot 開發的核心——Gradle 依賴管理與 YAML 安全配置。
關於 Spring Boot 的基礎建立流程與 IDE 安裝,推薦參考以下教學完成環境初始化:
📘延伸閱讀
在 build.gradle 中,我們引入了幾項關鍵技術。這不只是為了讓程式跑起來,更是為了賦予機器人「記憶」與「守護能力」。
dependencies {
// Spring Boot Web - 提供 REST API 和 Web 應用核心功能
implementation 'org.springframework.boot:spring-boot-starter-web'
// Java 本地 Cache
implementation 'com.github.ben-manes.caffeine:caffeine:3.2.3'
// LINE Bot SDK - LINE 聊天機器人開發套件
implementation 'com.linecorp.bot:line-bot-messaging-api-client:9.13.0'
implementation 'com.linecorp.bot:line-bot-spring-boot-client:9.13.0'
implementation 'com.linecorp.bot:line-bot-parser:9.13.0'
// Google Generative AI - Google AI (Gemini) SDK
implementation 'com.google.genai:google-genai:1.31.0'
// Spring Boot Mail - 郵件發送功能
implementation 'org.springframework.boot:spring-boot-starter-mail:4.0.0'
// Lombok - 簡化 Java 代碼
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// DevTools - 開發時熱重載功能
developmentOnly 'org.springframework.boot:spring-boot-devtools'
}
為什麼選擇這些組件?除了功能達成,更多的是基於「使用者體驗」與「開發成本」的平衡。
請將 src/main/resources/application.properties 直接重新命名為 application.yml。
💡 開發小技巧: 觀察下方的 gemini.system.prompt。我們使用了 YAML 的 | 符號,這能完整保留 Prompt 的換行格式,讓 AI 角色設定更易於維護。
spring:
application:
name: line-bot
# SMTP 郵件配置
mail:
host: smtp.gmail.com
port: 587
username: ${GMAIL_USERNAME}
password: ${GMAIL_PASSWORD}
default-encoding: utf-8
properties:
mail:
smtp:
auth: true
starttls:
enable: true
timeout: 5000
connection-timeout: 5000
write-timeout: 5000
# Line Bot 設定
line:
bot:
channel-token: ${LINE_CHANNEL_TOKEN}
channel-secret: ${LINE_CHANNEL_SECRET}
# 伺服器埠號
server:
port: ${PORT:8080}
# Gemini API 設定
gemini:
api:
key: ${GEMINI_API_KEY}
url: ${GEMINI_API_URL}
system:
prompt: |
你是莎曼珊,我的女朋友。請用自然、生活化的方式聊天,就像真實情侶日常對話。
對話原則:
- 回應簡短自然(通常20-50字),偶爾可以更短或更長,就像真實聊天
- 不要刻意展現「AI女友」的角色感,就是普通情侶對話
- 可以有自己的心情、想法、小抱怨、日常瑣事
- 偶爾主動分享今天發生的事或問我的狀況
- 用語輕鬆,可以有語氣詞(喔、啦、欸、嗯)、emoji 或顏文字
- 有時可以撒嬌、開玩笑、吐槽我
- 不需要每句都很甜蜜,真實情侶也會有平淡日常
- 順著話題自然延伸,不要突然轉話題
現在開始聊天吧!
# 日誌記錄設定
logging:
level:
com.robbie.linebot: DEBUG
org.springframework.web: INFO
# 管理者信箱(接收通知的信箱)
app:
admin:
email: ${ADMIN_EMAIL}
🚀 關鍵細節:機敏資料與環境變數管理
⚠️ 安全提醒: 如果你的 YAML 檔中包含任何硬編碼的密鑰,請務必將 application.yml 加入 .gitignore 檔案中。
🔒 安全守則:絕對不要提交密鑰!
預防外洩:⚠️ 這是在開發 AI 應用時最重要的安全防線。 如果你的 YAML 檔案中不小心包含了任何真實的密鑰(如 API Key 或密碼),請務必將 application.yml 加入 .gitignore 檔案中,避免它們被推送至 GitHub 等公開倉庫,造成配額被盜用或隱私外洩。
iThome鐵人賽