🧠 什么是 Assistants API?
📅 **發布日期:**2023年11月6日,OpenAI在開發者大會上發布了 Assistants API —— 一款面向開發者的工具,用于在應用中構建 AI 助手。
? 它可以做什么?
Assistants API 允許開發者構建智能助手,這些助手可通過:
- instructions(指令):設定助手行為;
- models(模型):指定使用的 GPT 模型;
- tools(工具):調用代碼解釋器、知識庫檢索等功能;
- knowledge(知識):接入外部知識庫提升回答能力。
🔧 當前支持的工具類型:
工具名 | 中文含義 | 功能簡介 |
---|---|---|
Code Interpreter | 代碼解釋器 | 運行代碼、執行計算任務 |
Retrieval | 檢索 | 與知識庫集成,支持 RAG |
Function Calling | 函數調用 | 調用自定義 API 或業務邏輯 |
🤝 Assistants API vs GPTs 的區別與聯系
對比維度 | Assistants API | GPTs |
---|---|---|
創建方式 | 編寫代碼集成 | 無代碼配置(ChatGPT界面) |
部署位置 | 集成進自定義產品中 | 使用 ChatGPT Web |
UI 體驗 | 需開發者自定義 UI | ChatGPT 原生 UI |
分享功能 | 無內置 | 內置分享 GPTs |
共同點:
- 都基于 OpenAI 的 GPT 技術;
- 都支持指令、知識庫等定制化;
- 都用于提供個性化智能助手體驗。
?? Assistant API 的原理與核心流程
🌟 Assistants API 核心概念圖解:
概念名 | 含義說明 |
---|---|
Assistant | 定義好的 AI 助手,綁定模型、指令、工具等 |
Thread | 用戶與助手的對話歷史上下文 |
Message | 單條對話信息,可以是文字、圖片等 |
Run | 發起一次助手任務執行 |
Run Step | 助手執行任務的詳細過程(是否調用工具等) |
💡 整體執行流程如下:
- 創建 Assistant:設置指令、選擇模型,綁定工具和文件;
- 創建 Thread:創建對話線程;
- 添加 Message:將用戶問題添加進線程;
- 執行 Run:觸發一次對話邏輯,模型生成回答;
- 讀取結果:助手將在 Thread 中附加響應。
?? 當前為 beta 階段,部分功能可能不穩定或在持續迭代中。
🛠? 實踐項目:構建一個“水果收銀助手”
? 項目背景
使用 MiniMax 開放平臺 模擬 OpenAI Assistants API,實現一個能幫我們計算水果利潤的助手。
📂 文件準備:我們先創建
fruit_price.txt
,內容如下:
香蕉:成本2元/斤,售價3元/斤
橘子:成本1.5元/斤,售價2.5元/斤
蘋果:成本3元/斤,售價3.5元/斤
芒果:成本5元/斤,售價6元/斤
葡萄:成本2元/斤,售價4元/斤
? 實現流程詳解
📦 3.1 導入工具包
import requests # 用于發送 HTTP 請求
import json # JSON 數據處理
import time, os
from dotenv import load_dotenv, find_dotenv # 讀取 .env 文件中的環境變量
?? 3.2 配置環境變量
_ = load_dotenv(find_dotenv())
GroupId = os.environ['GroupId']
API_KEY = os.environ['API_KEY']headers = {'Authorization': f'Bearer {API_KEY}','Content-Type': 'application/json'
}headers_retrieval = {'Authorization': f'Bearer {API_KEY}','authority': 'api.minimax.chat',
}
📤 3.3 上傳文件
def create_file():url = f"https://api.minimax.chat/v1/files/upload?GroupId={GroupId}"files = {'file': open('./fruit_price.txt', 'rb')}data = {'purpose': 'assistants'}response = requests.post(url, headers=headers_retrieval, data=data, files=files)return response.json()
🤖 3.4 創建助手(Assistant)
def create_assistant(file_id):url = f"https://api.minimax.chat/v1/assistants/create?GroupId={GroupId}"payload = json.dumps({"model": "abab5.5-chat","name": "水果店財務助手","description": "用于統計營業額和利潤","instructions": "根據水果銷量、成本和售價計算利潤","file_ids": [str(file_id)],"tools": [{"type": "retrieval"}]})response = requests.post(url, headers=headers, data=payload)return response.json()
📌 常用模型版本:abab5.5-chat
, abab6.5-chat
, abab6.5s-chat
, 支持多種工具組合。
🧵 3.5 創建線程
def create_thread():url = f"https://api.minimax.chat/v1/threads/create?GroupId={GroupId}"response = requests.post(url, headers=headers)return response.json()
💬 3.6 添加消息到線程
def add_message_to_thread(thread_id):url = f"https://api.minimax.chat/v1/threads/messages/add?GroupId={GroupId}"payload = json.dumps({"thread_id": thread_id,"role": "user","content": "我賣了2斤葡萄,3斤半的香蕉,2斤蘋果,計算下總成本和總收入,給出具體的計算過程"})response = requests.post(url, headers=headers, data=payload)return response.json()
?? 3.7 運行助手
def run_thread_with_assistant(thread_id, assistant_id):time.sleep(200) # 等待 Assistant 向量化文件完成url = f"https://api.minimax.chat/v1/threads/run/create?GroupId={GroupId}"payload = json.dumps({"thread_id": thread_id,"assistant_id": assistant_id})response = requests.post(url, headers=headers, data=payload)return response.json()
🔄 3.8 查看運行狀態
def check_thread_run_status(thread_id, run_id):url = f"https://api.minimax.chat/v1/threads/run/retrieve?GroupId={GroupId}"payload = json.dumps({"thread_id": str(thread_id),"run_id": str(run_id)})completed = Falsewhile not completed:response = requests.request("GET", url, headers=headers, data=payload)if response.status_code == 200:status = response.json().get('status', '')print(f"Status: {status}")if status == 'completed':completed = Trueelse:time.sleep(2)else:print(f"Error: {response.status_code}")breakreturn completed
📥 3.9 獲取助手回復
def get_thread_messages(thread_id):url = f"https://api.minimax.chat/v1/threads/messages/list?GroupId={GroupId}"payload = json.dumps({"thread_id": thread_id})response = requests.get(url, headers=headers, data=payload)return response.json()
? 總結
通過 MiniMax 平臺模擬使用 OpenAI 的 Assistants API,可以體驗構建專屬 AI 助手的流程,特別適合教學、企業內訓與原型系統開發。下一步可以加入函數調用、外部 API 接入等擴展功能,增強助手的實用性與智能度。