本接口用于获取file_id,可用于Qwen-Long和Qwen-Doc模型基于文件内容进行对话交互或发起批量推理请求。在开始使用之前,请确保满足以下条件:
- 阿里云百炼API-KEY:获取API Key并配置API Key到环境变量 
- 使用OpenAI SDK调用服务,您还需安装OpenAI SDK。 
功能描述
上传文件
百炼存储空间支持的最大文件数为10000个,总大小不超过100 GB,暂时没有有效期限制。
该接口限流为20 QPS
用于文档分析
将purpose指定为file-extract,文件格式支持文本文件( TXT、DOCX、PDF、XLSX、EPUB、MOBI、MD、CSV、JSON),图片文件(BMP、PNG、JPG/JPEG、GIF和PDF扫描件),单个文件最大为 150 MB。
关于通过file_id进行文档分析,请参考长上下文(Qwen-Long)。
请求示例
import os
from pathlib import Path
from openai import OpenAI
client = OpenAI(
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
    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())import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.FileCreateParams;
import com.openai.models.FileObject;
import com.openai.models.FilePurpose;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
    public static void main(String[] args) {
        // 创建客户端,使用环境变量中的API密钥
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
                .build();
        // 设置文件路径,请根据实际需求修改路径与文件名
        Path filePath = Paths.get("src/main/java/org/example/test.txt");
        // 创建文件上传参数
        FileCreateParams params = FileCreateParams.builder()
                .file(filePath)
                .purpose(FilePurpose.of("file-extract"))
                .build();
        // 上传文件
        FileObject fileObject = client.files().create(params);
        System.out.println(fileObject);
    }
}curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/files \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"test.txt"' \
--form 'purpose="file-extract"'响应示例
{
    "id": "file-fe-xxx",
    "bytes": 2055,
    "created_at": 1729065448,
    "filename": "test.txt",
    "object": "file",
    "purpose": "file-extract",
    "status": "processed",
    "status_details": null
}用于Batch调用
purpose指定为batch,输入文件必须是jsonl文件且符合输入文件格式,上传Batch任务的单个文件最大为500 MB。
关于Batch调用的更多用法,请参考OpenAI兼容-Batch。
请求示例
import os
from pathlib import Path
from openai import OpenAI
client = OpenAI(
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
# test.jsonl 是一个本地示例文件
file_object = client.files.create(file=Path("test.jsonl"), purpose="batch")
print(file_object.model_dump_json())import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.FileCreateParams;
import com.openai.models.FileObject;
import com.openai.models.FilePurpose;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
    public static void main(String[] args) {
        // 创建客户端,使用环境变量中的API密钥
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
                .build();
        // 设置文件路径,请根据实际需求修改路径与文件名
        Path filePath = Paths.get("src/main/java/org/example/test.txt");
        // 创建文件上传参数
        FileCreateParams params = FileCreateParams.builder()
                .file(filePath)
                .purpose(FilePurpose.of("batch"))
                .build();
        // 上传文件
        FileObject fileObject = client.files().create(params);
        System.out.println(fileObject);
    }
}curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/files \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"test.jsonl"' \
--form 'purpose="batch"'响应示例
{
    "id": "file-batch-xxx",
    "bytes": 231,
    "created_at": 1729065815,
    "filename": "test.jsonl",
    "object": "file",
    "purpose": "batch",
    "status": "processed",
    "status_details": null
}查询文件信息
通过在retrieve或GET方法中指定file_id来查询文件信息。
该接口限流为20 QPS
OpenAI Python SDK
请求示例
import os
from openai import OpenAI
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-batch-xxx")
print(file.model_dump_json())返回示例
{
  "id": "file-batch-xxx",
  "bytes": 27,
  "created_at": 1722480306,
  "filename": "test.txt",
  "object": "file",
  "purpose": "batch",
  "status": "processed",
  "status_details": null
}OpenAI Java SDK
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.FileObject;
import com.openai.models.FileRetrieveParams;
public class Main {
    public static void main(String[] args) {
        // 创建客户端,使用环境变量中的API密钥
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
                .build();
        // 创建文件查询参数,请根据实际需求替换相应的fileId
        FileRetrieveParams params= FileRetrieveParams.builder()
                .fileId("file-batch-xxx")
                .build();
        //查询文件
        FileObject fileObject = client.files().retrieve(params);
        System.out.println(fileObject);
    }
}
HTTP
需要配置的endpoint
GET https://dashscope.aliyuncs.com/compatible-mode/v1/files/{file_id}请求示例
curl -X GET https://dashscope.aliyuncs.com/compatible-mode/v1/files/file-batch-xxx \
-H "Authorization: Bearer $DASHSCOPE_API_KEY"返回示例
{
    "id": "file-batch-xxx",
    "object": "file",
    "bytes": 499719,
    "created_at": 1715935833,
    "filename": "test.txt",
    "purpose": "batch",
    "status": "processed"
}查询文件列表
返回所有文件的信息,包括通过上传文件接口上传的文件以及batch任务的结果文件。
该接口限流为20 QPS
OpenAI Python SDK
查询文件列表接口无请求参数。
请求示例
import os
from openai import OpenAI
client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
file_stk = client.files.list(after="file-batch-xxx",limit=20)
print(file_stk.model_dump_json())返回示例
{
  "data": [
    {
      "id": "file-batch-xxx",
      "bytes": 27,
      "created_at": 1722480543,
      "filename": "test.txt",
      "object": "file",
      "purpose": "batch",
      "status": "processed",
      "status_details": null
    },
    {
      "id": "file-batch-yyy",
      "bytes": 431986,
      "created_at": 1718089390,
      "filename": "test.pdf",
      "object": "file",
      "purpose": "batch",
      "status": "processed",
      "status_details": null
    }
  ],
  "object": "list",
  "has_more": false
}OpenAI Java SDK
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.FileListPage;
import com.openai.models.FileListParams;
public class Main {
    public static void main(String[] args) {
        // 创建客户端,使用环境变量中的API密钥
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
                .build();
        // 创建文件列表查询参数
        FileListParams params = FileListParams.builder()
                .after("file-batch-xxx")
                .limit(20)
                .build();
        //查询文件列表
        FileListPage file_stk = client.files().list(params);
        System.out.println(file_stk);
    }
}
HTTP
查询文件列表接口无请求参数。
需要配置的endpoint
GET https://dashscope.aliyuncs.com/compatible-mode/v1/files请求示例
curl -X GET https://dashscope.aliyuncs.com/compatible-mode/v1/files \
-H "Authorization: Bearer $DASHSCOPE_API_KEY"返回示例
{
    "object": "list",
    "has_more": true,
    "data": [
        {
            "id": "file-batch-xxx",
            "object": "file",
            "bytes": 84889,
            "created_at": 1715569225,
            "filename": "example.txt",
            "purpose": "batch",
            "status": "processed"
        },
        {
            "id": "file-batch-yyy",
            "object": "file",
            "bytes": 722355,
            "created_at": 1715413868,
            "filename": "Agent_survey.pdf",
            "purpose": "batch",
            "status": "processed"
        }
    ]
}删除文件
可以通过删除文件接口删除指定file_id的文件。可以通过查询文件信息或通过查询文件列表接口查询文件信息。
该接口限流为10 QPS。
OpenAI Python SDK
请求示例
import os
from openai import OpenAI
client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
file_object = client.files.delete("file-batch-xxx")
print(file_object.model_dump_json())返回示例
{
  "object": "file",
  "deleted": true,
  "id": "file-batch-xxx"
}OpenAI Java SDK
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.FileDeleteParams;
import com.openai.models.FileListPage;
import com.openai.models.FileListParams;
public class Main {
    public static void main(String[] args) {
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
                .build();
        FileDeleteParams params = FileDeleteParams.builder()
                .fileId("file-batch-xxx")
                .build();
        System.out.println(client.files().delete(params));
    }
}
HTTP
需要配置的endpoint
DELETE https://dashscope.aliyuncs.com/compatible-mode/v1/files/{file_id}请求示例
curl -X  DELETE https://dashscope.aliyuncs.com/compatible-mode/v1/files/file-batch-xxx \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" 返回示例
{
  "object": "file",
  "deleted": true,
  "id": "file-batch-oLIon7bzfxELqJBTS5okwC4E"
}参数说明
| 接口类别 | 参数名 | 类型 | 必选 | 说明 | 示例值 | 
| 文档上传 | file | File | 是 | 用于指定待上传的文件。 | Path("test.txt") | 
| purpose | String | 是 | 用于指定上传文件的用途,当前可选值如下: 
 
 | "file-extract" | |
