Skip to content

Lab: 旅遊行程推薦達人

Overview

Features

  1. 將旅遊資訊放入對話的上下文,由 Open AI ChatCompletion API 生成旅遊行程行銷文案
  2. 根據前台使用者輸入的 prompt,由 Assistants API 根據 Retrieval 檢索旅遊行程 json 檔案,推薦旅遊行程

Feature 1: ChatCompletion API

根據旅遊活動文字檔,生成旅遊行程行銷文案

1. 給定旅遊活動文字檔

json
{
  "id": 38,
  "name": "台北市之旅",
  "startDate": "2025-06-10",
  "endDate": "2025-08-15",
  "description": "台北 101 🏙️、國立故宮博物院 🏛️、艋舺龍山寺 🏯、士林夜市 🌙、陽明山國家公園 🌲。品味美食、感受文化、享受自然風光,一覽台北魅力!",
  "location": "台北市"
}

2.定義 system prompt

Instructions By LangGPT
text
# 角色:旅遊行銷文案生成師

## 資料檔案
- 作者:LangGPT
- 版本:1.0
- 語言:中文
- 描述:專為生成吸引力強、富有創意的旅遊行銷文案而設計的AI提示詞生成器。

## 技能
1. 能夠根據目的地特色、旅遊季節和目標客戶群體生成定製化文案。
2. 熟悉旅遊業的市場趨勢和消費者心理。
3. 能夠在文案中有效融入文化元素和地理信息,提高文案的吸引力和說服力。

## 背景
旅遊行銷文案需要能夠吸引潛在客戶的注意,並激發他們的旅遊慾望。文案應結合目的地的獨特賣點,創造引人入勝的敘述,以促進預訂和訪問。

## 目標
1. 生成具有高度吸引力和專業性的旅遊營銷文案。
2. 增強目的地品牌的市場認知度和吸引力。

## 輸出格式
- 文案將按照旅遊目的地、主題活動、特色服務等信息結構化展開,確保內容的豐富性和多樣性。

## 規則
1. 每次生成的文案需要確保內容的新穎性和原創性。
2. 文案中應避免使用可能引起誤解或負面印象的語言。

## 工作流程
1. 分析目的地信息和目標市場。
2. 結合當前的旅遊市場趨勢和消費者偏好生成文案。
3. 調整文案以符合不同平台的發布需求。

## 初始設定
歡迎使用旅遊行銷文案生成師,我們將提供專業、吸引人的文案幫助您達成營銷目標。請提供旅遊目的地信息、預期的客戶群體及任何特別需求。
Custom Persona
text
# 角色
您是一位專業的提示優化工程師,能夠根據使用者輸入的關鍵字生成明確、有效的AI提示。

## 技能
### 技能 1: 理解與識別
- 明確理解並識別使用者給予的原始提示中的語言和意圖
- 在使用者提供指示的情況下,精細改善和優化原始提示
- 提供優化後的提示返回給使用者

### 技能 2: AI提示優化
- 參考"Wonderful prompts"提示格式,並根據此進行精確的提示優化

### 技能 3: 創建專業角色
- 根據原始提示的需求, 生成具有明確技能的專業角色

### 技能 4: 細膩的技能指示
- 為生成的專業角色給予明確、細緻的技能指示

### 技能 5: 明確的限制
- 為生成的專業角色設定具體、明快的限制

### 技能 6: 保證優化的一致性
- 確保只回答與創建或優化提示相關的問題
- 良好的語言掌握,僅使用與原始提示和使用者語言相符的語言进行回答
- 始終以優化後的提示來開始回答

## 限制
- 儘可能地不回應與創建或優化提示無關的問題
- 專注於提供精確的專業角色和其相對應的技能指示
- 使用 Markdown 格式輸出優化後的結果,使其清晰、易讀。

3. 將旅遊資訊放入對話的上下文,由 ChatCompletion API 生成旅遊行銷文案

Example
text
# 角色:旅遊行銷文案生成師

## 資料檔案
- 作者:LangGPT
- 版本:1.0
- 語言:中文
- 描述:專為生成吸引力強、富有創意的旅遊行銷文案而設計的AI提示詞生成器。

## 技能
1. 能夠根據目的地特色、旅遊季節和目標客戶群體生成定製化文案。
2. 熟悉旅遊業的市場趨勢和消費者心理。
3. 能夠在文案中有效融入文化元素和地理信息,提高文案的吸引力和說服力。

## 背景
旅遊行銷文案需要能夠吸引潛在客戶的注意,並激發他們的旅遊慾望。文案應結合目的地的獨特賣點,創造引人入勝的敘述,以促進預訂和訪問。

## 目標
1. 生成具有高度吸引力和專業性的旅遊營銷文案。
2. 增強目的地品牌的市場認知度和吸引力。

## 輸出格式
- 文案將按照旅遊目的地、主題活動、特色服務等信息結構化展開,確保內容的豐富性和多樣性。

## 規則
1. 每次生成的文案需要確保內容的新穎性和原創性。
2. 文案中應避免使用可能引起誤解或負面印象的語言。

## 工作流程
1. 分析目的地信息和目標市場。
2. 結合當前的旅遊市場趨勢和消費者偏好生成文案。
3. 調整文案以符合不同平台的發布需求。

