Assistant API的原理及應用


🧠 什么是 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 APIGPTs
創建方式編寫代碼集成無代碼配置(ChatGPT界面)
部署位置集成進自定義產品中使用 ChatGPT Web
UI 體驗需開發者自定義 UIChatGPT 原生 UI
分享功能無內置內置分享 GPTs

共同點:

  • 都基于 OpenAI 的 GPT 技術;
  • 都支持指令、知識庫等定制化;
  • 都用于提供個性化智能助手體驗。

?? Assistant API 的原理與核心流程

🌟 Assistants API 核心概念圖解:

概念名含義說明
Assistant定義好的 AI 助手,綁定模型、指令、工具等
Thread用戶與助手的對話歷史上下文
Message單條對話信息,可以是文字、圖片等
Run發起一次助手任務執行
Run Step助手執行任務的詳細過程(是否調用工具等)

💡 整體執行流程如下:

  1. 創建 Assistant:設置指令、選擇模型,綁定工具和文件;
  2. 創建 Thread:創建對話線程;
  3. 添加 Message:將用戶問題添加進線程;
  4. 執行 Run:觸發一次對話邏輯,模型生成回答;
  5. 讀取結果:助手將在 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 接入等擴展功能,增強助手的實用性與智能度。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913438.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913438.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913438.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《北京市加快推動“人工智能+醫藥健康“創新發展行動計劃(2025-2027年)》深度解讀

引言 隨著新一輪科技革命和產業變革的深入推進,人工智能技術與醫藥健康的深度融合已成為全球科技創新的重要方向。北京市于2025年7月正式發布《北京市加快推動"人工智能+醫藥健康"創新發展行動計劃(2025-2027年)》,旨在充分發揮北京在人工智能技術策源、頭部醫療…

DPDK 關于 IOMMU 設置

一、IOMMU 基礎概念 定義:IOMMU(Input/Output Memory Management Unit)即輸入 / 輸出內存管理單元,它是一種硬件機制,用于將設備發出的內存訪問請求進行地址轉換。在現代計算機系統中,它在設備與內存之間起到橋梁作用,提供內存保護和設備隔離功能。作用: 內存保護:防止…

pg_class 系統表信息

SELECT c.relname, c.relkind, CASE WHEN c.relkind r THEN 普通表 WHEN c.relkind p THEN 分區表 WHEN c.relkind f THEN 外表 WHEN c.relkind v THEN 視圖 WHEN c.relkind m THEN 物化視圖 ELSE 其他 END as table_type_desc FROM pg_class c JOIN pg_namespace …

【C++開源庫使用】使用libcurl開源庫發送url請求(http請求)去下載用戶頭像文件(附完整源碼)

目錄 1、libcurl介紹 2、libcurl庫源碼下載與編譯 3、調用libcurl庫的API接口實現http/https請求發送,實現頭像文件下載 4、發送圖片url下載圖片文件的完整代碼展示 5、使用libcurl發送https請求時可能會遇到的兩個錯誤 在某SDK項目中,第三方…

在Docker容器中更改,保存為新的鏡像

# 1. 進入原始容器 docker run -it --name mydev ubuntu:20.04 /bin/bash# 2. 在容器內做大量修改 apt update && apt install -y python3 mkdir /app && echo print("Hello from modified container") > /app/app.py# 3. 退出容器 exit# 4. 保存…

【網絡與爬蟲 13】智能偽裝:Scrapy-Fake-UserAgent反檢測技術實戰指南

【網絡與爬蟲 13】智能偽裝:Scrapy-Fake-UserAgent反檢測技術實戰指南 關鍵詞:Scrapy-Fake-UserAgent、反爬蟲、智能偽裝、瀏覽器指紋、用戶代理、爬蟲檢測規避、自動更新UA 摘要:本文深入解析Scrapy-Fake-UserAgent庫的工作原理與應用技巧&a…

前端開發常見問題

前端開發常見問題技術文章大綱 引言 簡要介紹前端開發在當前技術環境中的重要性,以及開發者常遇到的挑戰和痛點。 瀏覽器兼容性問題 不同瀏覽器對CSS、JavaScript的支持差異常見的Polyfill和轉譯工具(如Babel、PostCSS)如何利用Can I Use…

文心開源大模型ERNIE-4.5-0.3B-Paddle私有化部署保姆級教程及技術架構探索