| 文件查询 | file_id | String | 是 | 待查询的文件id。 | "file-fe-xxx" | 
| after | String | 否 | 查询文件列表任务中用于分页的游标。 参数 例如,若本次查询返回了20条数据,且最后一个File ID是file-batch-xxx,则后续查询时可以设置 | "file-fe-xxx" | |
| limit | Integer | 否 | 查询文件列表任务中每次查询返回的文件数量,取值范围[1,2000],默认2000。 | 2000 | |
| 文件删除 | file_id | String | 是 | 待删除文件id。 | "file-fe-xxx" | 
| 响应参数 | |||||
| 通用响应参数 | id | String | \ | 文件的标识符 删除文件任务中表示成功删除的文件的id。 | "file-fe-xxx" | 
| bytes | Integer | 文件大小,单位为字节。 | 81067 | ||
| created_at | Integer | 文件创建时的 Unix 时间戳(秒)。 | 1617981067 | ||
| filename | String | 上传的文件名。 | "text.txt" | ||
| object | String | 对象类型 查询文件列表任务中始终为"list"。 其余类型任务中始终为"file"。 | "file" | ||
| purpose | String | 文件的用途,取值有 | "file-extract" | ||
| status | String | 文件的当前状态。 | "processed" | ||
| 查询文件列表 | has_more | Boolean | 是否还有下一页数据。 | false | |
| data | Array | 返回的文件列表,列表中每个元素格式与通用相应参数一致。 |  | ||
| 删除文件 | deleted | Boolean | 是否删除成功,true表示删除成功。 | true | |
错误码
如果模型调用失败并返回报错信息,请参见错误信息进行解决。