Saat memanggil model multi-modal seperti model gambar, video, atau audio, Anda seringkali perlu menyediakan URL file. Untuk mempermudah hal ini, Alibaba Cloud Model Studio menyediakan ruang penyimpanan sementara gratis. Anda dapat mengunggah file lokal ke ruang ini dan mendapatkan URL yang valid selama 48 jam.
Dokumen ini hanya berlaku untuk wilayah China (Beijing). Untuk menggunakan model-model tersebut, Anda harus menggunakan Kunci API dari wilayah China (Beijing).
Keterbatasan
Pengikatan File-Model: Anda harus menentukan nama model saat mengunggah file. Model ini harus merupakan model yang sama yang digunakan dalam pemanggilan berikutnya karena model yang berbeda tidak dapat berbagi file. Selain itu, setiap model memiliki batas ukuran file tertentu. Jika Anda melebihi batas tersebut, unggahan akan gagal.
Pengikatan File-Akun: Kunci API yang digunakan untuk unggahan file dan pemanggilan model harus milik Akun Alibaba Cloud yang sama. File yang diunggah hanya dapat digunakan oleh akun tersebut dan model terkaitnya. File tersebut tidak dapat dibagikan dengan akun Alibaba Cloud lainnya atau model lainnya.
Masa Berlaku File: Setelah file diunggah, file tersebut valid selama 48 jam, setelah itu file akan dihapus secara otomatis. Pastikan Anda menyelesaikan pemanggilan model dalam periode validitas ini.
Batas Penggunaan File: Setelah file diunggah, file tersebut tidak dapat di-query, dimodifikasi, atau diunduh. File tersebut hanya dapat digunakan sebagai parameter URL dalam pemanggilan model.
Pembatasan Laju Unggah: API untuk mendapatkan kredensial unggah dibatasi hingga 100 permintaan per detik (QPS) untuk setiap Akun Alibaba Cloud dan model. Permintaan yang melebihi batas ini akan gagal.
URL sementara valid selama 48 jam dan tidak dapat digunakan setelah kedaluwarsa. Jangan gunakan dalam lingkungan produksi.
API untuk mendapatkan kredensial unggah dibatasi hingga 100 QPS dan tidak mendukung penskalaan keluar. Jangan gunakan dalam lingkungan produksi, skenario konkurensi tinggi, atau skenario uji stres.
Untuk lingkungan produksi, gunakan layanan penyimpanan stabil seperti Alibaba Cloud OSS untuk memastikan ketersediaan file jangka panjang dan menghindari masalah pembatasan laju.
Prosedur
Langkah 1: Unggah file, seperti file gambar, video, atau audio, untuk mendapatkan URL sementara yang diawali dengan
oss://.Langkah 2: Gunakan URL sementara untuk memanggil model.
Saat memanggil model menggunakan HTTP, seperti dengan curl atau Postman, tambahkan
X-DashScope-OssResourceResolve: enableke header permintaan. Jika Anda menggunakan DashScope SDK resmi, Anda dapat melewati langkah ini karena SDK menambahkan header secara otomatis.
Langkah 1: Dapatkan URL sementara
Metode 1: Unggah file menggunakan kode
Topik ini menyediakan contoh kode Python dan Java untuk menyederhanakan proses unggah file. Cukup tentukan model dan file yang akan diunggah untuk mendapatkan URL sementara.
Prasyarat
Sebelum melakukan panggilan, Anda harus memperoleh dan mengonfigurasi Kunci API, lalu atur Kunci API sebagai Variabel Lingkungan.
Contoh kode
Python
Konfigurasi Lingkungan
Disarankan menggunakan Python 3.8 atau versi lebih baru.
Instal paket dependensi yang diperlukan.
pip install -U requestsParameter Input
api_key: Kunci API Model Studio Anda.
model_name: Model yang akan menggunakan file, seperti
qwen-vl-plus.file_path: Jalur file lokal yang akan diunggah, seperti file gambar atau video.
import os
import requests
from pathlib import Path
from datetime import datetime, timedelta
def get_upload_policy(api_key, model_name):
"""Dapatkan kredensial unggah file."""
url = "https://dashscope.aliyuncs.com/api/v1/uploads"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
params = {
"action": "getPolicy",
"model": model_name
}
response = requests.get(url, headers=headers, params=params)
if response.status_code != 200:
raise Exception(f"Gagal mendapatkan kebijakan unggah: {response.text}")
return response.json()['data']
def upload_file_to_oss(policy_data, file_path):
"""Unggah file ke penyimpanan OSS sementara."""
file_name = Path(file_path).name
key = f"{policy_data['upload_dir']}/{file_name}"
with open(file_path, 'rb') as file:
files = {
'OSSAccessKeyId': (None, policy_data['oss_access_key_id']),
'Signature': (None, policy_data['signature']),
'policy': (None, policy_data['policy']),
'x-oss-object-acl': (None, policy_data['x_oss_object_acl']),
'x-oss-forbid-overwrite': (None, policy_data['x_oss_forbid_overwrite']),
'key': (None, key),
'success_action_status': (None, '200'),
'file': (file_name, file)
}
response = requests.post(policy_data['upload_host'], files=files)
if response.status_code != 200:
raise Exception(f"Gagal mengunggah file: {response.text}")
return f"oss://{key}"
def upload_file_and_get_url(api_key, model_name, file_path):
"""Unggah file dan dapatkan URL."""
# 1. Dapatkan kredensial unggah. API untuk mendapatkan kredensial unggah tunduk pada pembatasan laju. Permintaan yang melebihi batas gagal.
policy_data = get_upload_policy(api_key, model_name)
# 2. Unggah file ke OSS.
oss_url = upload_file_to_oss(policy_data, file_path)
return oss_url
# Contoh
if __name__ == "__main__":
# Dapatkan kunci API dari variabel lingkungan atau atur api_key = "your_api_key" dalam kode.
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
raise Exception("Atur variabel lingkungan DASHSCOPE_API_KEY.")
# Tetapkan nama model.
model_name="qwen-vl-plus"
# Jalur file yang akan diunggah.
file_path = "/tmp/cat.png" # Ganti dengan jalur file sebenarnya.
try:
public_url = upload_file_and_get_url(api_key, model_name, file_path)
expire_time = datetime.now() + timedelta(hours=48)
print(f"File berhasil diunggah. Valid selama 48 jam. Waktu kedaluwarsa: {expire_time.strftime('%Y-%m-%d %H:%M:%S')}")
print(f"URL Sementara: {public_url}")
print("Saat menggunakan URL ini, lihat Langkah 2 dalam dokumentasi untuk menghindari kesalahan.")
except Exception as e:
print(f"Kesalahan: {str(e)}")Contoh Keluaran
File berhasil diunggah. Valid selama 48 jam. Waktu kedaluwarsa: 2024-07-18 17:36:15
URL Sementara: oss://dashscope-instant/xxx/2024-07-18/xxx/cat.png
Saat menggunakan URL ini, lihat Langkah 2 dalam dokumentasi untuk menghindari kesalahan.Java
Konfigurasi Lingkungan
Disarankan menggunakan JDK 1.8 atau versi lebih baru.
Impor dependensi berikut ke dalam file
pom.xmlproyek Maven Anda.
<dependencies>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20230618</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.13</version>
</dependency>
</dependencies>Parameter Input
apiKey: Kunci API Model Studio Anda.
modelName: Model yang akan menggunakan file, seperti
qwen-vl-plus.filePath: Jalur file lokal yang akan diunggah, seperti file gambar atau video.
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.HttpStatus;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class PublicUrlHandler {
private static final String API_URL = "https://dashscope.aliyuncs.com/api/v1/uploads";
public static JSONObject getUploadPolicy(String apiKey, String modelName) throws IOException {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpGet httpGet = new HttpGet(API_URL);
httpGet.addHeader("Authorization", "Bearer " + apiKey);
httpGet.addHeader("Content-Type", "application/json");
String query = String.format("action=getPolicy&model=%s", modelName);
httpGet.setURI(httpGet.getURI().resolve(httpGet.getURI() + "?" + query));
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
if (response.getStatusLine().getStatusCode() != 200) {
throw new IOException("Gagal mendapatkan kebijakan unggah: " +
EntityUtils.toString(response.getEntity()));
}
String responseBody = EntityUtils.toString(response.getEntity());
return new JSONObject(responseBody).getJSONObject("data");
}
}
}
public static String uploadFileToOSS(JSONObject policyData, String filePath) throws IOException {
Path path = Paths.get(filePath);
String fileName = path.getFileName().toString();
String key = policyData.getString("upload_dir") + "/" + fileName;
HttpPost httpPost = new HttpPost(policyData.getString("upload_host"));
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("OSSAccessKeyId", policyData.getString("oss_access_key_id"));
builder.addTextBody("Signature", policyData.getString("signature"));
builder.addTextBody("policy", policyData.getString("policy"));
builder.addTextBody("x-oss-object-acl", policyData.getString("x_oss_object_acl"));
builder.addTextBody("x-oss-forbid-overwrite", policyData.getString("x_oss_forbid_overwrite"));
builder.addTextBody("key", key);
builder.addTextBody("success_action_status", "200");
byte[] fileContent = Files.readAllBytes(path);
builder.addBinaryBody("file", fileContent, ContentType.DEFAULT_BINARY, fileName);
httpPost.setEntity(builder.build());
try (CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = httpClient.execute(httpPost)) {
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
throw new IOException("Gagal mengunggah file: " +
EntityUtils.toString(response.getEntity()));
}
return "oss://" + key;
}
}
public static String uploadFileAndGetUrl(String apiKey, String modelName, String filePath) throws IOException {
JSONObject policyData = getUploadPolicy(apiKey, modelName);
return uploadFileToOSS(policyData, filePath);
}
public static void main(String[] args) {
// Dapatkan kunci API dari variabel lingkungan.
String apiKey = System.getenv("DASHSCOPE_API_KEY");
if (apiKey == null || apiKey.isEmpty()) {
System.err.println("Atur variabel lingkungan DASHSCOPE_API_KEY.");
System.exit(1);
}
// Nama model.
String modelName = "qwen-vl-plus";
// Ganti dengan jalur file sebenarnya.
String filePath = "src/main/resources/tmp/cat.png";
try {
// Periksa apakah file ada.
File file = new File(filePath);
if (!file.exists()) {
System.err.println("File tidak ada: " + filePath);
System.exit(1);
}
String publicUrl = uploadFileAndGetUrl(apiKey, modelName, filePath);
LocalDateTime expireTime = LocalDateTime.now().plusHours(48);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println("File berhasil diunggah. Valid selama 48 jam. Waktu kedaluwarsa: " + expireTime.format(formatter));
System.out.println("URL Sementara: " + publicUrl);
System.out.println("Saat menggunakan URL ini, lihat Langkah 2 dalam dokumentasi untuk menghindari kesalahan.");
} catch (IOException e) {
System.err.println("Kesalahan: " + e.getMessage());
}
}
}Contoh Keluaran
File berhasil diunggah. Valid selama 48 jam. Waktu kedaluwarsa: 2024-07-18 17:36:15
URL Sementara: oss://dashscope-instant/xxx/2024-07-18/xxx/cat.png
Saat menggunakan URL ini, lihat Langkah 2 dalam dokumentasi untuk menghindari kesalahan.Metode 2: Unggah file menggunakan antarmuka baris perintah
Untuk pengembang yang terbiasa dengan baris perintah, Anda dapat menggunakan antarmuka baris perintah (CLI) yang disediakan oleh DashScope untuk mengunggah file. Setelah menjalankan perintah, Anda mendapatkan URL sementara.
Prasyarat
Lingkungan: Disarankan menggunakan Python 3.8 atau versi lebih baru.
Kunci API: Sebelum memulai, Anda harus memperoleh dan mengonfigurasi Kunci API.
Instal SDK: Versi DashScope Python SDK harus
1.24.0atau lebih baru. Jalankan perintah berikut untuk menginstal atau memperbaruinya:
pip install -U dashscopeMetode 1: Gunakan variabel lingkungan (disarankan)
Metode ini lebih aman karena mencegah kunci API terekspos dalam teks biasa di riwayat perintah atau skrip Anda.
Prasyarat: Anda harus telah atur Kunci API sebagai Variabel Lingkungan.
Jalankan perintah unggah:
dashscope oss.upload --model qwen-vl-plus --file cat.pngOutput Sampel:
Start oss.upload: model=qwen-vl-plus, file=cat.png, api_key=None
Uploaded oss url: oss://dashscope-instant/xxxx/2025-08-01/xxxx/cat.pngMetode 2: Tentukan kunci API menggunakan parameter baris perintah (untuk penggunaan sementara)
Jalankan perintah unggah:
dashscope oss.upload --model qwen-vl-plus --file cat.png --api_key sk-xxxxxxxOutput Sampel:
Start oss.upload: model=qwen-vl-plus, file=cat.png, api_key=sk-xxxxxxx
Uploaded oss url: oss://dashscope-instant/xxx/2025-08-01/xxx/cat.pngDeskripsi parameter baris perintah
Parameter | Diperlukan | Deskripsi | Contoh |
oss.upload | Ya | Subperintah DashScope yang digunakan untuk melakukan operasi unggah file. | oss.upload |
--model | Ya | Tentukan model mana file akan digunakan. | qwen-vl-plus |
--file | Ya | Jalur file lokal. Bisa berupa jalur relatif atau absolut. | cat.png, /data/img.jpg |
--api_key | Tidak | Kunci API Model Studio. Jika Anda telah mengonfigurasi variabel lingkungan, Anda tidak perlu menentukan parameter ini. | sk-xxxx |
Langkah 2: Gunakan URL sementara untuk pemanggilan model
Keterbatasan
Format File: URL sementara harus dibuat menggunakan metode yang dijelaskan di atas dan harus berupa string URL dengan awalan
oss://.File Belum Kedaluwarsa: URL file valid selama 48 jam setelah diunggah.
Konsistensi Model: Model yang Anda gunakan untuk pemanggilan harus sama dengan model yang Anda tentukan saat mengunggah file.
Konsistensi Akun: Kunci API untuk pemanggilan model harus milik Akun Alibaba Cloud yang sama dengan Kunci API yang Anda gunakan untuk mengunggah file.
Prasyarat
Sebelum melakukan panggilan, Anda harus mengaktifkan layanan model dan memperoleh Kunci API, lalu atur Kunci API sebagai Variabel Lingkungan.
Metode 1: Panggil menggunakan HTTP
Jika Anda memanggil API langsung menggunakan curl, Postman, atau klien HTTP lainnya, Anda harus mengikuti aturan berikut:
Saat menggunakan URL sementara, Anda harus menambahkan parameter berikut ke header permintaan:
X-DashScope-OssResourceResolve: enable.Jika header ini hilang, sistem tidak dapat mengurai tautan
oss://, dan permintaan gagal. Untuk informasi lebih lanjut tentang kesalahan, lihat Kode Kesalahan.
Contoh permintaan
Contoh ini menunjukkan cara memanggil model qwen-vl-plus untuk mengidentifikasi isi gambar.
Ganti oss://... dengan URL sementara sebenarnya. Jika tidak, permintaan gagal.
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'X-DashScope-OssResourceResolve: enable' \
-d '{
"model": "qwen-vl-plus",
"messages": [{
"role": "user",
"content":
[{"type": "text","text": "Apa ini?"},
{"type": "image_url","image_url": {"url": "oss://dashscope-instant/xxx/2024-07-18/xxxx/cat.png"}}]
}]
}'Contoh respons
{
"choices": [
{
"message": {
"content": "Ini adalah gambar seekor kucing putih berlari di atas rumput. Kucing tersebut memiliki mata biru dan tampak sangat lucu dan hidup. Latar belakangnya adalah adegan alam yang kabur, yang menekankan subjek—kucing kecil yang sedang berlari. Teknik fotografi ini disebut depth of field dangkal (atau efek aperture besar). Ini membuat kucing di latar depan tajam dan jelas, sementara latar belakang kabur untuk menonjolkan subjek dan menciptakan efek seperti mimpi. Secara keseluruhan, foto ini memberikan perasaan santai dan menyenangkan serta menangkap perilaku hewan pada saat itu dengan sangat baik.",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 1253,
"completion_tokens": 104,
"total_tokens": 1357
},
"created": 1739349052,
"system_fingerprint": null,
"model": "qwen-vl-plus",
"id": "chatcmpl-cfc4f2aa-22a8-9a94-8243-44c5bd9899bc"
}
Contoh gambar lokal yang diunggah
Metode 2: Panggil menggunakan DashScope SDK
Anda juga dapat menggunakan Python atau Java SDK yang disediakan oleh Model Studio.
Langsung Teruskan URL: Saat Anda memanggil model SDK, langsung teruskan string URL dengan awalan
oss://sebagai parameter file.Tidak Perlu Khawatir Tentang Header: SDK secara otomatis menambahkan header permintaan yang diperlukan. Tidak ada operasi tambahan yang diperlukan.
Catatan: Tidak semua model mendukung panggilan SDK. Untuk detail lebih lanjut, lihat referensi API model yang bersangkutan.
OpenAI SDK tidak didukung.
Python
Persyaratan
Anda harus menginstal DashScope Python SDK, dan versinya harus 1.24.0 atau lebih baru.
Contoh Kode
Contoh ini menunjukkan cara memanggil model qwen-vl-plus untuk mengidentifikasi isi dari sebuah citra. Contoh kode ini hanya berlaku untuk model qwen-vl dan seri omni.
Contoh permintaan
Ganti oss://... dalam parameter citra dengan URL sementara Anda yang sebenarnya; jika tidak, permintaan akan gagal.
import os
import dashscope
messages = [
{
"role": "system",
"content": [{"text": "You are a helpful assistant."}]
},
{
"role": "user",
"content": [
{"image": "oss://dashscope-instant/xxx/2024-07-18/xxxx/cat.png"},
{"text": "Apa ini?"}]
}]
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key = os.getenv('DASHSCOPE_API_KEY')
response = dashscope.MultiModalConversation.call(
api_key=api_key,
model='qwen-vl-plus',
messages=messages
)
print(response)
Contoh tanggapan
{
"status_code": 200,
"request_id": "ccd9dcfb-98f0-92bc-xxxxxx",
"code": "",
"message": "",
"output": {
"text": null,
"finish_reason": null,
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "Ini adalah foto seekor kucing yang sedang berlari di atas rumput. Bulu kucing tersebut sebagian besar berwarna putih dengan bintik-bintik cokelat muda, dan matanya berwarna biru, membuatnya terlihat sangat lucu. Latar belakangnya adalah padang rumput hijau yang buram dengan beberapa pohon, dan sinar matahari menambah kesan hangat pada seluruh gambar. Postur kucing tersebut menunjukkan bahwa ia sedang bergerak cepat, mungkin mengejar sesuatu atau hanya menikmati suasana luar ruangan. Secara keseluruhan, ini adalah gambar yang penuh semangat dan hidup."
}
]
}
}
]
},
"usage": {
"input_tokens": 1.112,
"output_tokens": 91,
"input_tokens_details": {
"text_tokens": 21,
"image_tokens": 1.091
},
"prompt_tokens_details": {
"cached_tokens": 0
},
"total_tokens": 1.203,
"output_tokens_details": {
"text_tokens": 91
},
"image_tokens": 1.091
}
}Java
Persyaratan
Pastikan Anda menginstal DashScope Java SDK, dan versinya adalah 2.21.0 atau lebih baru.
Contoh Kode
Contoh ini menunjukkan cara memanggil model qwen-vl-plus untuk mengidentifikasi isi dari sebuah citra. Contoh kode ini hanya berlaku untuk model qwen-vl dan seri omni.
Contoh permintaan
Ganti oss://... dengan URL sementara Anda yang sebenarnya, jika tidak, permintaan akan gagal.
import com.alibaba.dashscope.aigc.multimodalconversation.*;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.Arrays;
public class MultiModalConversationUsage {
private static final String modelName = "qwen-vl-plus";
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
public static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void simpleMultiModalConversationCall() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessageItemText systemText = new MultiModalMessageItemText("You are a helpful assistant.");
MultiModalConversationMessage systemMessage = MultiModalConversationMessage.builder()
.role(Role.SYSTEM.getValue()).content(Arrays.asList(systemText)).build();
MultiModalMessageItemImage userImage = new MultiModalMessageItemImage(
"oss://dashscope-instant/xxx/2024-07-18/xxxx/cat.png");
MultiModalMessageItemText userText = new MultiModalMessageItemText("Apa ini?");
MultiModalConversationMessage userMessage =
MultiModalConversationMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(userImage, userText)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.model(MultiModalConversationUsage.modelName)
.apiKey(apiKey)
.message(systemMessage)
.vlHighResolutionImages(true)
.vlEnableImageHwOutput(true)
// .incrementalOutput(true)
.message(userMessage).build();
MultiModalConversationResult result = conv.call(param);
System.out.print(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException /*| IOException*/ e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
Contoh tanggapan
{
"requestId": "b6d60f91-4a7f-9257-xxxxxx",
"usage": {
"input_tokens": 1.112,
"output_tokens": 91,
"total_tokens": 1.203,
"image_tokens": 1.091,
"input_tokens_details": {
"text_tokens": 21,
"image_tokens": 1.091
},
"output_tokens_details": {
"text_tokens": 91
}
},
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "Ini adalah foto seekor kucing yang sedang berlari di atas rumput. Bulu kucing tersebut sebagian besar berwarna putih dengan bintik-bintik cokelat muda, dan matanya berwarna biru, membuatnya terlihat sangat lucu. Latar belakangnya adalah padang rumput hijau yang buram dengan beberapa pohon, dan sinar matahari menambah kesan hangat pada seluruh gambar. Postur kucing tersebut menunjukkan bahwa ia sedang bergerak cepat, mungkin mengejar sesuatu atau hanya menikmati suasana luar ruangan. Secara keseluruhan, ini adalah gambar yang penuh semangat dan hidup."
},
{
"image_hw": [
[
"924",
"924"
]
]
}
]
}
}
]
}
}Lampiran: Referensi API
Dua metode untuk mendapatkan URL sementara, menggunakan kode atau antarmuka baris perintah, mengintegrasikan tiga langkah berikut untuk menyederhanakan pengunggahan file. Referensi API untuk setiap langkah disediakan di bawah ini.
Langkah 1: Dapatkan kredensial unggah file
Prasyarat
Anda telah memperoleh dan mengonfigurasi Kunci API dan menetapkan Kunci API sebagai Variabel Lingkungan.
Titik akhir API
GET https://dashscope.aliyuncs.com/api/v1/uploadsAPI untuk mendapatkan kredensial unggah file dibatasi laju hingga 100 QPS per Akun Alibaba Cloud dan model. Penyimpanan sementara tidak dapat diperluas. Untuk lingkungan produksi atau skenario konkurensi tinggi, gunakan layanan penyimpanan seperti Alibaba Cloud OSS.
Parameter permintaan
Metode pengiriman parameter | Bidang | Tipe | Wajib | Deskripsi | Nilai contoh |
Header | Content-Type | string | Ya | Jenis permintaan: application/json. | application/json |
Authorization | string | Ya | Kunci API Model Studio Anda. Contoh: Bearer sk-xxx. | Bearer sk-xxx | |
Params | action | string | Ya | Jenis operasi. Dalam skenario ini, nilainya adalah | getPolicy |
model | string | Ya | Nama model yang akan dipanggil. | qwen-vl-plus |
Parameter respons
Bidang | Tipe | Deskripsi | Nilai contoh |
request_id | string | ID unik dari permintaan. | 7574ee8f-...-11c33ab46e51 |
data | objek | - | - |
data.policy | string | Kredensial unggah. | eyJl...1ZSJ9XX0= |
data.signature | string | Tanda tangan dari kredensial unggah. | g5K...d40= |
data.upload_dir | string | Folder untuk mengunggah file. | dashscope-instant/xxx/2024-07-18/xxxx |
data.upload_host | string | Alamat host untuk unggahan. | https://dashscope-file-xxx.oss-cn-beijing.aliyuncs.com |
data.expire_in_seconds | string | Masa berlaku kredensial dalam detik. Catatan Setelah kredensial kedaluwarsa, Anda harus memanggil Operasi API ini lagi untuk mendapatkan yang baru. | 300 |
data.max_file_size_mb | string | Ukuran maksimum file yang dapat diunggah, dalam MB. Nilai ini terkait dengan model yang akan diakses. | 100 |
data.capacity_limit_mb | string | Batas kapasitas unggahan harian untuk Akun Alibaba Cloud, dalam MB. | 999999999 |
data.oss_access_key_id | string | Kunci akses yang digunakan untuk unggahan. | LTAxxx |
data.x_oss_object_acl | string | Izin akses untuk file yang diunggah. Nilai | private |
data.x_oss_forbid_overwrite | string | Menentukan apakah akan menimpa file dengan nama yang sama. Nilai | true |
Permintaan contoh
curl --location 'https://dashscope.aliyuncs.com/api/v1/uploads?action=getPolicy&model=qwen-vl-plus' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json'Jika Anda belum mengonfigurasi Kunci API Model Studio sebagai Variabel Lingkungan, ganti $DASHSCOPE_API_KEY dengan Kunci API Anda. Sebagai contoh, --header "Authorization: Bearer sk-xxx".
Respons contoh
{
"request_id": "52f4383a-c67d-9f8c-xxxxxx",
"data": {
"policy": "eyJl...1ZSJ=",
"signature": "eWy...=",
"upload_dir": "dashscope-instant/xxx/2024-07-18/xxx",
"upload_host": "https://dashscope-file-xxx.oss-cn-beijing.aliyuncs.com",
"expire_in_seconds": 300,
"max_file_size_mb": 100,
"capacity_limit_mb": 999999999,
"oss_access_key_id": "LTA...",
"x_oss_object_acl": "private",
"x_oss_forbid_overwrite": "true"
}
}Langkah 2: Unggah file ke ruang penyimpanan sementara
Prasyarat
Anda telah memperoleh kredensial unggah file.
Pastikan bahwa kredensial unggah file belum kedaluwarsa. Jika kredensial telah kedaluwarsa, panggil API pada Langkah 1 lagi untuk mendapatkan yang baru.
Untuk memeriksa masa berlaku kredensial unggah file, lihat parameter respons
data.expire_in_secondsdari Langkah 1. Nilainya dalam detik.
Titik akhir API
POST {data.upload_host}Ganti {data.upload_host} dengan nilai parameter respons data.upload_host dari Langkah 1.
Parameter permintaan
Metode pengiriman parameter | Bidang | Tipe | Wajib | Deskripsi | Nilai contoh |
Header | Content-Type | string | Tidak | Formulir harus dikirimkan sebagai Saat Anda mengirim formulir, Content-Type ditampilkan dalam format Boundary adalah string yang dihasilkan secara acak yang tidak perlu Anda tentukan. Jika Anda menggunakan SDK untuk membuat formulir, SDK juga secara otomatis menghasilkan nilai acak ini. | multipart/form-data; boundary=9431149156168 |
form-data | OSSAccessKeyId | text | Ya | Nilai dari parameter respons | LTAm5xxx |
policy | text | Ya | Nilai dari parameter respons | g5K...d40= | |
Signature | text | Ya | Nilai dari parameter respons | Sm/tv7DcZuTZftFVvt5yOoSETsc= | |
key | text | Ya | Nilai dari parameter respons | Sebagai contoh, jika
| |
x-oss-object-acl | text | Ya | Nilai dari parameter respons | private | |
x-oss-forbid-overwrite | text | Ya | Nilai dari parameter respons | true | |
success_action_status | text | Tidak | Nilainya biasanya 200. Setelah unggahan selesai, API mengembalikan kode status HTTP 200 untuk menunjukkan bahwa operasi berhasil. | 200 | |
file | text | Ya | File atau konten teks. Catatan
| Sebagai contoh, jika file yang akan diunggah, |
Parameter respons
Jika pemanggilan berhasil, API ini tidak mengembalikan parameter respons.
Permintaan contoh
curl --location 'https://dashscope-file-xxx.oss-cn-beijing.aliyuncs.com' \
--form 'OSSAccessKeyId="LTAm5xxx"' \
--form 'Signature="Sm/tv7DcZuTZftFVvt5yOoSETsc="' \
--form 'policy="eyJleHBpcmF0aW9 ... ... ... dHJ1ZSJ9XX0="' \
--form 'x-oss-object-acl="private"' \
--form 'x-oss-forbid-overwrite="true"' \
--form 'key="dashscope-instant/xxx/2024-07-18/xxx/cat.png"' \
--form 'success_action_status="200"' \
--form 'file=@"/tmp/cat.png"'Langkah 3: Hasilkan URL file
URL file dibuat dengan menggabungkan oss:// dan nilai key (parameter permintaan key dari Langkah 2). URL ini berlaku selama 48 jam.
oss://dashscope-instant/xxx/2024-07-18/xxxx/cat.pngKode kesalahan
Jika panggilan API gagal dan pesan kesalahan dikembalikan, lihat Pesan Kesalahan untuk pemecahan masalah.
API ini juga mengembalikan kode status berikut.
Kode status HTTP | Kode kesalahan | Pesan kesalahan | Deskripsi |
400 | invalid_parameter_error | InternalError.Algo.InvalidParameter: URL yang diberikan tampaknya tidak valid. Pastikan formatnya benar. | URL tidak valid. Periksa apakah URL tersebut benar. Jika Anda menggunakan URL file sementara, pastikan header permintaan mencakup parameter |
400 | InvalidParameter.DataInspection | Format media tidak didukung atau salah untuk inspeksi data. | Alasan yang mungkin termasuk yang berikut:
|
403 | AccessDenied | Tidak valid menurut Kebijakan: Kebijakan telah kedaluwarsa. | Kredensial unggah file telah kedaluwarsa. Panggil API kredensial unggah file lagi untuk menghasilkan kredensial baru. |
429 | Throttling.RateQuota | Batas laju permintaan terlampaui, silakan coba lagi nanti. | Frekuensi panggilan telah memicu pembatasan laju. API kredensial unggah file dibatasi hingga 100 QPS per Akun Alibaba Cloud dan model. Jika pembatasan kecepatan dipicu, kurangi frekuensi permintaan atau migrasikan ke layanan penyimpanan Anda sendiri, seperti OSS, untuk menghindari batasan. |
FAQ
Apakah kunci API yang digunakan untuk mengunggah file dan pemanggilan model dapat berbeda?
Penyimpanan file dan izin akses dikelola berdasarkan Akun Alibaba Cloud Anda. Kunci API hanya merupakan kredensial akses untuk akun tersebut.
Oleh karena itu, Anda dapat menggunakan Kunci API yang berbeda asalkan mereka termasuk dalam Akun Alibaba Cloud yang sama. Namun, Anda tidak dapat menggunakan Kunci API dari Akun Alibaba Cloud yang berbeda karena pemanggilan model tidak dapat membaca file lintas akun akibat adanya pemagaran akun.
Pastikan bahwa Kunci API yang Anda gunakan untuk mengunggah file dan pemanggilan model termasuk dalam Akun Alibaba Cloud yang sama.