Vai al contenuto principale

Qiskit Code Assistant

Gli LLM di Qiskit Code Assistant mirano a rendere il quantum computing più accessibile ai nuovi utenti di Qiskit e a migliorare l'esperienza di programmazione per gli utenti già attivi. È stato addestrato utilizzando milioni di token di testo dal Qiskit SDK, anni di esempi di codice Qiskit e le funzionalità di IBM Quantum®. Qiskit Code Assistant può supportare il tuo flusso di lavoro per lo sviluppo quantistico offrendo suggerimenti generati da LLM basati sui modelli IBM Granite e altri modelli open source, che incorporano le funzionalità e le caratteristiche più recenti di IBM®.

Note

Il Large Language Model (LLM) alla base di Qiskit Code Assistant

Per fornire suggerimenti di codice, Qiskit Code Assistant utilizza un Large Language Model (LLM). In questo caso, Qiskit Code Assistant si basa attualmente sul modello mistral-small-3.2-24b-qiskit, costruito sul modello Mistral-Small-3.2-24B-Qiskit. Il modello mistral-small-3.2-24b-qiskit migliora le capacità di generazione del codice per Qiskit del modello Mistral-Small-3.2-24B-Instruct-2506 attraverso un pre-addestramento esteso e il fine-tuning su dati Qiskit di alta qualità, nonché commit Python e chat. Per ulteriori informazioni sulla famiglia di modelli Mistral AI, consulta la documentazione di Mistral AI. Per maggiori dettagli sui modelli .*-qiskit, vedi Qiskit Code Assistant: Training LLMs for generating Quantum Computing Code.

I nostri LLM specializzati per Qiskit sono disponibili anche come modelli open source. Consulta tutti i modelli disponibili su https://huggingface.co/Qiskit.

I benchmark Qiskit HumanEval e Qiskit HumanEval Hard

Per testare il modello mistral-small-3.2-24b-qiskit e altri modelli, abbiamo collaborato con i Qiskit Advocates ed esperti del settore per creare i benchmark basati sull'esecuzione chiamati Qiskit HumanEval (QHE) e Qiskit HumanEval Hard (QHE Hard), ed eseguirli sui modelli. Questi benchmark sono simili a HumanEval e includono molteplici problemi di codice impegnativi da risolvere, tutti basati sulle librerie ufficiali di Qiskit.

I benchmark sono composti da circa 150 test, ognuno dei quali è composto da una definizione di funzione seguita da una docstring che dettaglia il compito che il modello deve risolvere. Ogni esempio include anche una soluzione canonica di riferimento e unit test per valutare la correttezza delle soluzioni generate. Esistono tre livelli di difficoltà per i test: base, intermedio e difficile. Il benchmark Qiskit HumanEval Hard è una variante del Qiskit HumanEval, ma rimuove le informazioni relative agli import del codice, quindi l'LLM deve determinare autonomamente i giusti import di metodi o classi. Questa modifica rende il dataset molto più impegnativo per gli LLM, secondo i nostri test e i risultati iniziali.

I dataset per Qiskit HumanEval e Qiskit HumanEval Hard sono disponibili sui seguenti siti: Qiskit HumanEval e Qiskit HumanEval. Puoi contribuire allo sviluppo di questi benchmark nel repository GitHub.

Installa Qiskit Code Assistant

Scopri come installare, configurare e usare uno qualsiasi dei modelli di Qiskit Code Assistant sulla tua macchina locale.

Scarica dal sito di Hugging Face

Segui questi passaggi per scaricare qualsiasi modello correlato a Qiskit Code Assistant dal sito di Hugging Face:

  1. Vai alla pagina del modello Qiskit desiderato su Hugging Face.
  2. Vai alla scheda Files and Versions e scarica i file del modello in formato safetensors o GGUF.
Scarica usando la CLI di Hugging Face

Per scaricare uno qualsiasi dei modelli Qiskit Code Assistant disponibili usando la CLI di Hugging Face, segui questi passaggi:

  1. Installa la CLI di Hugging Face

  2. Accedi al tuo account Hugging Face

    huggingface-cli login
  3. Scarica il modello che preferisci dall'elenco precedente

    huggingface-cli download <HF REPO NAME> <MODEL PATH> --local-dir <LOCAL PATH>
