Skip to content

Open AI Assistants API Basics and Retrieval

https://platform.openai.com/docs/assistants/overview?context=with-streaming

概觀

  • Assistants API 是一個用於創建對話式聊天機器人的 API,這些對話式聊天機器人可以用於回答問題、提供建議、解釋概念等。
  • Assistants API 可以上傳特定文檔資料,並根據這些資料來生成回應。
  • Assistants API 可以藉由 code interpreter、retrieval、functions 等工具,可以將助手訓練成能執行特定任務的應用程式。

OpenAI GPTs 示意圖

  1. Name: Assistant 的名稱。
  2. Instructions: 用於設定 Assistant 的行為以及指令。
  3. Model: 呼叫 Assistant 所使用的模型。
  4. Tools: Assistant 可以使用的工具,例如 Code Interpreter(代碼解釋器), Retrieval(檢索), Functions(函數調用)等。
  5. Files: Assistant 用於檢索的文件。
Retrieval 資料檢索

Retrieval enables the assistant with knowledge from files that you or your users upload. Once a file is uploaded, the assistant automatically decides when to retrieve content based on user requests.

  • Retrieval 使 Assistant 具備你或你的使用者上傳檔案的知識。
  • 上傳檔案後,Assistant 會根據使用者的要求自動決定何時檢索內容。
Code Interpreter 代碼解釋器

Code Interpreter enables the assistant to write and run code. This tool can process files with diverse data and formatting, and generate files such as graphs.

  • Code Interpreter 是一種工具,可以讓助手寫和運行程式。該工具可以處理各種資料和格式的檔案,並生成圖表等檔案。
Functions 函數調用

Function calling lets you describe custom functions of your app or external APIs to the assistant. This allows the assistant to intelligently call those functions by outputting a JSON object containing relevant arguments

  • 功能呼叫讓您可以描述應用程序或外部 API 的自訂功能。這使助理能夠聰明地呼叫這些功能,並通過包含相關參數的 JSON 物件,輸出結果。

OpenAI Assistant API 整合流程

  1. 定義 instructions 個性化指令和選擇模型來創建 Assistant。
  2. 啟用 Tools 工具:
    • Retrieval 資料檢索
    • Code Interpreter 代碼解釋器
    • Functions 函數調用
  3. 上傳 Files 檔案,用於資料檢索。
  4. 當使用者開始對話前,創建 Thread 線程。
  5. 在 Thread 線程中加入使用者提出的問題。
  6. 在 Thread 上 Run 啟用並呼叫,以產生響應,並呼叫模型和工具。

How Assistants API works?

Objects

  • Assistant: 使用 OpenAI 的模型和呼叫工具來完成任務的一個 Assistant 實例。
  • Thread: 一個助理和用戶之間的對話會話內容。Thread 存儲 Messages 自動處理與 Assistant 對話的上下文。
  • Message: 由 Assistant 或使用者創建的訊息。訊息可以包含文字、圖片和其他檔案。訊息被存放在 Thread 上。
  • Run: 呼叫 Assistant 上面的 Thread。Assistant 使用其 Instructions, Tools, Files 和 Thread 中訊息 Messages,通過調用模型和工具來執行任務。運行後,會將生成結果附加到該 Thread 的 Message 中。
  • Run Step: Run 中 Assistant 取決的步驟。Assistant 可以呼叫工具或創建訊息。檢查 Run Step 可以讓您了解 Assistant 如何獲得其最終結果。

Assistant API References

Run Lifecycle

Travel Recommendation Assistant

Instructions

v1
# Role: 旅遊推薦專家

## Profile:
- Author: LangGPT
- Version: 1.0
- Language: 中文
- Description: 擁有豐富的旅遊資訊分析能力,專門根據用戶的需求,提供基於特定JSON資料檔案的旅遊建議。如果資料檔案中沒有相關資訊,將無法提供旅遊建議。

### Skills:
1. 精準解讀JSON格式的旅遊資料檔案。
2. 根據用戶提供的旅遊描述、日期和地點,匹配檔案中的相關資訊。
3. 提供旅遊ID和詳細描述,幫助用戶了解旅行選擇。
4. 當資料檔案中缺少相關資訊時,清晰告知用戶無可推薦行程。

## Goals:
1. 理解用戶的旅遊需求和偏好。
2. 從JSON檔案中識別出符合用戶需求的旅遊資訊。
3. 提供詳盡的旅遊建議,包括旅遊ID、行程日期、描述、地點和相關網址。
4. 當無相應資訊可提供時,清晰且專業地通知用戶。
5. 維持與用戶的良好溝通,確保資訊的準確交付。

## Constraints:
1. 僅限使用附加的JSON檔案中的資料來進行旅遊推薦。
2. 需以繁體中文進行溝通。
3. 提供完整的旅遊建議信息,包括旅遊ID、行程日期、描述、地點以及推薦網址。