一起來輕松玩轉文心大模型吧👉一文心大模型免費下載地址: https://ai.gitcode.com/theme/1939325484087291906 前言 2025年6月30日,百度正式開源文心大模型4.5系列(ERNIE 4.5),涵蓋10款不同參數規模的模型&#xff0…

【操作系統】內存管理

要求: 1、在該實驗中,采用可變分區方式完成對存儲空間的管理(即存儲空間的分配與回收工作)。 2、設計用來記錄主存使用情況的數據結構:已分區表和空閑分區表。 3、在設計好的數據結構上設計一個主存分配算法&#xff0…

【算法筆記】5.LeetCode-Hot100-矩陣專項

1. 矩陣置零(t73) 中等難度,題目示例如下: 給定一個 m x n 的矩陣,如果一個元素為 0 ,則將其所在行和列的所有元素都設為 0 。請使用原地算法。示例 1: 輸入:matrix [[1,1,1],[1,0,1],[1,1,1]] 輸出&…

ORACLE 日常查詢

一. 查詢索引相關1. 查詢索引所在的表空間,單個索引的大小SELECT ui.table_name, us.segment_name AS index_name, us.tablespace_name,ROUND(SUM(us.bytes) / 1024 / 1024 / 1024, 2) AS total_size_GB FROM dba_indexes ui JOIN dba_segments us ON ui.index_name…

【DeepSeek實戰】17、MCP地圖服務集成全景指南:高德、百度、騰訊三大平臺接入實戰

引言:為什么MCP是地圖服務的下一代革命? 在數字化時代,位置服務已成為電商、出行、物流等行業的核心基礎設施。但單一地圖服務商的局限性日益凸顯:某外賣平臺因高德地圖API突發故障導致30分鐘訂單配送延遲,某打車軟件因百度地圖路線規劃偏差引發用戶投訴激增,某物流企業…

設計模式之【動態代理】

目錄 動態代理中存在的概念 JDK動態代理 代理工廠【ProxyFactory】實現【InvocationHandler】 目標類的接口【TargetInterface】 目標類【Target】實現了接口 測試類【JDKDynamicProxyTest】 CGLIB動態代理 添加Maven依賴 代理工廠【ProxyFactory】實現【MethodInterc…

【Linux驅動-快速回顧】一次性快速回顧TTY體系知識點(新手友好)

我將遵循一條嚴格的“問題驅動”和“演進”的邏輯線索來構建整個TTY知識體系。每引入一個新概念,都是為了解決前一個階段出現的問題。這樣,你不僅能知道“是什么”,更能深刻理解“為什么是這樣設計的”。 第〇階段:最原始的需求 …

深入淺出:讓機器聽懂世界的耳朵——梅爾頻率倒譜系數(MFCCs)

深入淺出:讓機器聽懂世界的耳朵——梅爾頻率倒譜系數(MFCCs) 在人工智能的浪潮中,語音識別、聲紋支付、音樂推薦等技術早已融入我們的日常生活。你是否曾好奇,計算機是如何理解并區分各種復雜的聲音信號的?…

Ubuntu22.04安裝/使用Gazebo時踩的一些坑

首先,本人原本打算安裝gazebo11的,因為官方好像不支持ubuntu22.04,所以要通過PPA和ROS2 humble來安裝,安裝過程跟著教程來的,也就是下面這篇 ubuntu22.04安裝gazebo11(ROS2 Humble)-CSDN博客 …

CPT203-Software Engineering: Introduction 介紹

目錄 1.專業名詞定義 1.1計算機軟件的定義 1.2軟件系統的定義 1.3軟件工程的定義 2.軟件的失敗與成功 2.1 失敗 2.2 成功 3.軟件開發 Professional software development 3.1 分類 3.2 專業軟件開發 professional software development 3.3專業軟件開發產品特性 3.4…

診斷工程師進階篇 --- 車載診斷怎么與時俱進?

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

奧特曼論人工智能、OpenAI與創業

來自Y Combinator的YouTube視頻,展示了OpenAI首席執行官薩姆奧特曼分享的深刻見解。他討論了OpenAI從一個看似瘋狂的通用人工智能(AGI)夢想,如何發展成為一個全球性的現象。奧特曼強調了早期決策的關鍵性、吸引頂尖人才的策略&…

React Ref使用

受控與非受控組件 Ref 1.獲取原生dom 類組件中&#xff1a;在componentDidMount方法內使用document.getElementById的方法獲取到dom元素 1 目標dom增加ref屬性 設置為字符串 <h2 reftitleref></h2>function changeRef(){this.refs.titleref.innerHtml }2 函數組件…