iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0
Cloud Native

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

Day26 - AI 行程修改 API 實作與對話流程解析

  • 分享至 

  • xImage
  •  

昨天規劃了 update API,讓使用者可以與 AI 對話,依照需求修改行程。今天則是將整個流程串接完成,準備進行測試。

這個 update API 主要有兩種模式:

  1. 建立對話 Session:輸入原始行程與希望修改的方式。
  2. 使用 Session 與 Agent 討論修改細節。

建立 Session 的範例如下:

// ===== request =====
{
  "itinerary": {
    "title": "日月潭兩日遊",
    "activities": [
      {
        "type": "transport",
        "location": "日月潭",
        "startTimeUtc": "2025-09-10T08:00:00Z",
        "duration": 120,
        "endTimeUtc": "2025-09-10T10:00:00Z",
        "timeZone": "Asia/Taipei",
        "transportType": "car",
        "note": "從台灣其他城市前往日月潭",
        "childActivities": [],
        "latLng": {
          "latitude": 23.857334200000004,
          "longitude": 120.91591310000001
        },
        "placeUri": "https://maps.google.com/?cid=17012249724366005544&g_mp=CiVnb29nbGUubWFwcy5wbGFjZXMudjEuUGxhY2VzLkdldFBsYWNlEAAYBCAA"
      }
    ]
  },
  "text": "幫我加入一個中餐行程"
}
// ===== response =====
{
  "itinerary": null,
  "sessionId": "481758166535634944",
  "text": "請提供以下資訊,以便我為您加入午餐行程:\n\n1.  您希望午餐的時間是幾點?\n2.  您對午餐的餐廳類型或菜系有偏好嗎?\n3.  您希望午餐地點在哪個區域?(例如:日月潭水社碼頭附近、伊達邵碼頭附近等)"
}

接下來再使用 Session ID 繼續與 Agent 討論需求:

// ===== request =====
{
  "sessionId": "481758166535634944",
  "text": "午餐時間是中午12點,我想吃甕仔雞,地點要在日月潭水社馬頭附近"
}
// ===== response =====
{
  "itinerary": {
    "title": "日月潭兩日遊",
    "activities": [
      {
        "type": "transport",
        "location": "日月潭",
        "startTimeUtc": "2025-09-10T00:00:00Z",
        "duration": 120,
        "endTimeUtc": "2025-09-10T02:00:00Z",
        "timeZone": "Asia/Taipei",
        "transportType": "car",
        "note": "從台灣其他城市前往日月潭",
        "childActivities": [],
        "latLng": {
          "latitude": 23.857334200000004,
          "longitude": 120.91591310000001
        },
        "placeUri": "https://maps.google.com/?cid=17012249724366005544&g_mp=CiVnb29nbGUubWFwcy5wbGFjZXMudjEuUGxhY2VzLkdldFBsYWNlEAAYBCAA"
      },
      {
        "type": "restaurant",
        "location": "哖記紅茶甕缸雞(日月潭)",
        "startTimeUtc": "2025-09-10T04:00:00Z",
        "duration": 90,
        "endTimeUtc": "2025-09-10T05:30:00Z",
        "timeZone": "Asia/Taipei",
        "transportType": "car",
        "note": "享用美味的甕仔雞午餐",
        "childActivities": [],
        "latLng": {
          "latitude": 23.847028899999998,
          "longitude": 120.9321078
        },
        "placeUri": "https://maps.google.com/?cid=5738469112311302950&g_mp=CiVnb29nbGUuTWFwcy5QbGFjZXMuVjEuUGxhY2VzLkdldFBsYWNlEAAYBCAA"
      }
    ]
  },
  "sessionId": "481758166535634944",
  "text": "好的,我已為您加入日月潭的甕仔雞午餐行程。我選擇了「哖記紅茶甕缸雞(日月潭)」作為用餐地點,並預計用餐時間為90分鐘。\n\n請看修改後的行程:\n"
}

這樣就完成了一個對話功能!與之前的版本不同的是,現在特別要求 Agent 回傳行程時需加入可識別的開頭與結尾,這樣就能判斷 Agent 是在詢問問題,還是已經產生出完整行程:

- The JSON should begin with `STARTJSON` and end with "ENDJSON".

此外,也新增了刪除 Session 的 API 來清除對話。

總結 API 使用方式如下:

  • 輸入地點、日期、天數、偏好行程後,呼叫 /get API 讓 Agent 產生完整行程。
  • 輸入產生的行程與修改描述,呼叫 /update API 與 Agent 討論,重複呼叫直到 Agent 回傳完整行程表。
  • 輸入 Session ID,呼叫 /delete API 刪除對話。

至此,主要功能已開發完成!

以下是這幾天測試的花費:

https://ithelp.ithome.com.tw/upload/images/20250909/201781945vs9qpoprx.png

一天不到 30 元,應該還算合理。目前仍在三個月的試用期內,因此暫時無需付費。接下來會研究試用期結束後的免費額度。

等 App 串接完成後,就能測試整體使用效果。行程產生部分還有一些可改善之處,預計明天進行優化。


上一篇
Day25 - 打造彈性行程修改 API:客製化行程的關鍵升級
下一篇
Day27 - 提升旅遊行程解析準確性的提示設計
系列文
《30 天 Cloud Native:AI 行程規劃後端開發》29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言