Langkau ke kandungan utama

Mod pelaksanaan menggunakan REST API

Anda boleh menjalankan beban kerja primitif Qiskit menggunakan REST API dalam salah satu daripada tiga mod pelaksanaan, bergantung pada keperluan anda: job, session, dan batch. Topik ini menerangkan mod-mod tersebut.

nota

Dokumentasi ini menggunakan modul Python requests untuk menunjukkan REST API Qiskit Runtime. Walau bagaimanapun, aliran kerja ini boleh dilaksanakan menggunakan mana-mana bahasa atau rangka kerja yang menyokong kerja dengan REST API. Rujuk dokumentasi rujukan API untuk butiran lanjut.

Mod job dengan REST API​

Dalam mod job, satu permintaan primitif tunggal daripada Estimator atau Sampler dibuat tanpa pengurus konteks. Lihat cara menjalankan litar kuantum menggunakan Estimator dan Sampler untuk beberapa contoh.

Mod session dengan REST API​

Session ialah ciri Qiskit Runtime yang membolehkan anda menjalankan beban kerja berbilang job secara berulang pada komputer kuantum dengan cekap. Menggunakan session membantu mengelakkan kelewatan akibat baris gilir setiap job secara berasingan, yang amat berguna untuk tugas berulang yang memerlukan komunikasi kerap antara sumber klasik dan kuantum. Butiran lanjut tentang Session boleh didapati dalam dokumentasi.

nota

Pengguna Open Plan tidak boleh menghantar job session.

Mulakan session​

Mulakan dengan mencipta session dan mendapatkan ID session.

import json
import requests

sessionsUrl = "https://quantum.cloud.ibm.com/api/v1/sessions"
auth_id = "Bearer <YOUR_BEARER_TOKEN>"
backend = "<BACKEND_NAME>"
crn = "<SERVICE-CRN>"

headersList = {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": auth_id,
"Service-CRN": crn
}

payload = json.dumps({
"backend": backend,
"mode": 'dedicated',
})

response = requests.request("POST", sessionsUrl, data=payload, headers=headersList)

sessionId = response.json()['id']

print(response.json())

Output

{'id': 'crw9s7cdbt40008jxesg'}

Tutup session​

Adalah amalan yang baik untuk menutup Session apabila semua job selesai. Ini akan mengurangkan masa menunggu bagi pengguna berikutnya.

closureURL="https://quantum.cloud.ibm.com/api/v1/sessions/"+sessionId+"/close"

headersList = {
"Accept": "application/json",
"Authorization": auth_id,
"Service-CRN": crn
}

closure_response = requests.request(
"DELETE",
closureURL,
headers=headersList
)

print("Session closure response ok?:",closure_response.ok,closure_response.text)

Output

Session closure response ok?: True

Mod batch dengan REST API​

Sebagai alternatif, anda boleh menghantar job batch dengan menentukan mode dalam muatan permintaan. Mod batch boleh membantu memendekkan masa pemprosesan jika semua job boleh diberikan sekaligus. Ketahui lebih lanjut tentang mod batch dalam panduan pengenalan kepada mod pelaksanaan.

import json
import requests

sessionsUrl = "https://quantum.cloud.ibm.com/api/v1/sessions"

headersList = {
"Accept": "application/json",
"Authorization": auth_id,
"Service-CRN": crn,
'Content-Type': 'application/json'
}

payload = json.dumps({
"backend": backend,
"instance": "hub1/group1/project1",
"mode": "batch"
})

response = requests.request("POST", sessionsUrl, data=payload, headers=headersList)

sessionId = response.json()['id']

Contoh job yang dihantar dalam session​

Setelah session ditetapkan, satu atau lebih job Sampler atau Estimator boleh dihantar ke session yang sama dengan menentukan ID session.

nota

<nilai parameter> dalam sesebuah PUB boleh berupa parameter tunggal atau senarai parameter. Ia juga menyokong penyiaran numpy.

Job Estimator dalam mod session​

job_input = {
'program_id': 'estimator',
"backend": backend,
"session_id": sessionId, # This specifies the previously created Session
"params": {
"pubs": [[resulting_qasm, [obs1, obs2, obs3, obs4]]], #primitive unified blocs (PUBs) containing one circuit each.
"options":{
"transpilation":{"optimization_level": 1},
"twirling": {"enable_gates": True,"enable_measure": True},
# "dynamical_decoupling": {"enable": True, "sequence_type": "XpXm"}, #(optional)
},
}

}

Job Sampler dalam mod session​

job_input = {
'program_id': 'sampler',
"backend": backend,
"session_id": sessionId, # This specifies the previously created Session
"params": {
"pubs": [[resulting_qasm]], #primitive unified blocs (PUBs) containing one circuit each
"options":{
"transpilation":{"optimization_level": 1},
"twirling": {"enable_gates": True,"enable_measure": True},
# "dynamical_decoupling": {"enable": True, "sequence_type": "XpXm"}, #(optional)
},
}

}

Langkah seterusnya​

Cadangan
Source: IBM Quantum docs — updated 27 Apr 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of 11 Mac 2026