Alibaba Cloud Model Studio menyediakan API Batch yang kompatibel dengan OpenAI, memungkinkan Anda mengirimkan tugas batch melalui file untuk eksekusi asinkron. Layanan ini memproses data skala besar secara offline selama jam sepi dan mengembalikan hasil setelah tugas selesai atau waktu tunggu maksimum tercapai, dengan biaya hanya 50% dari panggilan real-time.
Untuk melakukan operasi ini di Konsol, lihat Inferensi batch.
Prasyarat
Aktifkan Alibaba Cloud Model Studio dan dapatkan Kunci API.
Anda dapat mengonfigurasi Kunci API sebagai variabel lingkungan untuk mengurangi risiko kebocoran Kunci API.
Jika menggunakan SDK Python OpenAI untuk memanggil API Batch, jalankan perintah berikut guna menginstal versi terbaru SDK OpenAI.
pip3 install -U openai
Mulai
Sebelum menjalankan pekerjaan batch formal, Anda dapat menggunakan model uji batch-test-model untuk pengujian end-to-end tertutup. Pengujian ini mencakup validasi data masukan, pembuatan pekerjaan, kueri pekerjaan, dan pengunduhan file hasil. Catatan:
File uji harus memenuhi persyaratan untuk file masukan. Ukurannya tidak boleh melebihi 1 MB atau memiliki lebih dari 100 baris.
Batas konkurensi: Maksimal 2 pekerjaan paralel.
Penggunaan sumber daya: Model uji tidak menjalani proses inferensi dan tidak dikenakan biaya inferensi model.
Langkah-langkahnya adalah sebagai berikut:
Persiapkan file uji
Unduh file contoh test_model.jsonl, yang berisi informasi permintaan, ke mesin lokal Anda. Pastikan file tersebut berada di direktori yang sama dengan skrip Python berikut.
Isi contoh: Atur parameter model ke
batch-test-modeldan parameter url ke/v1/chat/ds-test.{"custom_id":"1","method":"POST","url":"/v1/chat/ds-test","body":{"model":"batch-test-model","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"Hello! How can I help you?"}]}} {"custom_id":"2","method":"POST","url":"/v1/chat/ds-test","body":{"model":"batch-test-model","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is 2+2?"}]}}
Jalankan skrip
Jalankan skrip Python berikut.
Untuk menyesuaikan path file atau parameter lainnya, Anda dapat memodifikasi kode sesuai kebutuhan.
import os from pathlib import Path from openai import OpenAI import time # Inisialisasi klien client = OpenAI( # Jika Anda belum mengonfigurasi variabel lingkungan, Anda dapat mengganti baris berikut dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda. Namun, kami tidak menyarankan hard-coding Kunci API ke dalam kode Anda di lingkungan produksi untuk mengurangi risiko kebocoran. # Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key api_key=os.getenv("DASHSCOPE_API_KEY"), # Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1 base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1" # base_url untuk layanan Alibaba Cloud Model Studio ) def upload_file(file_path): print(f"Mengunggah file JSONL yang berisi informasi permintaan...") file_object = client.files.create(file=Path(file_path), purpose="batch") print(f"File berhasil diunggah. ID File: {file_object.id}\n") return file_object.id def create_batch_job(input_file_id): print(f"Membuat pekerjaan batch berdasarkan ID file...") # Catatan: Nilai parameter endpoint di sini harus sama dengan field url dalam file masukan. Untuk model uji (batch-test-model), masukkan /v1/chat/ds-test. Untuk model text embedding, masukkan /v1/embeddings. Untuk model lainnya, masukkan /v1/chat/completions. batch = client.batches.create(input_file_id=input_file_id, endpoint="/v1/chat/ds-test", completion_window="24h") print(f"Pekerjaan batch berhasil dibuat. ID Pekerjaan Batch: {batch.id}\n") return batch.id def check_job_status(batch_id): print(f"Memeriksa status pekerjaan batch...") batch = client.batches.retrieve(batch_id=batch_id) print(f"Status pekerjaan batch: {batch.status}\n") return batch.status def get_output_id(batch_id): print(f"Mendapatkan ID file output untuk permintaan yang berhasil dalam pekerjaan batch...") batch = client.batches.retrieve(batch_id=batch_id) print(f"ID file output: {batch.output_file_id}\n") return batch.output_file_id def get_error_id(batch_id): print(f"Mendapatkan ID file error untuk permintaan yang gagal dalam pekerjaan batch...") batch = client.batches.retrieve(batch_id=batch_id) print(f"ID file error: {batch.error_file_id}\n") return batch.error_file_id def download_results(output_file_id, output_file_path): print(f"Mencetak dan mengunduh hasil permintaan yang berhasil dari pekerjaan batch...") content = client.files.content(output_file_id) # Cetak beberapa konten untuk pengujian print(f"Mencetak 1.000 karakter pertama dari hasil yang berhasil: {content.text[:1000]}...\n") # Simpan file hasil ke mesin lokal Anda content.write_to_file(output_file_path) print(f"Hasil output lengkap telah disimpan ke file output lokal result.jsonl\n") def download_errors(error_file_id, error_file_path): print(f"Mencetak dan mengunduh informasi untuk permintaan yang gagal dari pekerjaan batch...") content = client.files.content(error_file_id) # Cetak beberapa konten untuk pengujian print(f"Mencetak 1.000 karakter pertama dari informasi permintaan yang gagal: {content.text[:1000]}...\n") # Simpan file informasi error ke mesin lokal Anda content.write_to_file(error_file_path) print(f"Informasi permintaan yang gagal lengkap telah disimpan ke file error lokal error.jsonl\n") def main(): # Path file input_file_path = "test_model.jsonl" # Ganti dengan path file masukan Anda output_file_path = "result.jsonl" # Ganti dengan path file output Anda error_file_path = "error.jsonl" # Ganti dengan path file error Anda try: # Langkah 1: Unggah file JSONL yang berisi informasi permintaan untuk mendapatkan ID file masukan input_file_id = upload_file(input_file_path) # Langkah 2: Buat pekerjaan batch berdasarkan ID file masukan batch_id = create_batch_job(input_file_id) # Langkah 3: Periksa status pekerjaan batch hingga selesai status = "" while status not in ["completed", "failed", "expired", "cancelled"]: status = check_job_status(batch_id) print(f"Menunggu pekerjaan selesai...") time.sleep(10) # Tunggu 10 detik sebelum memeriksa status lagi # Jika pekerjaan gagal, cetak pesan error dan keluar if status == "failed": batch = client.batches.retrieve(batch_id) print(f"Pekerjaan batch gagal. Informasi error: {batch.errors}\n") print(f"Untuk informasi lebih lanjut, lihat dokumentasi kode kesalahan: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code") return # Langkah 4: Unduh hasilnya. Jika ID file output ada, cetak 1.000 karakter pertama dari hasil yang berhasil dan unduh hasil lengkap ke file output lokal. # Jika ID file error ada, cetak 1.000 karakter pertama dari informasi permintaan yang gagal dan unduh informasi lengkap ke file error lokal. output_file_id = get_output_id(batch_id) if output_file_id: download_results(output_file_id, output_file_path) error_file_id = get_error_id(batch_id) if error_file_id: download_errors(error_file_id, error_file_path) print(f"Untuk informasi lebih lanjut, lihat dokumentasi kode kesalahan: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code") except Exception as e: print(f"Terjadi kesalahan: {e}") print(f"Untuk informasi lebih lanjut, lihat dokumentasi kode kesalahan: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code") if __name__ == "__main__": main()
Verifikasi hasil uji
Status pekerjaan menunjukkan
completed.File hasil
result.jsonl: Berisi respons tetap{"content":"This is a test result."}.{"id":"a2b1ae25-21f4-4d9a-8634-99a29926486c","custom_id":"1","response":{"status_code":200,"request_id":"a2b1ae25-21f4-4d9a-8634-99a29926486c","body":{"created":1743562621,"usage":{"completion_tokens":6,"prompt_tokens":20,"total_tokens":26},"model":"batch-test-model","id":"chatcmpl-bca7295b-67c3-4b1f-8239-d78323bb669f","choices":[{"finish_reason":"stop","index":0,"message":{"content":"This is a test result."}}],"object":"chat.completion"}},"error":null} {"id":"39b74f09-a902-434f-b9ea-2aaaeebc59e0","custom_id":"2","response":{"status_code":200,"request_id":"39b74f09-a902-434f-b9ea-2aaaeebc59e0","body":{"created":1743562621,"usage":{"completion_tokens":6,"prompt_tokens":20,"total_tokens":26},"model":"batch-test-model","id":"chatcmpl-1e32a8ba-2b69-4dc4-be42-e2897eac9e84","choices":[{"finish_reason":"stop","index":0,"message":{"content":"This is a test result."}}],"object":"chat.completion"}},"error":null}Jika terjadi kesalahan, lihat Pesan kesalahan untuk mengatasinya.
Setelah verifikasi uji coba berhasil, ikuti langkah-langkah berikut untuk menjalankan pekerjaan batch formal.
Persiapkan file masukan sesuai persyaratan file masukan. Atur parameter model dalam file ke model yang didukung dan atur parameter url ke: /v1/chat/completions
Ganti endpoint dalam skrip Python di atas.
PentingPastikan endpoint dalam skrip sesuai dengan parameter url dalam file masukan.
Jalankan skrip dan tunggu hingga pekerjaan selesai. Jika berhasil, file output bernama
result.jsonlakan dihasilkan di direktori yang sama.Jika pekerjaan gagal, program akan keluar dan mencetak pesan kesalahan.
Jika ID file error tersedia, file error bernama
error.jsonlakan dihasilkan di direktori yang sama untuk ditinjau.Pengecualian yang terjadi selama proses akan ditangkap, dan pesan kesalahan akan dicetak.
Format file data
File masukan
Sebelum membuat pekerjaan inferensi batch, siapkan file yang memenuhi spesifikasi berikut:
Format: JSONL ber-encoding UTF-8 (satu objek JSON independen per baris).
Batas ukuran: Satu file dapat berisi hingga 50.000 permintaan dan tidak lebih besar dari 500 MB.
Batas baris: Setiap objek JSON dapat mencapai 6 MB dan tidak boleh melebihi panjang konteks model.
Persyaratan konsistensi: Semua permintaan dalam satu file harus menggunakan model dan mode pemikiran yang sama (jika berlaku).
Pengenal unik: Setiap permintaan harus menyertakan bidang `custom_id` yang unik dalam file tersebut untuk mencocokkan hasil.
Contoh permintaan
{"custom_id":"1","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-plus","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"Hello!"}]}}
{"custom_id":"2","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-plus","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is 2+2?"}]}}Parameter permintaan
Bidang | Tipe | Wajib | Deskripsi |
custom_id | String | Ya | ID permintaan kustom. Setiap baris mewakili satu permintaan, dan setiap permintaan memiliki |
method | String | Ya | Metode permintaan. Saat ini, hanya POST yang didukung. |
url | String | Ya | URL yang terkait dengan API. Harus sama dengan bidang endpoint yang digunakan saat membuat pekerjaan batch.
|
body | Object | Ya | Badan permintaan untuk pemanggilan model. Berisi semua parameter yang diperlukan untuk memanggil model, seperti Parameter dalam badan permintaan konsisten dengan yang didukung oleh API inferensi real-time. Untuk informasi lebih lanjut tentang parameter tersebut, lihat API Kompatibel dengan OpenAI. Untuk memperluasnya lebih jauh, Anda juga dapat menambahkan parameter lain seperti Contoh: |
body.model | String | Ya | Model yang digunakan untuk pekerjaan batch ini. Penting Semua permintaan batch dalam pekerjaan yang sama harus menggunakan model yang sama. Mode pemikiran, jika didukung, juga harus konsisten. |
body.messages | Array | Ya | Daftar pesan. |
Konversi file CSV ke file JSONL
Jika Anda memiliki file CSV dengan kolom pertama sebagai ID permintaan (custom_id) dan kolom kedua sebagai konten, gunakan kode Python berikut untuk membuat file JSONL bagi pekerjaan batch secara cepat. File CSV harus berada di direktori yang sama dengan skrip Python di bawah ini.
Anda juga dapat menggunakan file templat yang disediakan dalam topik ini. Langkah-langkahnya adalah sebagai berikut:
Unduh file templat ke mesin lokal Anda dan letakkan di direktori yang sama dengan skrip Python berikut.
Dalam file templat CSV ini, kolom pertama adalah ID permintaan (custom_id) dan kolom kedua adalah konten. Anda dapat menempelkan pertanyaan bisnis Anda ke dalam file ini.
Setelah menjalankan skrip Python berikut, file JSONL bernama input_demo.jsonl untuk pekerjaan batch akan dihasilkan di direktori yang sama.
Untuk menyesuaikan path file atau parameter lainnya, Anda dapat memodifikasi kode sesuai kebutuhan.
import csv
import json
def messages_builder_example(content):
messages = [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": content}]
return messages
with open("input_demo.csv", "r") as fin:
with open("input_demo.jsonl", 'w', encoding='utf-8') as fout:
csvreader = csv.reader(fin)
for row in csvreader:
body = {"model": "qwen-turbo", "messages": messages_builder_example(row[1])}
# Nilai default adalah /v1/chat/completions.
request = {"custom_id": row[0], "method": "POST", "url": "/v1/chat/completions", "body": body}
fout.write(json.dumps(request, separators=(',', ':'), ensure_ascii=False) + "\n", )File output
File JSONL. Setiap baris adalah objek JSON yang sesuai dengan hasil permintaan.
Contoh respons
Contoh konten satu baris:
{"id":"73291560-xxx","custom_id":"1","response":{"status_code":200,"request_id":"73291560-7616-97bf-87f2-7d747bbe84fd","body":{"created":1742303743,"usage":{"completion_tokens":7,"prompt_tokens":26,"total_tokens":33},"model":"qwen-max","id":"chatcmpl-73291560-7616-97bf-87f2-7d747bbe84fd","choices":[{"finish_reason":"stop","index":0,"message":{"content":"2+2 equals 4."}}],"object":"chat.completion"}},"error":null}Contoh konten multi-baris:
{"id":"c308ef7f-xxx","custom_id":"1","response":{"status_code":200,"request_id":"c308ef7f-0824-9c46-96eb-73566f062426","body":{"created":1742303743,"usage":{"completion_tokens":35,"prompt_tokens":26,"total_tokens":61},"model":"qwen-max","id":"chatcmpl-c308ef7f-0824-9c46-96eb-73566f062426","choices":[{"finish_reason":"stop","index":0,"message":{"content":"Hello! Of course. I am here to support you, whether you need to query information, find learning materials, get solutions to problems, or need any other help. Please tell me what you need help with."}}],"object":"chat.completion"}},"error":null}
{"id":"73291560-xxx","custom_id":"2","response":{"status_code":200,"request_id":"73291560-7616-97bf-87f2-7d747bbe84fd","body":{"created":1742303743,"usage":{"completion_tokens":7,"prompt_tokens":26,"total_tokens":33},"model":"qwen-max","id":"chatcmpl-73291560-7616-97bf-87f2-7d747bbe84fd","choices":[{"finish_reason":"stop","index":0,"message":{"content":"2+2 equals 4."}}],"object":"chat.completion"}},"error":null}Parameter respons
Bidang | Tipe | Wajib | Deskripsi |
id | String | Ya | ID permintaan. |
custom_id | String | Ya | ID permintaan kustom. |
response | Object | Tidak | Hasil permintaan. |
error | Object | Tidak | Hasil respons abnormal. |
error.code | String | Tidak | Kode kesalahan. |
error.message | String | Tidak | Pesan kesalahan. |
completion_tokens | Integer | Tidak | Jumlah token yang diperlukan untuk menyelesaikan generasi. |
prompt_tokens | Integer | Tidak | Jumlah token dalam prompt. |
model | String | Tidak | Model yang digunakan untuk inferensi dalam pekerjaan ini. |
Konversi file JSONL ke file CSV
Dibandingkan dengan file JSONL, file CSV biasanya hanya berisi nilai data yang diperlukan tanpa kunci atau metadata tambahan, sehingga ideal untuk skrip otomatis dan pekerjaan batch. Untuk mengonversi output JSONL dari pekerjaan batch ke file CSV, gunakan kode Python berikut.
Pastikan file result.jsonl berada di direktori yang sama dengan skrip Python di bawah ini. Setelah menjalankan skrip, file CSV bernama result.csv akan dihasilkan.
Untuk menyesuaikan path file atau parameter lainnya, Anda dapat memodifikasi kode sesuai kebutuhan.
import json
import csv
columns = ["custom_id",
"model",
"request_id",
"status_code",
"error_code",
"error_message",
"created",
"content",
"usage"]
def dict_get_string(dict_obj, path):
obj = dict_obj
try:
for element in path:
obj = obj[element]
return obj
except:
return None
with open("result.jsonl", "r") as fin:
with open("result.csv", 'w', encoding='utf-8') as fout:
rows = [columns]
for line in fin:
request_result = json.loads(line)
row = [dict_get_string(request_result, ["custom_id"]),
dict_get_string(request_result, ["response", "body", "model"]),
dict_get_string(request_result, ["response", "request_id"]),
dict_get_string(request_result, ["response", "status_code"]),
dict_get_string(request_result, ["error", "error_code"]),
dict_get_string(request_result, ["error", "error_message"]),
dict_get_string(request_result, ["response", "body", "created"]),
dict_get_string(request_result, ["response", "body", "choices", 0, "message", "content"]),
dict_get_string(request_result, ["response", "body", "usage"])]
rows.append(row)
writer = csv.writer(fout)
writer.writerows(rows)Jika file CSV berisi karakter Tionghoa dan Anda mengalami teks rusak saat membukanya dengan Excel, gunakan editor teks seperti Sublime untuk mengonversi encoding file CSV ke GBK lalu membukanya di Excel. Alternatifnya, buat file Excel baru dan tentukan format encoding yang benar, yaitu UTF-8, saat mengimpor data.
Prosedur
1. Persiapkan dan unggah file
Sebelum membuat pekerjaan batch, siapkan file JSONL yang memenuhi persyaratan file masukan. Unggah file menggunakan operasi API unggah file untuk mendapatkan file_id. Gunakan parameter `purpose` untuk menentukan tujuan file sebagai batch.
Ukuran maksimum satu file yang dapat diunggah untuk pekerjaan batch adalah 500 MB. Jumlah maksimum file yang diizinkan di ruang penyimpanan Model Studio Anda di bawah Akun Alibaba Cloud adalah 10.000, dengan ukuran total tidak melebihi 100 GB. File saat ini tidak memiliki tanggal kedaluwarsa.
SDK Python OpenAI
Contoh permintaan
import os
from pathlib import Path
from openai import OpenAI
client = OpenAI(
# Jika Anda belum mengonfigurasi variabel lingkungan, Anda dapat mengganti baris berikut dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda. Namun, kami tidak menyarankan hard-coding Kunci API ke dalam kode Anda di lingkungan produksi untuk mengurangi risiko kebocoran.
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1", # base_url untuk layanan Alibaba Cloud Model Studio
)
# test.jsonl adalah file contoh lokal. Tujuannya harus batch.
file_object = client.files.create(file=Path("test.jsonl"), purpose="batch")
print(file_object.model_dump_json())Isi file uji test.jsonl:
{"custom_id":"1","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-plus","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"Hello! How can I help you?"}]}}
{"custom_id":"2","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-plus","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is 2+2?"}]}}Contoh respons
{
"id": "file-batch-xxx",
"bytes": 437,
"created_at": 1742304153,
"filename": "test.jsonl",
"object": "file",
"purpose": "batch",
"status": "processed",
"status_details": null
}curl
Contoh permintaan
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1/files
# === Hapus komentar ini sebelum menjalankan ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/files \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"test.jsonl"' \
--form 'purpose="batch"'Isi file uji test.jsonl:
{"custom_id": "request-1", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "qwen-turbo", "messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What is 2+2?"}]}}Contoh respons
{
"id": "file-batch-xxx",
"bytes": 231,
"created_at": 1729065815,
"filename": "test.jsonl",
"object": "file",
"purpose": "batch",
"status": "processed",
"status_details": null
}2. Buat pekerjaan batch
Anda dapat membuat pekerjaan batch dengan mengatur parameter input_file_id ke ID file yang dikembalikan oleh operasi API Persiapkan dan unggah file.
Batas tingkat API: Setiap Akun Alibaba Cloud dapat melakukan hingga 1.000 panggilan per menit. Jumlah maksimum pekerjaan yang sedang berjalan adalah 1.000 (termasuk semua pekerjaan yang belum selesai). Jika melebihi batas tersebut, Anda harus menunggu pekerjaan selesai sebelum membuat yang baru.
SDK Python OpenAI
Contoh permintaan
import os
from openai import OpenAI
client = OpenAI(
# Jika Anda belum mengonfigurasi variabel lingkungan, Anda dapat mengganti baris berikut dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda. Namun, kami tidak menyarankan hard-coding Kunci API ke dalam kode Anda di lingkungan produksi untuk mengurangi risiko kebocoran.
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1", # base_url untuk layanan Alibaba Cloud Model Studio
)
batch = client.batches.create(
input_file_id="file-batch-xxx", # ID yang dikembalikan setelah mengunggah file
endpoint="/v1/chat/completions", # Untuk model uji batch-test-model, masukkan /v1/chat/ds-test. Untuk model lainnya, masukkan /v1/chat/completions.
completion_window="24h",
metadata={'ds_name':"Job Name",'ds_description':'Job Description'} # Metadata, bidang opsional, digunakan untuk membuat nama dan deskripsi pekerjaan
)
print(batch)curl
Contoh permintaan
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1/files
# === Hapus komentar ini sebelum menjalankan ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/batches \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input_file_id": "file-batch-xxx",
"endpoint": "/v1/chat/completions",
"completion_window": "24h",
"metadata":{"ds_name":"Job Name","ds_description":"Job Description"}
}'Ganti nilai input_file_id dengan nilai aktual.Pengaturan parameter masukan
Bidang | Tipe | Metode penerusan parameter | Wajib | Deskripsi |
input_file_id | String | Body | Ya | Menentukan ID file yang akan digunakan sebagai file masukan untuk pekerjaan batch. Gunakan ID file yang dikembalikan oleh operasi API Persiapkan dan unggah file, seperti |
endpoint | String | Body | Ya | Jalur akses. Harus sama dengan bidang url dalam file masukan.
|
completion_window | String | Body | Ya | Waktu tunggu. Waktu tunggu minimum adalah 24h, dan maksimum adalah 336h. Hanya bilangan bulat yang didukung. Unit yang didukung adalah "h" dan "d", seperti "24h" atau "14d". |
metadata | Map | Body | Tidak | Metadata tambahan untuk pekerjaan. Lampirkan informasi sebagai pasangan kunci-nilai. |
metadata.ds_name | String | Body | Tidak | Nama pekerjaan. Contoh: Batas: Panjang maksimum 100 karakter. Jika bidang ini didefinisikan beberapa kali, nilai terakhir yang diteruskan yang digunakan. |
metadata.ds_description | String | Body | Tidak | Deskripsi pekerjaan. Contoh: Batas: Panjang maksimum 200 karakter. Jika bidang ini didefinisikan beberapa kali, nilai terakhir yang diteruskan yang digunakan. |
Contoh respons
{
"id": "batch_xxx",
"object": "batch",
"endpoint": "/v1/chat/completions",
"errors": null,
"input_file_id": "file-batch-xxx",
"completion_window": "24h",
"status": "validating",
"output_file_id": null,
"error_file_id": null,
"created_at": 1742367779,
"in_progress_at": null,
"expires_at": null,
"finalizing_at": null,
"completed_at": null,
"failed_at": null,
"expired_at": null,
"cancelling_at": null,
"cancelled_at": null,
"request_counts": {
"total": 0,
"completed": 0,
"failed": 0
},
"metadata": {
"ds_name": "Job Name",
"ds_description": "Job Description"
}
}Parameter respons
Bidang | Tipe | Deskripsi |
id | String | ID pekerjaan batch. |
object | String | Jenis objek. Nilainya tetap |
endpoint | String | Jalur akses. |
errors | Map | Pesan kesalahan. |
input_file_id | String | ID file. |
completion_window | String | Waktu tunggu. Waktu tunggu minimum adalah 24h, dan maksimum adalah 336h. Hanya bilangan bulat yang didukung. Unit yang didukung adalah "h" dan "d", seperti "24h" atau "14d". |
status | String | Status pekerjaan, yang dapat berupa validating, failed, in_progress, finalizing, completed, expired, cancelling, atau cancelled. |
output_file_id | String | ID file output untuk permintaan yang berhasil. |
error_file_id | String | ID file output untuk permintaan yang gagal. |
created_at | Integer | Stempel waktu UNIX (dalam detik) saat pekerjaan dibuat. |
in_progress_at | Integer | Stempel waktu UNIX (dalam detik) saat pekerjaan mulai berjalan. |
expires_at | Integer | Stempel waktu (dalam detik) saat pekerjaan mulai habis waktu. |
finalizing_at | Integer | Stempel waktu (dalam detik) saat pekerjaan terakhir dimulai. |
completed_at | Integer | Stempel waktu (dalam detik) saat pekerjaan selesai. |
failed_at | Integer | Stempel waktu (dalam detik) saat pekerjaan gagal. |
expired_at | Integer | Stempel waktu (dalam detik) saat pekerjaan habis waktu. |
cancelling_at | Integer | Stempel waktu (dalam detik) saat pekerjaan diatur ke cancelling. |
cancelled_at | Integer | Stempel waktu (dalam detik) saat pekerjaan dibatalkan. |
request_counts | Map | Jumlah permintaan dalam status berbeda. |
metadata | Map | Informasi tambahan sebagai pasangan kunci-nilai. |
metadata.ds_name | String | Nama pekerjaan saat ini. |
metadata.ds_description | String | Deskripsi pekerjaan saat ini. |
3. Kueri dan kelola pekerjaan batch
Kueri detail pekerjaan batch
Teruskan ID pekerjaan batch yang dikembalikan oleh Buat pekerjaan batch untuk mengkueri informasi tentang pekerjaan batch tertentu. Anda hanya dapat mengkueri pekerjaan batch yang dibuat dalam 30 hari terakhir.
Batas tingkat API: Setiap Akun Alibaba Cloud dapat melakukan hingga 1.000 panggilan per menit. Karena pekerjaan batch memerlukan waktu untuk dieksekusi, kami menyarankan memanggil operasi API kueri ini sekali per menit setelah membuat pekerjaan batch untuk mengambil informasi terbaru.
SDK Python OpenAI
Contoh permintaan
import os
from openai import OpenAI
client = OpenAI(
# Jika Anda belum mengonfigurasi variabel lingkungan, Anda dapat mengganti baris berikut dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda. Namun, kami tidak menyarankan hard-coding Kunci API ke dalam kode Anda di lingkungan produksi untuk mengurangi risiko kebocoran.
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1", # base_url untuk layanan Alibaba Cloud Model Studio
)
batch = client.batches.retrieve("batch_id") # Ganti batch_id dengan ID pekerjaan batch
print(batch)curl
Contoh permintaan
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1/files
# === Hapus komentar ini sebelum menjalankan ===
curl --request GET 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/batches/batch_id' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY"Ganti batch_id dengan nilai aktual.Pengaturan parameter masukan
Bidang | Tipe | Metode penerusan parameter | Wajib | Deskripsi |
batch_id | String | Path | Ya | ID pekerjaan batch yang akan dikueri (ID pekerjaan batch yang dikembalikan oleh Buat pekerjaan batch), yang dimulai dengan "batch", misalnya, "batch_xxx". |
Contoh respons
Untuk informasi lebih lanjut, lihat contoh respons untuk Buat pekerjaan batch.
Parameter respons
Untuk informasi lebih lanjut, lihat parameter respons untuk Buat pekerjaan batch.
Nilai output_file_id dan error_file_id dalam parameter respons dapat diambil menggunakan Unduh file hasil batch.
Kueri daftar pekerjaan batch
Anda dapat menggunakan metode batches.list() untuk mengkueri daftar pekerjaan batch dan menggunakan mekanisme penomoran halaman guna mengambil daftar lengkap.
Gunakan parameter
after: Teruskan ID pekerjaan batch terakhir dari halaman sebelumnya untuk mengambil data halaman berikutnya.Gunakan parameter
limit: Atur jumlah pekerjaan yang akan dikembalikan.Anda dapat memfilter kueri menggunakan parameter seperti
input_file_ids.
Batas tingkat API: Setiap Akun Alibaba Cloud dapat melakukan hingga 100 panggilan per menit.
SDK Python OpenAI
Contoh permintaan
import os
from openai import OpenAI
client = OpenAI(
# Jika Anda belum mengonfigurasi variabel lingkungan, Anda dapat mengganti baris berikut dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda. Namun, kami tidak menyarankan hard-coding Kunci API ke dalam kode Anda di lingkungan produksi untuk mengurangi risiko kebocoran.
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1", # base_url untuk layanan Alibaba Cloud Model Studio
)
batches = client.batches.list(after="batch_xxx", limit=2,extra_query={'ds_name':'Job Name','input_file_ids':'file-batch-xxx,file-batch-xxx','status':'completed,expired','create_after':'20250304000000','create_before':'20250306123000'})
print(batches)curl
Contoh permintaan
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1/batches?xxxxxx
# === Hapus komentar ini sebelum menjalankan ===
curl --request GET 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/batches?after=batch_xxx&limit=2&ds_name=Batch&input_file_ids=file-batch-xxx,file-batch-xxx&status=completed,failed&create_after=20250303000000&create_before=20250320000000' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY"Gantibatch_iddalamafter=batch_iddengan nilai aktual. Atur parameterlimitke jumlah pekerjaan yang akan dikembalikan. Aturds_nameke fragmen nama pekerjaan. Untuk input_file_ids, Anda dapat memasukkan beberapa ID file. Aturstatuske beberapa status pekerjaan batch. Atur nilaicreate_afterdancreate_beforeke titik waktu tertentu.
Pengaturan parameter masukan
Bidang | Tipe | Metode penerusan parameter | Wajib | Deskripsi |
after | String | Query | Tidak | Kursor untuk penomoran halaman. Nilai parameter Misalnya, jika kueri saat ini mengembalikan 20 baris data dan ID pekerjaan batch terakhir (last_id) adalah batch_xxx, Anda dapat mengatur |
limit | Integer | Query | Tidak | Jumlah pekerjaan batch yang dikembalikan untuk setiap kueri. Rentangnya [1, 100]. Nilai default adalah 20. |
ds_name | String | Query | Tidak | Menjalankan pencarian fuzzy berdasarkan nama pekerjaan. Masukkan fragmen karakter berurutan apa pun untuk mencocokkan nama pekerjaan yang mengandungnya. Misalnya, memasukkan "Batch" dapat mencocokkan "Batch Job" dan "Batch Job_20240319". |
input_file_ids | String | Query | Tidak | Memfilter berdasarkan beberapa ID file, dipisahkan koma. Anda dapat memasukkan hingga 20 ID. ID file yang dikembalikan oleh Persiapkan dan unggah file. |
status | String | Query | Tidak | Memfilter berdasarkan beberapa status, dipisahkan koma. Statusnya meliputi validating, failed, in_progress, finalizing, completed, expired, cancelling, dan cancelled. |
create_after | String | Query | Tidak | Memfilter pekerjaan yang dibuat setelah titik waktu ini. Formatnya adalah |
create_before | String | Query | Tidak | Memfilter pekerjaan yang dibuat sebelum titik waktu ini. Formatnya adalah |
Contoh respons
{
"object": "list",
"data": [
{
"id": "batch_xxx",
"object": "batch",
"endpoint": "/v1/chat/completions",
"errors": null,
"input_file_id": "file-batch-xxx",
"completion_window": "24h",
"status": "completed",
"output_file_id": "file-batch_output-xxx",
"error_file_id": null,
"created_at": 1722234109,
"in_progress_at": 1722234109,
"expires_at": null,
"finalizing_at": 1722234165,
"completed_at": 1722234165,
"failed_at": null,
"expired_at": null,
"cancelling_at": null,
"cancelled_at": null,
"request_counts": {
"total": 100,
"completed": 95,
"failed": 5
},
"metadata": {}
},
{ ... }
],
"first_id": "batch_xxx",
"last_id": "batch_xxx",
"has_more": true
}Parameter respons
Bidang | Tipe | Deskripsi |
object | String | Jenisnya. Nilainya tetap list. |
data | Array | Objek pekerjaan batch. Untuk informasi lebih lanjut, lihat parameter respons untuk membuat pekerjaan batch. |
first_id | String | ID pekerjaan batch pertama di halaman saat ini. |
last_id | String | ID pekerjaan batch terakhir di halaman saat ini. |
has_more | Boolean | Menunjukkan apakah ada halaman berikutnya. |
Batalkan pekerjaan batch
Teruskan ID pekerjaan batch yang dikembalikan oleh Buat pekerjaan batch untuk membatalkan pekerjaan batch tertentu.
Batas tingkat API: Setiap Akun Alibaba Cloud dapat melakukan hingga 1.000 panggilan per menit.
SDK Python OpenAI
Contoh permintaan
import os
from openai import OpenAI
client = OpenAI(
# Jika Anda belum mengonfigurasi variabel lingkungan, Anda dapat mengganti baris berikut dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda. Namun, kami tidak menyarankan hard-coding Kunci API ke dalam kode Anda di lingkungan produksi untuk mengurangi risiko kebocoran.
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1", # base_url untuk layanan Alibaba Cloud Model Studio
)
batch = client.batches.cancel("batch_id") # Ganti batch_id dengan ID pekerjaan batch
print(batch)curl
Contoh permintaan
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1/batches/batch_id/cancel
# === Hapus komentar ini sebelum menjalankan ===
curl --request POST 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/batches/batch_id/cancel' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY"Ganti batch_id dengan nilai aktual.Pengaturan parameter masukan
Bidang | Tipe | Metode penerusan parameter | Wajib | Deskripsi |
batch_id | String | Path | Ya | ID pekerjaan batch yang akan dibatalkan, yang dimulai dengan "batch", misalnya, "batch_xxx". |
Contoh respons
Untuk informasi lebih lanjut, lihat contoh respons untuk Buat pekerjaan batch.
Parameter respons
Untuk informasi lebih lanjut, lihat parameter respons untuk Buat pekerjaan batch.
4. Unduh file hasil batch
Setelah pekerjaan inferensi batch selesai, Anda dapat menggunakan operasi API untuk mengunduh file hasil.
Anda dapat memperolehfile_iduntuk mengunduh file darioutput_file_iddalam parameter respons Kueri detail pekerjaan batchKueri daftar pekerjaan batchfile_iddimulai denganfile-batch_output.
SDK Python OpenAI
Anda dapat menggunakan metode content untuk mengambil konten file hasil pekerjaan batch dan metode write_to_file untuk menyimpannya ke mesin lokal Anda.
Contoh permintaan
import os
from openai import OpenAI
client = OpenAI(
# Jika Anda belum mengonfigurasi variabel lingkungan, Anda dapat mengganti baris berikut dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda. Namun, kami tidak menyarankan hard-coding Kunci API ke dalam kode Anda di lingkungan produksi untuk mengurangi risiko kebocoran.
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
content = client.files.content(file_id="file-batch_output-xxx")
# Cetak konten file hasil
print(content.text)
# Simpan file hasil ke mesin lokal Anda
content.write_to_file("result.jsonl")Contoh respons
{"id":"c308ef7f-xxx","custom_id":"1","response":{"status_code":200,"request_id":"c308ef7f-0824-9c46-96eb-73566f062426","body":{"created":1742303743,"usage":{"completion_tokens":35,"prompt_tokens":26,"total_tokens":61},"model":"qwen-plus","id":"chatcmpl-c308ef7f-0824-9c46-96eb-73566f062426","choices":[{"finish_reason":"stop","index":0,"message":{"content":"Hello! Of course. I am here to support you, whether you need to query information, find learning materials, get solutions to problems, or need any other help. Please tell me what you need help with."}}],"object":"chat.completion"}},"error":null}
{"id":"73291560-xxx","custom_id":"2","response":{"status_code":200,"request_id":"73291560-7616-97bf-87f2-7d747bbe84fd","body":{"created":1742303743,"usage":{"completion_tokens":7,"prompt_tokens":26,"total_tokens":33},"model":"qwen-plus","id":"chatcmpl-73291560-7616-97bf-87f2-7d747bbe84fd","choices":[{"finish_reason":"stop","index":0,"message":{"content":"2+2 equals 4."}}],"object":"chat.completion"}},"error":null}curl
Anda dapat menggunakan metode GET dan menentukan file_id dalam URL untuk mengunduh file hasil pekerjaan batch.
Contoh permintaan
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1/batches/batch_id/cancel
# === Hapus komentar ini sebelum menjalankan ===
curl -X GET https://dashscope-intl.aliyuncs.com/compatible-mode/v1/files/file-batch_output-xxx/content \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" > result.jsonlPengaturan parameter masukan
Bidang | Tipe | Metode penerusan parameter | Wajib | Deskripsi |
file_id | string | Path | Ya | ID file yang akan diunduh. Ini adalah nilai parameter |
Hasil yang dikembalikan
File JSONL hasil pekerjaan batch. Untuk informasi lebih lanjut tentang formatnya, lihat File output.
Fitur tambahan
Penagihan
Harga satuan: Harga satuan untuk semua token masukan dan output yang berhasil adalah 50% dari harga inferensi real-time untuk model yang sesuai. Untuk informasi lebih lanjut, lihat Daftar model.
Lingkup penagihan:
Hanya permintaan yang berhasil dieksekusi dalam pekerjaan yang ditagih.
Kegagalan parsing file, kegagalan eksekusi pekerjaan, atau permintaan kesalahan tingkat baris tidak dikenakan biaya.
Untuk pekerjaan yang dibatalkan, permintaan yang berhasil diselesaikan sebelum pembatalan tetap ditagih secara normal.
Inferensi batch merupakan item penagihan terpisah dan tidak mendukung diskon seperti langganan (rencana penghematan), kuota gratis untuk pengguna baru, atau fitur seperti cache konteks.
Kode kesalahan
Jika panggilan gagal dan pesan kesalahan dikembalikan, lihat Pesan kesalahan untuk mengatasinya.
FAQ
Apakah saya perlu memesan untuk menggunakan panggilan batch? Jika ya, di mana?
J: Batch adalah metode pemanggilan dan tidak memerlukan pesanan tambahan. Metode ini menggunakan model penagihan bayar sesuai penggunaan, di mana Anda membayar langsung untuk panggilan operasi API batch.
Bagaimana permintaan panggilan batch yang dikirim diproses di latar belakang? Apakah dieksekusi sesuai urutan pengiriman?
J: Ini bukan mekanisme antrian, melainkan mekanisme penjadwalan. Pekerjaan permintaan batch dijadwalkan dan dieksekusi berdasarkan ketersediaan sumber daya.
Berapa lama waktu yang sebenarnya dibutuhkan untuk menyelesaikan permintaan panggilan batch yang dikirim?
J: Waktu eksekusi pekerjaan batch bergantung pada alokasi sumber daya sistem.
Saat sumber daya sistem terbatas, pekerjaan mungkin tidak sepenuhnya selesai dalam waktu tunggu maksimum yang ditetapkan.
Oleh karena itu, untuk skenario dengan persyaratan ketat mengenai ketepatan waktu inferensi model, kami menyarankan menggunakan panggilan real-time. Untuk skenario yang melibatkan pemrosesan data skala besar dan memiliki toleransi tertentu terhadap ketepatan waktu, kami menyarankan menggunakan panggilan batch.