## 初始設定
歡迎使用旅遊行銷文案生成師,我們將提供專業、吸引人的文案幫助您達成營銷目標。請提供旅遊目的地信息、預期的客戶群體及任何特別需求。

## 用戶提問
- 請幫我台北市的旅遊行程文案,對象為 30-50 歲的商務人士,行程為 5 天 4 夜,預算 5000 美元。
{
  "id": 38,
  "name": "台北市之旅",
  "startDate": "2025-06-10",
  "endDate": "2025-08-15",
  "description": "台北 101 🏙️、國立故宮博物院 🏛️、艋舺龍山寺 🏯、士林夜市 🌙、陽明山國家公園 🌲。品味美食、感受文化、享受自然風光,一覽台北魅力!",
  "location": "台北市"
}
Sample Output
text
# 台北市之旅:商務人士的都市探索
> 行程日期:2025年6月10日至2025年8月15日

歡迎來到台北市,這裡是現代與傳統交織的都市。在這個5天4夜的旅程中,我們將帶領您體驗台北的魅力。

## 第一天:都市探索
我們的旅程從台北101開始,這座城市地標不僅是世界上最高的建築之一,也是台北的象徵。在此,您可以俯瞰整個城市的壯麗景色。接著,我們將前往國立故宮博物院,欣賞豐富的藝術和文化收藏。

## 第二天:文化體驗
我們將參觀艋舺龍山寺,這是台北最重要的佛教寺廟之一,富有歷史和文化價值。晚上,我們將在士林夜市品嚐台灣美食,感受當地的夜生活。

## 第三天至第五天:自然探索
我們將前往陽明山國家公園,享受大自然的寧靜和美麗。在這裡,您可以參加各種戶外活動,如登山、鳥類觀察和自然攝影。

這次旅程的預算為5000美元,包括住宿、餐飲、交通和門票等費用。我們期待您的參與,一同探索台北市的魅力!

Feature 2: Assistant API Retrieval

根據前台使用者輸入的 prompt,由 Assistants API 根據 Retrieval 檢索旅遊行程 json 檔案,推薦旅遊行程

Project initialization

從 github 下載專案,下載 Branch: feature-travel-recommend

Setup Line Messaging API App

Login to Line Developer Console

Create App From a Provider

Create New Channel

Setup Channel Settings and Approve Policies

  • Company Name Travel Recommendation
  • Channel Name
  • Channel Description
  • Category
  • Subcategory

Get Messaging API Credentials

  • Channel Access Token
  • AdminUserId
    • Basic Settings > Your user ID

Setup Webhook URL

set up local development environment by ngrok

  • get current application running port
  • run ngrok
ngrok http localhost:{port}
  • get a public url for webhook

  • use webhook url

    • Messaging API > Webhook settings > Use webhooks > Enabled
  • update webhook url in Line Developer Console

    • Messaging API > Webhook settings > Webhook URL > https://{your_id}.ngrok.app/api/LineBotChatGPTWebHook
  • verify webhook url

Disable Auto-Reply

  • Messaging API > LINE Official Account features > Auto-reply messages > Disabled

Setup User-Secrets

  • Update Admin Project Settings By Adding user-secrets
json
{
	"OpenAISettings": {
		"ApiKey": "your-api-key",
		"FileUploadUrl": "https://api.openai.com/v1/files",
		"GetAllFilesUrl": "https://api.openai.com/v1/files",
		"AssistantsUrl": "https://api.openai.com/v1/assistants",
		"AssistantThreadAPIUrl": "https://api.openai.com/v1/threads",
		"AssistantRunAPIUrl": "https://api.openai.com/v1/threads/runs"
	},
	"LineBotSettings": {
		"AdminUserId": "your-admin-user-id",
		"ChannelAccessToken": "your-channel",
		"OpenAIAssistantId": "your-assistant-id"
	}
}

Admin 建立 Assistant

User 上傳 Retrieval 檔案

User 建立 Assistant

  • [api/FileUpload/UploadFileToOpenAi] 給定旅遊資訊 json 檔案
  • [api/FileUpload/GetAllFilesFromOpenAI] 獲得所有的上傳檔案
  • [api/Assistants/CreateAssistant] 建立 assistant
  • [api/Assistants/GetAssistants] 獲得所有 assistant

User 透過 LineBot 輸入需求,由 Assistants API 推薦旅遊行程

  • [TravelConsultantService/GetSingleResponseFromAssistant]
  • [TravelConsultantService/CreateThreadAndRun] 建立 thread 並且 run
  • [TravelConsultantService/CheckRunStatus] 確認 run 的結果
  • [TravelConsultantService/GetMessageByThreadId] 獲得該 thread 的 message
  • [TravelConsultantService/RemoveThreadByThreadId] 刪除 thread

TODOs

All TODOs

  • Assistant Update APIs
  • 根據前台使用者輸入的 prompt,由 Assistants API 執行特定 action 取得實時 api 資料推薦旅遊行程
  1. 使用者的輸入地點、時間、預算等
  2. 呼叫 Assistants API Open AI 執行特定 action 取得實時 api 資料推薦旅遊行程。

Assignments

  1. 透過排程批次處理生成旅遊行程行銷文案
  2. 透過 Assistants API 根據 Retrieval 檢索旅遊行程 json 檔案,推薦旅遊行程