Distribuisci manualmente i modelli Qiskit Code Assistant in locale tramite Ollama

Esistono diversi modi per distribuire e interagire con il modello Qiskit Code Assistant scaricato. Questa guida illustra l'uso di Ollama: tramite l'applicazione Ollama usando l'integrazione con Hugging Face Hub o il modello locale, oppure con il pacchetto llama-cpp-python.

Usare l'applicazione Ollama

L'applicazione Ollama offre una soluzione semplice per eseguire gli LLM in locale. È facile da usare, con una CLI che rende l'intero processo di configurazione, la gestione dei modelli e l'interazione piuttosto semplici. È ideale per sperimentazioni rapide e per gli utenti che vogliono gestire meno dettagli tecnici.

Installa Ollama
  1. Scarica l'applicazione Ollama

  2. Installa il file scaricato

  3. Avvia l'applicazione Ollama installata

    info

    L'applicazione è in esecuzione correttamente quando l'icona di Ollama appare nella barra dei menu del desktop. Puoi anche verificare che il servizio sia in esecuzione andando su http://localhost:11434/.

  4. Prova Ollama nel terminale e inizia a eseguire i modelli. Per esempio:

    ollama run hf.co/Qiskit/Qwen2.5-Coder-14B-Qiskit
Configura Ollama usando l'integrazione con Hugging Face Hub

L'integrazione Ollama/Hugging Face Hub offre un modo per interagire con i modelli ospitati su Hugging Face Hub senza dover creare un nuovo modelfile né scaricare manualmente i file GGUF o safetensors. I file template e params predefiniti sono già inclusi per il modello su Hugging Face Hub.

  1. Assicurati che l'applicazione Ollama sia in esecuzione.

  2. Vai alla pagina del modello desiderato e copia l'URL. Per esempio, https://huggingface.co/Qiskit/Qwen2.5-Coder-14B-Qiskit-GGUF.

  3. Dal terminale, esegui il comando:

    ollama run hf.co/Qiskit/Qwen2.5-Coder-14B-Qiskit

Puoi usare il modello hf.co/Qiskit/Qwen2.5-Coder-14B-Qiskit o uno degli altri modelli GGUF ufficiali attualmente consigliati hf.co/Qiskit/mistral-small-3.2-24b-qiskit-GGUF o hf.co/Qiskit/granite-3.3-8b-qiskit-GGUF.

Configura Ollama con un modello GGUF di Qiskit Code Assistant scaricato manualmente

Se hai scaricato manualmente un modello GGUF come https://huggingface.co/Qiskit/Qwen2.5-Coder-14B-Qiskit-GGUF e vuoi sperimentare con template e parametri diversi, puoi seguire questi passaggi per caricarlo nell'applicazione Ollama locale.

  1. Crea un Modelfile inserendo il seguente contenuto e assicurati di aggiornare <PATH-TO-GGUF-FILE> con il percorso effettivo del modello scaricato.

    FROM <PATH-TO-GGUF-FILE>
    TEMPLATE """{{ if .System }}
    System:
    {{ .System }}

    {{ end }}{{ if .Prompt }}Question:
    {{ .Prompt }}

    {{ end }}Answer:
    ```python{{ .Response }}
    """

    PARAMETER stop "Question:"
    PARAMETER stop "Answer:"
    PARAMETER stop "System:"
    PARAMETER stop "```"

    PARAMETER temperature 0
    PARAMETER top_k 1
  2. Esegui il seguente comando per creare un'istanza del modello personalizzata basata sul Modelfile.

    ollama create Qwen2.5-Coder-14B-Qiskit -f ./path-to-model-file
    nota

    Questo processo potrebbe richiedere del tempo affinché Ollama legga il file del modello, inizializzi l'istanza del modello e la configuri in base alle specifiche fornite.

Esegui il modello Qiskit Code Assistant scaricato manualmente in Ollama

Dopo che il modello Qwen2.5-Coder-14B-Qiskit è stato configurato in Ollama, esegui il seguente comando per avviare il modello e interagire con esso nel terminale (in modalità chat).

