本文檔適用於 v0.4.x 版本的 PAI-RAG 服務,提供完整的 API 介面定義、請求樣本與核心概念說明,旨在協助開發人員快速、高效地將 PAI-RAG 的能力整合到自己的應用中。
準備工作:擷取服務訪問地址和Token
通過API介面調用RAG服務前,需要擷取RAG服務的訪問地址和認證令牌。所有 API 請求都需要在 HTTP Authorization 中攜帶EAS_TOKEN。
在下文API介面說明中出現的$EAS_SERVICE_URL和$EAS_TOKEN是環境變數,使用前需要先設定。擷取方式如下:
登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入EAS。
-
單擊目標服務名稱,然後在基本信息地區,單擊查看调用信息。
-
在调用信息頁面,擷取公網/VPC調用地址(EAS_SERVICE_URL)和Token(EAS_TOKEN)。
重要-
請將EAS_SERVICE_URL末尾的斜杠(/)刪除。
-
使用公網調用地址:調用用戶端支援訪問公網。
-
使用VPC調用地址:調用用戶端必須與RAG服務位於同一個專用網路內。
-
擷取到EAS_SERVICE_URL和EAS_TOKEN後,建議將它們設定為環境變數,方便後續API調用:
export EAS_SERVICE_URL="您的服務地址"
export EAS_TOKEN="您的Token"
設定環境變數後,後續的curl命令可以直接使用$EAS_SERVICE_URL和$EAS_TOKEN引用這些值。
Chat API
Chat API 是一個支援智能代理(Agent)和檢索增強產生(RAG) 的流式聊天介面。它擴充了 OpenAI 相容的聊天協議,支援知識庫檢索、多步驟推理、外部工具調用等進階功能,適用於構建智能對話系統、知識問答機器人等情境。
推薦調用Chat的方式是配置一個屬於你的Chat應用,假設應用程式名稱為my_assistant,並選擇合適的知識庫、連網搜尋配置。
POST $EAS_SERVICE_URL/v1/chat/completions
功能描述: 發起一次對話請求。通過指定 model 參數來調用一個預先配置好的 Chat 應用,該應用可能關聯了知識庫、搜尋工具等。
請求體 (application/json)
|
欄位 |
類型 |
是否必填 |
描述 |
|
|
String |
是 |
您建立的 Chat 應用程式名稱。 |
|
|
Array |
是 |
對話歷史列表,遵循 OpenAI 格式。 |
|
|
Boolean |
否 |
是否以流式模式返迴響應,預設為 |
響應體
與 OpenAI chat.completions 介面的響應格式相容。
OpenAI用戶端調用樣本:
from openai import OpenAI
import os
EAS_ENDPOINT = os.getenv("EAS_SERVICE_URL")
EAS_TOKEN = os.getenv("EAS_TOKEN")
client = OpenAI(
base_url=EAS_ENDPOINT,
api_key=EAS_TOKEN
)
response = client.chat.completions.create(
model="my_assistant", # 替換為真實的Chat應用程式名稱
messages=[
{"role": "user", "content": "你好"}
],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta.content)
知識庫管理員
建立知識庫
建立一個新的知識庫,並可以指定其資料分塊、嵌入和檢索等配置。
POST $EAS_SERVICE_URL/v1/config/knowledgebases
請求 |
|
要求標頭(Headers) |
|
|
Content-Type 請求內容類型。此參數必須設定為 |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
請求體(Request Body) |
|
|
name 知識庫名稱。 |
|
|
description 知識庫的描述資訊。 |
|
|
embedding_model 嵌入模型的名稱或路徑。支援本地或遠程模型。 |
|
|
chunk_config 資料分塊配置。 |
|
|
retrieval_config 檢索策略配置。 |
響應樣本
擷取知識庫列表
擷取當前服務下的知識庫列表,支援分頁。
GET $EAS_SERVICE_URL/v1/config/knowledgebases?page=1&size=10
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL查詢參數(Query parameters) |
|
|
page 頁碼,預設值為 |
|
|
size 每頁返回的數量,預設值為 |
響應樣本
擷取指定知識庫(通過kb_id)
擷取指定 ID 的知識庫的詳細資料。
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
響應樣本
修改知識庫
修改一個已存在的知識庫。
PUT $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}
請求 |
|
要求標頭(Headers) |
|
|
Content-Type 請求內容類型。此參數必須設定為 |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
請求體(Request Body) |
|
|
請求體參數同建立知識庫介面,包括 name、description、embedding_model、chunk_config、retrieval_config 等欄位。 |
響應樣本
刪除指定知識庫
刪除一個指定的知識庫及其包含的所有檔案和索引。此操作無法復原,請謹慎使用。
DELETE $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
響應樣本
檔案管理
上傳檔案
向指定知識庫上傳一個或多個檔案。這是一個非同步介面,會立即返迴文件資訊,並在後台進行解析和索引。支援的檔案格式包括 PDF、DOCX、TXT 等。
POST $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files
請求 |
|
要求標頭(Headers) |
|
|
Content-Type 請求內容類型。此參數必須設定為 |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
請求體參數(Request Body) |
|
|
files 要上傳的檔案(支援 PDF/DOCX/TXT 等)。可以一次上傳多個。 |
響應樣本
列出檔案
列出指定知識庫中的檔案,支援按檔案名稱和狀態進行篩選和分頁。
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
URL查詢參數(Query parameters) |
|
|
query 根據檔案名稱進行模糊比對。 |
|
|
status 根據檔案處理狀態篩選。不傳為全部,可選值: |
|
|
page 頁碼,預設值為 1。 |
|
|
size 每頁返回的數量,預設值為 10。 |
響應樣本
擷取單個檔案資訊
擷取單個檔案的詳細資料,常用於輪詢檔案處理狀態。
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
|
file_id 檔案的唯一識別碼。 |
響應樣本
重新處理檔案
觸發對一個檔案(例如處理失敗或內容已更新的檔案)的重新處理。這是一個非同步作業,會建立一個新的處理任務,並將檔案狀態重設為 pending。
PUT $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}
請求 |
|
要求標頭(Headers) |
|
|
Content-Type 請求內容類型。此參數必須設定為 |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
|
file_id 檔案的唯一識別碼。 |
響應樣本
刪除檔案
從知識庫中刪除一個指定的檔案及其關聯的資料區塊和索引。
DELETE $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
|
file_id 檔案的唯一識別碼。 |
響應樣本
資料分塊管理
查看檔案分塊
查看指定檔案被切分後的資料區塊列表,支援分頁。
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/chunks?page=1&size=10
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
|
file_id 檔案的唯一識別碼。 |
|
URL查詢參數(Query parameters) |
|
|
page 頁碼,預設值為 1。 |
|
|
size 每頁返回的數量,預設值為 10。 |
響應樣本
更新單個 Chunk
更新單個資料區塊的內容或狀態。例如,可以手動修正切分不佳的文本,或禁用某個資料區塊使其不被檢索。
PUT $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/chunks/{chunk_id}
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
|
Content-Type application/json |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
|
file_id 檔案的唯一識別碼。 |
|
|
chunk_id 資料區塊的唯一識別碼。 |
|
請求體(Request Body) |
|
|
text 更新後的資料區塊常值內容。 |
|
|
active 是否啟用該資料區塊。設定為 false 後,該資料區塊將不會被檢索到。 |
響應樣本
取消某個Chunk,不被檢索
同更新操作,active欄位設為false即可。
中繼資料管理
中繼資料可以為您的文檔增加結構化資訊,從而在檢索時實現更精確的過濾,例如:只檢索 IT 部門 2024 年之後發布的文檔。
知識庫級中繼資料欄位定義
為知識庫定義一個中繼資料欄位的 Schema,包括欄位ID、名稱、實值型別等。
POST $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/metadata
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
|
Content-Type application/json |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
請求體(Request Body) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
|
name 欄位的顯示名稱。3~50 字元。 |
|
|
value_type 欄位的實值型別。enum類型,包含 string, number, datetime 三種類型。 |
|
|
description 欄位的描述資訊。 |
響應樣本
列出中繼資料
列出該知識庫下所有已定義的中繼資料欄位。
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/metadata
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
響應樣本
刪除中繼資料
刪除該知識庫下指定中繼資料欄位。
DELETE $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/metadata/{metadata_id}
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
|
metadata_id 中繼資料id。 |
響應樣本
檔案級中繼資料綁定
為指定檔案綁定具體的中繼資料值。注意:此介面為覆蓋式更新,每次調用都會完全替換該檔案上的所有中繼資料。為避免資料丟失,推薦的操作流程是:先通過 GET 擷取檔案現有中繼資料,在本地修改後,再通過此介面提交完整的中繼資料列表。
POST $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/metadata
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
|
Content-Type application/json |
|
URL路徑參數(Path parameters) |
|
|
kb_id 知識庫的唯一識別碼。 |
|
|
file_id 檔案的唯一識別碼。 |
|
請求體(Request Body) |
|
|
entries 中繼資料條目列表。 |
響應樣本
檢索 API
混合檢索(文本 + 向量 + 中繼資料過濾)
對指定的知識庫執行一次獨立的檢索操作,支援文本、向量和中繼資料過濾的混合檢索。
POST $EAS_SERVICE_URL/v1/retrieval
請求 |
|
要求標頭(Headers) |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
|
Content-Type application/json |
|
請求體(Request Body) |
|
|
query 用於檢索的查詢文本。 |
|
|
knowledge_id 要檢索的目標知識庫ID。 |
|
|
user_id 使用者的唯一標識,用於個人化或日誌追蹤。 |
|
|
metadata_condition 中繼資料過濾條件,包含 logical_operator(邏輯運算子:and/or)和 conditions(條件列表)。 |
|
|
retrieval_setting 本次檢索的臨時配置,會覆蓋知識庫的預設配置。 |
響應樣本
配置Code沙箱
建立或更新沙箱
請求 |
|
要求標頭(Headers) |
|
|
Content-Type 請求內容類型。此參數必須設定為 |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
請求體(Request Body) |
|
|
type 沙箱類型,當前僅支援阿里雲FC沙箱,取值 |
|
|
aliyun_id 阿里雲帳號ID。 |
|
|
interpreter_id 代碼解譯器ID。 |
|
|
enabled 是否開啟沙箱功能。 |
查詢當前沙箱配置
curl -X GET "$EAS_SERVICE_URL/api/config/code_sandbox"
配置 FAQ
基礎路徑:/v1/config/apps(應用配置)、/v1/faq-retrieval(FAQ 檢索)
所有請求需攜帶鑒權(如 Authorization: Bearer YOUR_BEARER_TOKEN),並將 {EAS_SERVICE_URL} 替換為實際服務地址。
啟用並配置 FAQ
通過更新應用介面開啟 FAQ 並寫入配置。
PUT {EAS_SERVICE_URL}/v1/config/apps/{id}
請求 |
|
要求標頭(Headers) |
|
|
Content-Type 請求內容類型。此參數必須設定為 |
|
|
Authorization 請求身份認證。EAS_TOKEN |
|
URL路徑參數(Path parameters) |
|
|
id 應用的主鍵 ID,可通過查詢應用介面獲得。 |
|
請求體(Request Body) |
|
|
app_id 應用的 APP ID。 |
|
|
description 應用描述。 |
|
|
model_id 基模型。 |
|
|
kb_ids 應用使用的知識庫,可多選。 |
|
|
enable_faq 是否啟用FAQ。 |
|
|
faq_config FAQ 配置。 |
查詢應用
curl -X GET "$EAS_SERVICE_URL/v1/config/apps?app_id=your_app_id" \
-H "Authorization: Bearer $EAS_TOKEN"
其中:app_id 擷取方式如下。在控制台的應用配置頁面,選擇Chat應用頁簽,查看App ID必要欄位擷取應用ID值(如chatbot),將其作為請求中app_id參數的值。
建立單條 FAQ
curl -X POST "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs" \
-H "Authorization: Bearer $EAS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"question": "如何重設密碼?",
"answer": "請點擊登入頁的「忘記密碼」按提示操作。",
"active": true
}'
查詢 FAQ 列表(分頁)
curl -X GET "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs?page=1&size=100" \
-H "Authorization: Bearer $EAS_TOKEN"
更新單條 FAQ
curl -X PUT "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs/{faq_item_id}" \
-H "Authorization: Bearer $EAS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"question": "如何修改密碼?",
"answer": "登入後進入「帳號設定」-「安全」中修改。",
"active": true
}'
刪除單條 FAQ
curl -X DELETE "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs/{faq_item_id}" \
-H "Authorization: Bearer $EAS_TOKEN"
批量上傳 FAQ 檔案(Excel)
使用 multipart/form-data:上傳欄位名為 files(可多檔案),可選表頭與列映射 table_config(JSON 字串)。支援 .xlsx、.xls。
curl -X POST "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faq-files" \
-H "Authorization: Bearer $EAS_TOKEN" \
-F 'files=@/path/to/faq.xlsx' \
-F 'table_config={"header_index_max":0,"question_column_index":0,"answer_column_index":1}'
table_config 說明:
-
header_index_max:表頭行數(0 表示第一行為表頭); -
question_column_index:問題列索引(從 0 開始); -
answer_column_index: 答案列索引。
FAQ 檢索(獨立調用)
不經過對話,直接按問題檢索 FAQ 結果:
curl -X POST "$EAS_SERVICE_URL/v1/faq-retrieval" \
-H "Authorization: Bearer $EAS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"chatapp_id": "your_app_id",
"query": "使用者輸入的問題"
}'
可選請求欄位:user_id、retrieval_setting(如 top_k、similarity_threshold 等)。未傳 retrieval_setting 時使用該應用 FAQ 配置中的預設值。