This guide covers how to submit and manage quantum computing tasks.
| Tool | Description |
|---|---|
sample_tool |
Execute quantum circuit sampling |
estimate_tool |
Execute expectation estimation |
batch_sample_tool |
Batch sampling with multiple circuits |
batch_estimate_tool |
Batch estimation with multiple circuits |
get_task_status_tool |
Check task status |
get_task_results_tool |
Retrieve task results |
cancel_task_tool |
Cancel a running task |
list_my_tasks_tool |
List recent tasks |
Sampling executes a quantum circuit multiple times and returns measurement outcomes.
circuit = """QINIT 2
CREG 2
H q[0]
CNOT q[0],q[1]
MEASURE q[0],c[0]
MEASURE q[1],c[1]"""
result = await sample_tool(
circuit=circuit,
device_id="20",
shots=1000
)
task_id = result["task_id"]Submit multiple circuits at once:
circuits = [
"QINIT 2\nCREG 2\nH q[0]\nCNOT q[0],q[1]\nMEASURE q[0],c[0]\nMEASURE q[1],c[1]",
"QINIT 2\nCREG 2\nX q[0]\nCNOT q[0],q[1]\nMEASURE q[0],c[0]\nMEASURE q[1],c[1]"
]
result = await batch_sample_tool(
circuits=circuits,
device_id="20",
shots=1000
)Estimation computes the expectation value of an observable.
# Circuit WITHOUT measurements
circuit = """QINIT 2
CREG 2
H q[0]
CNOT q[0],q[1]"""
# Observable as dictionary
observable = {"Z0 Z1": 1.0}
result = await estimate_tool(
circuit=circuit,
observable=observable,
device_id="20"
)Multiple circuits with one observable:
circuits = [
"QINIT 2\nCREG 2\nH q[0]\nCNOT q[0],q[1]",
"QINIT 2\nCREG 2\nX q[0]\nCNOT q[0],q[1]"
]
result = await batch_estimate_tool(
circuits=circuits,
observable={"Z0 Z1": 1.0},
device_id="20"
)status = await get_task_status_tool(task_id="task_12345")
print(f"Status: {status['task_status']}")
print(f"Progress: {status.get('progress', 'unknown')}")| Status | Description |
|---|---|
PENDING |
Waiting in queue |
RUNNING |
Currently executing |
DONE |
Completed successfully |
FAILED |
Execution failed |
CANCELLED |
Cancelled by user |
# First check if done
status = await get_task_status_tool(task_id)
if status["task_status"] == "DONE":
results = await get_task_results_tool(task_id)
# For sampling tasks
for outcome in results["results"]:
print(f"Outcome: {outcome['key']}")
print(f"Probability: {outcome['value']}"){
"status": "success",
"task_id": "task_12345",
"task_status": "DONE",
"results": [
{
"key": ["0x0", "0x1", "0x2", "0x3"],
"value": [0.002, 0.036, 0.044, 0.918]
}
]
}result = await cancel_task_tool(task_id="task_12345")
if result["status"] == "success":
print("Task cancelled successfully")tasks = await list_my_tasks_tool(limit=10)
for task in tasks["tasks"]:
print(f"Task: {task['task_id']}")
print(f"Status: {task['status']}")
print(f"Created: {task['creation_date']}")# 1. Submit task
result = await sample_tool(
circuit=circuit,
device_id="20",
shots=1000
)
task_id = result["task_id"]
print(f"Submitted: {task_id}")
# 2. Poll for completion
import asyncio
while True:
status = await get_task_status_tool(task_id)
print(f"Status: {status['task_status']}")
if status["task_status"] == "DONE":
break
elif status["task_status"] == "FAILED":
print("Task failed!")
break
await asyncio.sleep(5) # Wait before polling again
# 3. Get results
results = await get_task_results_tool(task_id)
print(f"Results: {results['results']}")