IBM Qiskit Runtime Client

0.46.1 · active · verified Tue Apr 14

Qiskit IBM Runtime is the official client library for interacting with the IBM Quantum Platform's Qiskit Runtime service. It streamlines quantum computations by providing optimized implementations of Qiskit primitives (Sampler and Estimator) for IBM Quantum hardware, leveraging classical computing resources for tasks like error suppression and mitigation. The library is currently at version 0.46.1 and requires Python >=3.10.

Warnings

Install

Imports

Quickstart

This quickstart guides you through authenticating with the IBM Quantum Platform, creating a simple Bell state quantum circuit, and executing it on a real quantum backend using the `SamplerV2` primitive within a session. It emphasizes setting up credentials via environment variables for security and finding a suitable backend.

import os
from qiskit import QuantumCircuit
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler, Session

# Set your IBM Quantum Platform API token and instance CRN as environment variables
# Or save them locally with QiskitRuntimeService.save_account(token="YOUR_API_TOKEN", instance="YOUR_CRN")
# API token: From your IBM Quantum Platform account page (https://quantum.ibm.com/account)
# CRN: From the Instances page on the IBM Quantum Platform (e.g., ibm-q/open/main)

# Initialize the service (ensure API token and instance are set via env vars or saved)
service = QiskitRuntimeService(channel="ibm_quantum_platform")

# Get a least busy backend that supports Sampler
backend = service.least_busy(simulator=False, min_num_qubits=2, max_credits=10)
print(f"Using backend: {backend.name}")

# Create a simple Bell state circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

# Define the input for Sampler (a PUB: Primitive Unified Bloc)
pubs = [(qc,)] # A single circuit to run

# Run the circuit using SamplerV2 within a session
with Session(service=service, backend=backend) as session:
    sampler = Sampler()
    job = sampler.run(pubs=pubs)
    print(f"Job ID: {job.job_id}")
    result = job.result()

    # Get the quasi-probability distribution result for the first PUB
    quasi_dists = result[0].data.meas.get_counts()
    print(f"Quasi-probability distribution: {quasi_dists}")

view raw JSON →