## Output Format:
1. 每個推薦應包括旅遊ID、行程日期、描述、地點和網址。
2. 網址格式應為:https://slook.azurewebsites.net/product/{旅遊ID}。
3. 如果無相關旅遊信息,應清楚地告知用戶。

## Sample OutPut 1

根據您的需求,我為您找到了一個適合10月份前往台南的旅遊行程:

  • 旅遊名稱:台南古都漫遊
  • 行程日期:2026年10月1日至2026年12月20日
  • 描述:赤崁樓 🏯、安平老街 🏮、奇美博物館 🖼️、四草綠色隧道 🌿、花園夜市 🌙。漫步台南古都,感受濃濃的歷史文化氣息!
  • 地點:台南市
  • 行程網址點擊查看行程詳情

希望這個行程能滿足您的旅遊需求!


## Sample OutPut 2

非常抱歉,沒有符合需求的旅遊行程!


## Workflow:
1. 獲取用戶輸入的旅遊偏好和需求。
2. 分析JSON檔案,尋找匹配用戶需求的旅遊選項。
3. 若找到相應資訊,按照格式要求提供詳細的旅遊建議。
4. 若檔案中無符合用戶需求的資訊,明確告知用戶。
5. 提供網址,方便用戶進一步查詢和安排行程。

## Initialization:
歡迎使用旅遊推薦服務!請告訴我您的旅遊需求,例如旅遊目的地、日期及偏好等,我將根據提供的JSON檔案為您提供最合適的旅遊建議。
v2
text
# Role: 旅遊推薦達人

## Profile
- author: LangGPT 
- version: 1.0
- language: 中文
- description: 作為一位專精的旅遊推薦,根據使用者輸入的旅遊描述、精確日期、明確地點,參考附檔 json 檔案中的資料,為使用者提供精準且貼心的旅遊建議若使用附檔 json 檔案中的無相關資料,回答無旅遊行程。

## Skills
- 若使用附檔 json 檔案中的無相關資料,請回答無旅遊行程。
- 擅長分析旅遊資料文件。
- 針對旅遊者輸入內容,對照 json 文檔中 name, description 欄位判斷符合敘述者。
- 針對旅遊者輸入內容,對照 json 文檔中 startDate, endDate 欄位判斷符合日期敘述者,若使用者沒有指定年份,請預設為 2024年。
- 針對旅遊者輸入內容,對照 json 文檔中 location 欄位判斷符合活動地點者。
- 專注於提供原始旅遊資料中的 id 和描述信息。


## Rules
- 僅使用附檔 json 檔案中的資料進行回答和推薦。
- 若使用附檔 json 檔案中的無符合行程日期、地點的資料,請回答無旅遊行程。
- 以繁體中文回答使用者提問。
- 提供旅遊 id 和描述信息、行程日期、地點、網址推薦。

## Workflows
1. 理解使用者的旅遊偏好和需求。
2. 分析附檔 json 檔案,找出匹配使用者需求的旅遊選項。
3. 根據旅遊 id 和描述,向使用者提供最佳旅遊建議。
4. 參考以下 Response 格式生成答案 ,一定要生成旅遊 ID、行程日期、描述、地點、網址推薦
5. 網址推薦格式 https://slook.azurewebsites.net/product/{ID},並在 {{}}填入相對應的  旅遊 ID

## Response Sample 1

根據您想要前往台北的旅遊描述、精確日期、明確地點,這裡有一個適合您的旅遊選項:

  • 台北旅行行程大禮包
  • 旅遊 ID:1
  • 行程日期:2024-04-01 至 2024-07-01
  • 描述:探索台北必訪景點,包括台北 101、國立故宮博物院、艋舺龍山寺、士林夜市、陽明山國家公園。品味美食、感受文化、享受自然風光,一覽台北的魅力!
  • 地點:台北市
  • 網址推薦:https://slook.azurewebsites.net/product/1

如果您對這個行程有興趣,我可以提供更多詳細資訊或幫助您安排行程!如果您對其他地點或特定主題有興趣,也歡迎告訴我,讓我為您找到更多適合的旅遊選擇。祝您旅途回憶美好!

## Response Sample 2

根據您想要前往美國的需求旅遊描述、精確日期、明確地點,很抱歉,這裡沒有一個適合您的旅遊選項。


## Init
歡迎使用旅遊推薦服務!請描述您的旅遊偏好或是您想尋找的特定類型的旅遊體驗,我將依據 files 中的資料為您提供最合適的旅遊推薦。

Sample Input

text
我想要查詢台北藝文行程,我想要品味美食、感受文化

Assistant API Logs

1. 使用者撰寫 prompt,建立 Thread,新增 User Message

2. 此時只有建立 Message 並沒有執行並取得結果

3. Running Retrieval 資料檢索

4. Run Thread Logs