iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
Cloud Native

《30 天 Cloud Native:AI 行程規劃後端開發》系列 第 28

Day28 - Vertex AI 資源耗盡與模型重構心得

  • 分享至 

  • xImage
  •  

因為一直在修改和測試功能,觸發 Vertex AI 資源耗盡:

google.genai.errors.ClientError: 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Resource exhausted. Please try again later. Please refer to https://cloud.google.com/vertex-ai/generative-ai/docs/error-code-429 for more details.', 'status': 'RESOURCE_EXHAUSTED'}}"

問了 Gemini 後發現可以到 Quotas & System Limits 查使用狀況,很精彩的 Vertex AI API 達到 71.67% :

https://ithelp.ithome.com.tw/upload/images/20250911/20178194dJV9b4kQmq.png

不過可能是東京的 Server 太多人用,不管怎麼調都還是顯示資源耗盡,後來直接換到新加坡的 Server 才解決。

🧱 模型結構重構:Literal → 型別別名

今天做了不少的程式碼調整,原本在 Activity 模型中,活動類型與交通方式是直接使用 Literal[...] 進行定義。這次更新將其抽象為可重用的型別別名:

ActivityType = Literal["sightseeing", "restaurant", "shopping", "accommodation", "freeTime", "transport", "other"]
TransportType = Literal["train", "highSpeedTrain", "flight", "bus", "taxi", "bike", "walk", "car", "boat", "motorcycle", "other"]

並搭配對應的 tuple 常數 ACTIVITY_TYPETRANSPORT_TYPE,方便後續在 JSON 轉換或驗證時使用索引存取。這樣的設計不僅提升了模型的可讀性,也讓型別在其他模型(如 QueryPayload)中得以重複使用,減少重複定義。

🔄 JSON → Pydantic 模型轉換:itineraryjson2model

新增的 itineraryjson2model(json_str) 函數是這次的核心亮點之一。它負責將原始 JSON 字串轉換為符合 AgentResponse 的 Pydantic 模型,並進行以下處理:

  • typetransportType 轉換為對應的 Literal 字串
  • 將經緯度欄位整合為 latLng 子模型
  • 處理時間欄位與 duration 計算
  • trip.name 映射為 title

這個函數讓前端傳入的 JSON 能夠被後端安全地解析並轉換為強型別模型,為後續的 session 建立與修改提供穩固基礎。

🧑‍🏫 結語:為 Agent Engine 打造更穩健的資料橋接層

這次的調整不只是程式碼上的優化,更是對整體資料流設計的一次升級。透過型別抽象、時間處理強化、JSON 轉換模組化,以及錯誤記錄機制的導入,整個行程處理流程變得更清晰、更安全,也更容易維護。


上一篇
Day27 - 提升旅遊行程解析準確性的提示設計
下一篇
Day29 - 探索 Vertex AI RAG Engine:打造專屬的資料問答系統
系列文
《30 天 Cloud Native:AI 行程規劃後端開發》30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言