因為一直在修改和測試功能,觸發 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% :
不過可能是東京的 Server 太多人用,不管怎麼調都還是顯示資源耗盡,後來直接換到新加坡的 Server 才解決。
今天做了不少的程式碼調整,原本在 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_TYPE
和 TRANSPORT_TYPE
,方便後續在 JSON 轉換或驗證時使用索引存取。這樣的設計不僅提升了模型的可讀性,也讓型別在其他模型(如 QueryPayload
)中得以重複使用,減少重複定義。
itineraryjson2model
新增的 itineraryjson2model(json_str)
函數是這次的核心亮點之一。它負責將原始 JSON 字串轉換為符合 AgentResponse
的 Pydantic 模型,並進行以下處理:
type
與 transportType
轉換為對應的 Literal 字串latLng
子模型trip.name
映射為 title
這個函數讓前端傳入的 JSON 能夠被後端安全地解析並轉換為強型別模型,為後續的 session 建立與修改提供穩固基礎。
這次的調整不只是程式碼上的優化,更是對整體資料流設計的一次升級。透過型別抽象、時間處理強化、JSON 轉換模組化,以及錯誤記錄機制的導入,整個行程處理流程變得更清晰、更安全,也更容易維護。