為支持熟悉OpenAI的開發者使用OpenAI接口來訪問DashScope中與文件相關的API服務,DashScope提供了與OpenAI兼容的接口。用戶只需要配置DashScope的API key以及服務base_url,即可通過OpenAI API以及SDK來訪問DashScope的文件服務。
前提條件
請開通靈積服務并獲得API-KEY:API-KEY的獲取與配置。
如果您通過OpenAI Python SDK使用,請通過以下命令安裝最新版OpenAI SDK。
pip3 install -U openai
我們推薦您將API-KEY配置到環境變量中以降低API-KEY的泄露風險,配置方法可參考通過環境變量配置API-KEY。
功能描述
上傳文件
文件格式支持常見的文本文件(txt docx pdf epub mobi md),單文件大小限制為150M,最大上傳文件數10000,上傳總量不超過100G。
OpenAI Python SDK
示例代碼
from pathlib import Path
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
# test.txt 是一個示例文件
file_object = client.files.create(file=Path("test.txt"), purpose="file-extract")
print(file_object.model_dump_json())
輸入參數配置
輸入參數與OpenAI的接口參數對齊,參數說明和可選值如下。
參數 | 類型 | 默認值 | 說明 |
file | File | - | 待上傳的文件對象,Python的File Object類型 |
purpose | string | - | 上傳文件的用途,當前可選值如下:
|
返回示例
{
"id": "file-fe-Yagxxx",
"bytes": 27,
"created_at": 1722480376,
"filename": "test.txt",
"object": "file",
"purpose": "file-extract",
"status": "processed",
"status_details": null
}
返回參數
字段 | 類型 | 描述 | 示例值 |
id | string | 文件標識符,可在 各個API中引用 | "file-fe-123" |
bytes | integer | 文件大小,單位為字節 | 123456 |
created_at | integer | 文件創建時的 Unix 時間戳(秒) | 1617981067 |
filename | string | 文件名 | "mydata.jsonl" |
object | string | 對象類型,始終為 file | "file" |
HTTP
需要配置的endpoint
POST https://dashscope.aliyuncs.com/compatible-mode/v1/files
請求示例
curl --location --request POST 'https://dashscope.aliyuncs.com/compatible-mode/v1/files' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"test.txt"' \
--form 'purpose="file-extract"'
輸入參數配置
字段 | 類型 | 傳參方式 | 必選 | 描述 |
file | file | Body | 是 | 待上傳的文件 |
purpose | string | Body | 是 | 上傳文件的用途,當前可選值如下:
|
返回示例
{
"id": "file-fe-AiKxgWxPXytoR7tnV2ZFwadq",
"object": "file",
"bytes": 27,
"created_at": 1722480471,
"filename": "test.txt",
"purpose": "file-extract",
"status": "processed"
}
返回參數
字段 | 類型 | 描述 |
id | string | 文件標識符,可在各個API中引用。 |
object | string | 對象類型,始終為 file。 |
bytes | integer | 文件大小,單位為字節。 |
created_at | integer | 文件創建時的 Unix 時間戳(秒)。 |
filename | string | 文件名。 |
purpose | string | 上傳文件的用途。 |
在模型調用中使用文件
您可以在模型調用時,在System message中傳入文件的id,讓大模型讀取文件信息。
from pathlib import Path
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
# data.pdf 是一個示例文件
file_object = client.files.create(file=Path("data.pdf"), purpose="file-extract")
completion = client.chat.completions.create(
model="qwen-long",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "system", "content": f"fileid://{file_object.id}"},
{"role": "user", "content": "請幫忙概括文件講述了什么"},
],
)
print(completion.model_dump_json())
返回示例
{
"id": "chatcmpl-8576954d-6de2-9e13-b982-32ebdb0ec731",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "文件 \"test.txt\" 主要內容是:“你好啊,我是云小寶”。這看起來像是一條簡單的問候信息,可能來自于一個名為“云小寶”的虛擬助手或者軟件程序。",
"role": "assistant",
"function_call": null,
"tool_calls": null
}
}
],
"created": 1722480551,
"model": "qwen-long",
"object": "chat.completion",
"service_tier": null,
"system_fingerprint": null,
"usage": {
"completion_tokens": 42,
"prompt_tokens": 20,
"total_tokens": 62
}
}
查詢文件信息
OpenAI Python SDK
示例代碼
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
file = client.files.retrieve(file_id="file-fe-xxx")
print(file.model_dump_json())
輸入參數配置
參數 | 類型 | 默認值 | 必選 | 說明 |
file_id | string | - | 是 | 待查詢的文件id |
返回示例
{
"id": "file-fe-nXkYPd5DSIbO194EqSmni2LT",
"bytes": 27,
"created_at": 1722480306,
"filename": "test.txt",
"object": "file",
"purpose": "file-extract",
"status": "processed",
"status_details": null
}
返回參數
字段 | 類型 | 描述 | 示例值 |
id | string | 文件標識符,可在 各個API中引用 | "file-fe-123" |
bytes | integer | 文件大小,單位為字節 | 123456 |
created_at | integer | 文件創建時的 Unix 時間戳(秒) | 1617981067 |
filename | string | 文件名 | "mydata.jsonl" |
object | string | 對象類型,始終為 file | "file" |
HTTP
需要配置的endpoint
GET https://dashscope.aliyuncs.com/compatible-mode/v1/files/{file-id}
請求示例
curl --location --request GET 'https://dashscope.aliyuncs.com/compatible-mode/v1/files/file-fe-ykLgOT1vct3TxMwHjPFpbcEf' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
輸入參數配置
字段 | 類型 | 傳參方式 | 必選 | 描述 |
Authorization | String | Header | 是 | Api-Key |
file-id | String | Path | 是 | 需要查詢的文件id |
返回示例
{
"id": "file-fe-ykLgOT1vct3TxMwHjPFpbcEf",
"object": "file",
"bytes": 499719,
"created_at": 1715935833,
"filename": "Less is more.pdf",
"purpose": "file-extract",
"status": "processed"
}
返回參數
字段 | 類型 | 描述 |
object | String | 固定值為 “file” |
查詢文件列表
OpenAI Python SDK
示例代碼
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
file_stk = client.files.list()
print(file_stk.model_dump_json())
返回示例
{
"data": [
{
"id": "file-fe-xxx",
"bytes": 27,
"created_at": 1722480543,
"filename": "test.txt",
"object": "file",
"purpose": "file-extract",
"status": "processed",
"status_details": null
},
{
"id": "file-fe-yyy",
"bytes": 431986,
"created_at": 1718089390,
"filename": "test.pdf",
"object": "file",
"purpose": "file-extract",
"status": "processed",
"status_details": null
}
],
"object": "list",
"has_more": false
}
返回參數
字段 | 類型 | 描述 |
object | String | 固定值為 “list” |
data | list | FileObject的列表 |
HTTP
需要配置的endpoint
GET https://dashscope.aliyuncs.com/compatible-mode/v1/files
請求示例
curl --location --request GET 'https://dashscope.aliyuncs.com/compatible-mode/v1/files' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
返回示例
{
"object": "list",
"has_more": true,
"data": [
{
"id": "ad543fdc-9de1-4976-bff8-0132694aba18",
"object": "file",
"bytes": 84889,
"created_at": 1715569225,
"filename": "example.txt",
"purpose": "file-extract",
"status": "processed"
},
{
"id": "file-fe-SgxzqQzp42tOEnagCxrXdZjO",
"object": "file",
"bytes": 722355,
"created_at": 1715413868,
"filename": "Agent_survey.pdf",
"purpose": "file-extract",
"status": "processed"
}
]
}
返回參數
字段 | 類型 | 描述 |
object | String | 固定值為 “list” |
has_more | Bool | 是否還有下一頁數據 |
data | List | 查詢的數據列表 |
下載文件
下載文件支持的purpose(非以下purpose的文件不支持下載)
purpose | 描述 |
batch_output | batch任務生成的結果文件 |
OpenAI Python SDK
示例代碼
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
content = client.files.content("file-abc123")
輸入參數配置
參數 | 類型 | 默認值 | 必選 | 說明 |
file_id | string | - | 是 | 待下載的文件id |
返回
文件內容
HTTP
需要配置的endpoint
GET https://dashscope.aliyuncs.com/compatible-mode/v1/files/{file-id}/content
請求示例
curl --location --request GET 'https://dashscope.aliyuncs.com/compatible-mode/v1/files/file-abc23/content' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" > file.jsonl
輸入參數
字段 | 類型 | 傳參方式 | 必選 | 描述 |
Authorization | String | Header | 是 | Apikey |
file-id | String | Path | 是 | 需要下載的文件的id |
返回
文件內容
刪除文件
OpenAI Python SDK
示例代碼
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
file_object = client.files.delete("file-fe-AJ62IvDWUa9vELKmxUctIzvX")
print(file_object.model_dump_json())
輸入參數配置
參數 | 類型 | 默認值 | 必選 | 說明 |
file_id | string | - | 是 | 待刪除文件id |
返回示例
{
"object": "file",
"deleted": true,
"id": "file-fe-oLIon7bzfxELqJBTS5okwC4E"
}
返回參數
字段 | 類型 | 描述 |
object | String | 固定值為 “file” |
deleted | Bool | 是否刪除成功 |
id | String | 成功刪除的文件的ID |
HTTP
需要配置的endpoint
DELETE https://dashscope.aliyuncs.com/compatible-mode/v1/files/{file-id}
請求示例
curl --location --request DELETE 'https://dashscope.aliyuncs.com/compatible-mode/v1/files/file-fe-oLIon7bzfxELqJBTS5okwC4E' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
輸入參數
字段 | 類型 | 傳參方式 | 必選 | 描述 |
Authorization | String | Header | 是 | API Key |
file-id | String | Path | 是 | 需要刪除的文件的ID |
返回示例
{
"object": "file",
"deleted": true,
"id": "file-fe-oLIon7bzfxELqJBTS5okwC4E"
}
返回參數
字段 | 類型 | 描述 |
object | String | 固定值為 “file” |
deleted | Bool | 是否刪除成功 |
id | String | 成功刪除的文件的id |