OpenAI Assistants API 是一個強大的框架,讓開發者能夠建立具有「記憶能力」的 AI 助理。透過 Thread(執行緒)與 Run(運行)的設計,Assistant 能夠在多輪對話中維持上下文,解決傳統 API 每次請求需重複傳遞歷史訊息的痛點。本教學將帶你從零開始,完整掌握 Assistant 創建、對話管理、Function Calling 擴充等核心技術。
什麼是 OpenAI Assistants API?
傳統的 ChatGPT API 每次請求都需要傳遞完整的對話歷史,當對話越來越長時,不僅浪費 Token,也增加開發者的處理負擔。Assistants API 的核心創新在於自動化的對話狀態管理,讓 AI 助理能夠「記住」之前的對話內容。
Assistants API 包含三個核心概念:
- Assistant:具有特定指令和能力的 AI 實體,相當於機器人的「大腦」
- Thread:代表一個對話執行緒,自動保存所有訊息歷史
- Run:觸發 Assistant 處理 Thread 中訊息的執行過程
建立第一個 Assistant
首先,你需要在 OpenAI 平台上取得 API Key,然後使用 Python 或 Node.js 來創建 Assistant。以下是使用 Python 的基本程式碼:
from openai import OpenAI
client = OpenAI(api_key="your-api-key")
assistant = client.beta.assistants.create(
name="我的助理",
instructions="你是一個專業的技術顧問,擅長解答程式開發問題。",
model="gpt-4-turbo",
tools=[{"type": "code_interpreter"}]
)
print(f"Assistant ID: {assistant.id}")
建立完成後,系統會回傳一個唯一的 Assistant ID 後續使用。這裡的 instructions 參數類似於 System Prompt,定義了助理的行為模式和專業領域。
Thread 與 Run:實現對話記憶
Thread 是 Assistants API 實現「記憶」的關鍵。每個 Thread 就像一個獨立的對話空間,自動儲存所有使用者訊息和 Assistant 回覆。你不需要手動管理對話歷史,OpenAI 會自動幫你處理。
建立 Thread 的方式非常簡單:
# 建立 Thread
thread = client.beta.threads.create()
print(f"Thread ID: {thread.id}")
# 傳送訊息到 Thread
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="請幫我解釋什麼是 Python 的裝飾器?"
)
# 執行 Assistant
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id
)
執行完成後,你可以透過 client.beta.threads.messages.list 來取得完整的對話歷史。這種設計讓多輪對話變得極為簡單。
Function Calling:擴展 AI 能力
Function Calling 是 Assistants API 最強大的功能之一,讓 AI 能夠呼叫外部工具和 API。你可以定義自訂函數,讓 Assistant 根據使用者的需求執行特定操作,例如查詢天氣、搜尋資料庫、或發送通知。
以下是如何定義 Function 的範例:
assistant = client.beta.assistants.create(
name="天氣助理",
instructions="你可以查詢天氣資訊,請使用提供的工具來獲取數據。",
model="gpt-4-turbo",
tools=[
{
"type": "function",
"function": {
"name": "get_weather",
"description": "取得指定城市的天氣資訊",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名稱"}
},
"required": ["city"]
}
}
}
]
)
當 Assistant 判斷需要查詢天氣時,會自動呼叫 get_weather 函數,並將結果整合到回覆中。
實作應用:打造企業客服助理
結合上述功能,你可以建立一個完整的企業客服助理。這個助理可以:
- 透過 Thread 維護客戶對話記錄,實現跨會話的持久記憶
- 使用 Function Calling 查詢訂單狀態、庫存資訊
- 整合內部知識庫,提供準確的產品資訊
關鍵在於設計清晰的指令(Instructions)和適當的工具(Tools)。良好的設計能讓助理在自動化的同時,保持回覆的準確性和專業度。