ollama run Qwen2.5-Coder-14B-Qiskit

Alcuni comandi utili:

  • ollama list - Elenca i modelli sul tuo computer
  • ollama rm Qwen2.5-Coder-14B-Qiskit - Elimina il modello
  • ollama show Qwen2.5-Coder-14B-Qiskit - Mostra le informazioni sul modello
  • ollama stop Qwen2.5-Coder-14B-Qiskit - Ferma un modello attualmente in esecuzione
  • ollama ps - Elenca i modelli attualmente caricati
Distribuisci manualmente i modelli Qiskit Code Assistant in locale tramite il pacchetto llama-cpp-python

Un'alternativa all'applicazione Ollama è il pacchetto llama-cpp-python, che è un binding Python per llama.cpp. Offre maggiore controllo e flessibilità per eseguire il modello GGUF in locale ed è ideale per gli utenti che desiderano integrare il modello locale nei propri flussi di lavoro e applicazioni Python.

  1. Installa llama-cpp-python
  2. Interagisci con il modello dalla tua applicazione usando llama_cpp. Per esempio:
from llama_cpp import Llama

model_path = <PATH-TO-GGUF-FILE>

model = Llama(
model_path,
seed=17,
n_ctx=10000,
n_gpu_layers=37, # to offload in gpu, but put 0 if all in cpu
)

input = 'Generate a quantum circuit with 2 qubits'
raw_pred = model(input)["choices"][0]["text"]

Puoi anche aggiungere parametri di generazione del testo al modello per personalizzare l'inferenza:

generation_kwargs = {
"max_tokens": 512,
"echo": False, # Echo the prompt in the output
"top_k": 1
}

raw_pred = model(input, **generation_kwargs)["choices"][0]["text"]
Distribuisci manualmente i modelli Qiskit Code Assistant in locale tramite llama.cpp

Usa la libreria llama.cpp

Un'altra alternativa è usare llama.cpp, una libreria open source per eseguire l'inferenza LLM su CPU con una configurazione minima. Fornisce un controllo di basso livello sull'esecuzione del modello e viene tipicamente avviata dalla riga di comando, puntando a un file di modello GGUF locale.

Esistono diversi modi per installare llama.cpp sulla tua macchina:

Una volta installato, puoi usare llama.cpp per interagire con i modelli GGUF in modalità conversazione come segue:

# Use a local model file
llama-cli -m my_model.gguf -cnv

# Or download and run a model directly from Hugging Face
llama-cli -hf Qiskit/Qwen2.5-Coder-14B-Qiskit-GGUF -cnv

Puoi anche avviare un server API compatibile con OpenAI per il modello nel seguente modo:

llama-server -hf Qiskit/Qwen2.5-Coder-14B-Qiskit-GGUF
Parametri avanzati

Con il programma llama-cli, puoi controllare la generazione del modello usando opzioni della riga di comando. Per esempio, puoi fornire un prompt “system” iniziale usando il flag -p/--prompt. In modalità conversazione (-cnv), questo prompt iniziale funge da messaggio di sistema. Altrimenti, puoi semplicemente anteporre qualsiasi istruzione desiderata al testo del prompt. Puoi anche regolare i parametri di campionamento - per esempio: temperatura (--temp), top-k (--top-k), top-p (--top-p), penalità di ripetizione (--repeat-penalty) e il seed da usare (--seed). Di seguito è riportato un esempio di invocazione che usa queste opzioni:

llama-cli -hf Qiskit/Qwen2.5-Coder-14B-Qiskit-GGUF \
-p "You are a friendly assistant." -cnv \
--temp 0.7 \
--top-k 50 \
--top-p 0.95 \
--repeat-penalty 1.1 \
--seed 42

Per garantire il corretto funzionamento dei nostri modelli Qiskit, consigliamo di usare il prompt di sistema fornito nei nostri repository HF GGUF: prompt di sistema per mistral-small-3.2-24b-qiskit-GGUF, Qwen2.5-Coder-14B-Qiskit-GGUF, granite-3.3-8b-qiskit-GGUF e granite-3.2-8b-qiskit-GGUF.

Connetti manualmente Continue (VS Code)

Continue (VS Code)

1. Installa l'estensione

Apri VS Code, vai a Estensioni (Cmd+Shift+X), cerca Continue e installalo.

2. Apri la configurazione

Clicca sull'icona Continue nella barra laterale, poi clicca sull'icona a ingranaggio, oppure apri il riquadro dei comandi (Cmd+Shift+P) ed esegui Continue: Open Config File.

Questo apre ~/.continue/config.yaml (o config.json nelle versioni precedenti).

3. Configura il modello

Aggiungi quanto segue a config.yaml:

models:
- name: Qiskit Code Assistant
provider: ollama
model: mistral-small-3.2-24b-qiskit
apiBase: http://localhost:11434

Questo rende il modello Qiskit disponibile nel pannello chat (conversazioni nella barra laterale, domande e risposte inline) e per i comandi di modifica inline.

4. Prova il modello
  • Chat: Apri il pannello Continue nella barra laterale e poni una domanda (ad esempio, "Come si crea un circuito parametrizzato in Qiskit?")
  • Modifica inline: Seleziona un blocco di codice, premi Cmd+I (Mac) o Ctrl+I (Linux/Windows)
Connetti manualmente Jupyter AI (JupyterLab)

Jupyter AI (JupyterLab)

Nota: Queste istruzioni riguardano Jupyter AI v2.x.

1. Installa Jupyter AI e il provider Ollama
pip install "jupyter-ai<3" langchain-ollama

Il pin "jupyter-ai<3" garantisce l'installazione della v2.x. Il pacchetto langchain-ollama è necessario affinché Jupyter AI rilevi Ollama come provider. Senza di esso, Ollama non apparirà nel pannello delle impostazioni.

Poi riavvia JupyterLab.

2. Configura il modello di chat

Apri JupyterLab e clicca sull'icona chat nella barra laterale sinistra. Nel pannello delle impostazioni:

  1. Sotto Language model, seleziona Ollama come provider.
  2. Inserisci mistral-small-3.2-24b-qiskit come nome del modello.
  3. Non è necessaria una chiave API per Ollama (lascia il campo vuoto).
  4. Clicca sulla freccia indietro per iniziare a chattare.
3. Usa il comando magico %%ai

Il magic %%ai ti consente di interrogare il modello direttamente nelle celle del notebook.

%load_ext jupyter_ai_magics

Poi in una cella:

%%ai ollama:mistral-small-3.2-24b-qiskit
Write a function that implements Grover's algorithm using Qiskit
4. Host Ollama personalizzato (opzionale)

Per impostazione predefinita, Jupyter AI si connette a http://127.0.0.1:11434. Se il tuo server Ollama è in esecuzione su un indirizzo o una porta diversi:

Nell'interfaccia chat: Imposta il campo "Base API URL" nel pannello delle impostazioni AI.

Connetti manualmente OpenCode (Terminale)

OpenCode (Terminale)

1. Installa OpenCode
curl -fsSL https://opencode.ai/install | bash
2. Configura il modello Qiskit

Crea un file opencode.json nella cartella principale del tuo progetto (o ~/.config/opencode/opencode.json per una configurazione globale):

{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama (local)",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"mistral-small-3.2-24b-qiskit": {
"name": "Qiskit Code Assistant"
}
}
}
}
}
3. Seleziona il modello

Avvia OpenCode nella directory del tuo progetto:

opencode

All'interno del TUI, esegui il comando /models e seleziona Qiskit Code Assistant dall'elenco.

4. Prova il modello

Poni una domanda direttamente nella chat, per esempio: "Define a Bell circuit and run it using QiskitRuntimeService"

Modelli disponibili

Modelli attuali

Questi sono i modelli più recenti consigliati per l'uso con Qiskit Code Assistant:

  1. Qiskit/mistral-small-3.2-24b-qiskit - Rilasciato ottobre 2025
  2. Qiskit/Qwen2.5-Coder-14B-Qiskit - Rilasciato giugno 2025
  3. qiskit/granite-3.3-8b-qiskit - Rilasciato giugno 2025
  4. qiskit/granite-3.2-8b-qiskit - Rilasciato giugno 2025

Modelli GGUF (consigliati per ambienti personali/laptop)

I modelli in formato GGUF sono ottimizzati per l'uso locale e richiedono meno risorse computazionali:

  1. mistral-small-3.2-24b-qiskit-GGUF – Rilasciato ottobre 2025
    Addestrato con dati Qiskit fino alla versione 2.1

  2. Qiskit/Qwen2.5-Coder-14B-Qiskit-GGUF – Rilasciato giugno 2025
    Addestrato con dati Qiskit fino alla versione 2.0

  3. qiskit/granite-3.3-8b-qiskit-GGUF – Rilasciato giugno 2025
    Addestrato con dati Qiskit fino alla versione 2.0

  4. qiskit/granite-3.2-8b-qiskit-GGUF – Rilasciato giugno 2025
    Addestrato con dati Qiskit fino alla versione 2.0

I modelli open source di Qiskit Code Assistant sono disponibili in safetensors o formato file GGUF e possono essere scaricati da Hugging Face come spiegato di seguito.

Versioni di Qiskit usate per l'addestramento

Modello     Metriche di benchmark    Data di rilascioAddestrato su versione Qiskit
 QiskitHumanEval-HardQiskitHumanEvalHumanEvalASDivMathQASciQMBPPIFEvalCrowsPairs (English)TruthfulQA (MC1 acc)  
mistral-small-3.2-24b-qiskit32.4547.0277.493.7749.6897.5064.0048.4467.0839.41January 20262.2
Qwen2.5-Coder-14B-Qiskit25.1749.0191.464.2153.9097.0077.6049.6465.1837.82June 20252.0
granite-3.3-8b-qiskit14.5727.1562.800.4838.6693.3052.4059.7159.7539.05June 20252.0
granite-3.2-8b-qiskit9.9324.5057.320.0941.4196.3051.8060.7966.7940.51June 20252.0
granite-8b-qiskit-rc-0.1015.8938.4159.76February 20251.3
granite-8b-qiskit17.8844.3753.66November 20241.2

Nota: Tutti i modelli elencati nella tabella dei benchmark sono stati valutati utilizzando il rispettivo prompt di sistema, definito nel loro modello Hugging Face.

Modelli deprecati

Questi modelli non sono più mantenuti attivamente ma rimangono disponibili:

  1. qiskit/granite-8b-qiskit-rc-0.10 - Rilasciato febbraio 2025 (deprecato)
  2. qiskit/granite-8b-qiskit - Rilasciato novembre 2024 (deprecato)

Ulteriori informazioni e citazioni

Per saperne di più su Qiskit Code Assistant, i benchmark Qiskit HumanEval o Qiskit HumanEval Hard, e per citarli nelle tue pubblicazioni scientifiche, consulta queste citazioni consigliate:

@misc{2405.19495,
Author = {Nicolas Dupuis and Luca Buratti and Sanjay Vishwakarma and Aitana Viudes Forrat and David Kremer and Ismael Faro and Ruchir Puri and Juan Cruz-Benito},
Title = {Qiskit Code Assistant: Training LLMs for generating Quantum Computing Code},
Year = {2024},
Eprint = {arXiv:2405.19495},
}
@misc{2406.14712,
Author = {Sanjay Vishwakarma and Francis Harkins and Siddharth Golecha and Vishal Sharathchandra Bajpe and Nicolas Dupuis and Luca Buratti and David Kremer and Ismael Faro and Ruchir Puri and Juan Cruz-Benito},
Title = {Qiskit HumanEval: An Evaluation Benchmark For Quantum Code Generative Models},
Year = {2024},
Eprint = {arXiv:2406.14712},
}
@misc{2508.20907,
Author = {Nicolas Dupuis and Adarsh Tiwari and Youssef Mroueh and David Kremer and Ismael Faro and Juan Cruz-Benito},
Title = {Quantum Verifiable Rewards for Post-Training Qiskit Code Assistant},
Year = {2025},
Eprint = {arXiv:2508.20907},
}