Przejdź do głównej treści

Qiskit Code Assistant

Modele LLM Qiskit Code Assistant mają na celu zwiększenie dostępności obliczeń kwantowych dla nowych użytkowników Qiskit oraz poprawę doświadczenia programistycznego dla obecnych użytkowników. Zostały wytrenowane na milionach tokenów tekstowych z Qiskit SDK, wieloletnich przykładach kodu Qiskit i funkcjach IBM Quantum®. Qiskit Code Assistant może wspierać twój przepływ pracy w zakresie obliczeń kwantowych, oferując sugestie generowane przez LLM na podstawie modeli IBM Granite i innych modeli open-source, które uwzględniają najnowsze funkcje i możliwości IBM®.

Uwagi

Duży Model Językowy (LLM) stojący za Qiskit Code Assistant

Aby dostarczać sugestie kodu, Qiskit Code Assistant używa Dużego Modelu Językowego (LLM). W tym przypadku Qiskit Code Assistant opiera się obecnie na modelu mistral-small-3.2-24b-qiskit, zbudowanym na modelu Mistral-Small-3.2-24B-Qiskit. Model mistral-small-3.2-24b-qiskit poprawia możliwości generowania kodu modelu Mistral-Small-3.2-24B-Instruct-2506 dla Qiskit poprzez rozszerzone wstępne trenowanie i dostrajanie na wysokiej jakości danych Qiskit, a także commitach Pythona i czacie. Aby uzyskać więcej informacji o rodzinie modeli Mistral AI, zapoznaj się z dokumentacją Mistral AI. Aby dowiedzieć się więcej o modelach .*-qiskit, zobacz Qiskit Code Assistant: Training LLMs for generating Quantum Computing Code.

Nasze LLM wyspecjalizowane dla Qiskit są dostępne również jako modele open-source. Sprawdź wszystkie dostępne modele na https://huggingface.co/Qiskit.

Benchmarki Qiskit HumanEval i Qiskit HumanEval Hard

Aby przetestować mistral-small-3.2-24b-qiskit i inne modele, współpracowaliśmy z członkami programu Qiskit Advocates i ekspertami, aby stworzyć benchmarki oparte na wykonaniu kodu o nazwie Qiskit HumanEval (QHE) i Qiskit HumanEval Hard (QHE Hard), i uruchomiliśmy je na modelach. Benchmarki te są podobne do HumanEval, zawierają wiele wymagających problemów kodowania do rozwiązania, wszystkie oparte na oficjalnych bibliotekach Qiskit.

Benchmarki składają się z około 150 testów, z których każdy tworzony jest z definicji funkcji, po której następuje docstring szczegółowo opisujący zadanie, które model ma rozwiązać. Każdy przykład zawiera również referencyjne rozwiązanie kanoniczne oraz testy jednostkowe do oceny poprawności generowanych rozwiązań. Istnieją trzy poziomy trudności testów: podstawowy, pośredni i trudny. Benchmark Qiskit HumanEval Hard jest wariantem Qiskit HumanEval, ale usuwa informacje dotyczące importów kodu, więc LLM musi samodzielnie ustalić właściwe importy metod lub klas. Ta zmiana sprawia, że zestaw danych jest znacznie bardziej wymagający dla LLM, zgodnie z naszymi testami i wstępnymi wynikami.

Zestawy danych dla Qiskit HumanEval i Qiskit HumanEval Hard są dostępne na tych stronach: Qiskit HumanEval i Qiskit HumanEval. Możesz przyczynić się do rozwoju tych benchmarków w repozytorium GitHub.

Zainstaluj Qiskit Code Assistant

Dowiedz się, jak zainstalować, skonfigurować i używać dowolnego modelu Qiskit Code Assistant na swoim lokalnym komputerze.

Pobierz ze strony Hugging Face

Wykonaj następujące kroki, aby pobrać dowolny model związany z Qiskit Code Assistant ze strony Hugging Face:

  1. Przejdź do pożądanej strony modelu Qiskit na Hugging Face.
  2. Przejdź do zakładki Files and Versions i pobierz pliki modelu safetensors lub GGUF.
Pobierz za pomocą Hugging Face CLI

Aby pobrać dowolny z dostępnych modeli Qiskit Code Assistant za pomocą Hugging Face CLI, wykonaj następujące kroki:

  1. Zainstaluj Hugging Face CLI

  2. Zaloguj się na swoje konto Hugging Face

    huggingface-cli login
  3. Pobierz preferowany model z poprzedniej listy

    huggingface-cli download <HF REPO NAME> <MODEL PATH> --local-dir <LOCAL PATH>
Ręcznie wdróż modele Qiskit Code Assistant lokalnie przez Ollama

Istnieje wiele sposobów na wdrożenie i interakcję z pobranym modelem Qiskit Code Assistant. Ten przewodnik demonstruje użycie Ollama w następujący sposób: albo z aplikacją Ollama za pomocą integracji Hugging Face Hub lub modelu lokalnego, albo z pakietem llama-cpp-python.

Używanie aplikacji Ollama

Aplikacja Ollama zapewnia proste rozwiązanie do lokalnego uruchamiania LLM. Jest łatwa w użyciu, z interfejsem CLI, który sprawia, że cały proces konfiguracji, zarządzanie modelami i interakcja są stosunkowo proste. Jest idealna do szybkiego eksperymentowania i dla użytkowników, którzy chcą mieć mniej szczegółów technicznych do obsługi.

Zainstaluj Ollama
  1. Pobierz aplikację Ollama

  2. Zainstaluj pobrany plik

  3. Uruchom zainstalowaną aplikację Ollama

    info

    Aplikacja działa poprawnie, gdy ikona Ollama pojawi się na pasku menu pulpitu. Możesz również sprawdzić, czy usługa działa, przechodząc do http://localhost:11434/.

  4. Wypróbuj Ollama w terminalu i zacznij uruchamiać modele. Na przykład:

    ollama run hf.co/Qiskit/Qwen2.5-Coder-14B-Qiskit
Skonfiguruj Ollama za pomocą integracji Hugging Face Hub

Integracja Ollama/Hugging Face Hub umożliwia interakcję z modelami hostowanymi na Hugging Face Hub bez potrzeby tworzenia nowego pliku modelfile ani ręcznego pobierania plików GGUF lub safetensors. Domyślne pliki template i params są już dołączone dla modelu na Hugging Face Hub.

  1. Upewnij się, że aplikacja Ollama jest uruchomiona.

  2. Przejdź do żądanej strony modelu i skopiuj URL. Na przykład, https://huggingface.co/Qiskit/Qwen2.5-Coder-14B-Qiskit-GGUF.

  3. W terminalu uruchom polecenie:

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

Możesz użyć modelu hf.co/Qiskit/Qwen2.5-Coder-14B-Qiskit lub dowolnego z innych obecnie zalecanych oficjalnych modeli GGUF hf.co/Qiskit/mistral-small-3.2-24b-qiskit-GGUF lub hf.co/Qiskit/granite-3.3-8b-qiskit-GGUF.

Skonfiguruj Ollama z ręcznie pobranym modelem GGUF Qiskit Code Assistant

Jeśli ręcznie pobrałeś model GGUF, taki jak https://huggingface.co/Qiskit/Qwen2.5-Coder-14B-Qiskit-GGUF, i chcesz eksperymentować z różnymi szablonami i parametrami, możesz wykonać następujące kroki, aby załadować go do lokalnej aplikacji Ollama.

  1. Utwórz plik Modelfile wpisując następującą zawartość i pamiętaj, aby zaktualizować <PATH-TO-GGUF-FILE> do rzeczywistej ścieżki pobranego modelu.

    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. Uruchom następujące polecenie, aby utworzyć niestandardową instancję modelu na podstawie pliku Modelfile.

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

    Ten proces może zająć trochę czasu, ponieważ Ollama musi odczytać plik modelu, zainicjować instancję modelu i skonfigurować go zgodnie z podanymi specyfikacjami.

Uruchom ręcznie pobrany model Qiskit Code Assistant w Ollama

Po skonfigurowaniu modelu Qwen2.5-Coder-14B-Qiskit w Ollama uruchom następujące polecenie, aby uruchomić model i wchodzić z nim w interakcję w terminalu (w trybie czatu).

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

Kilka przydatnych poleceń:

  • ollama list — lista modeli na twoim komputerze
  • ollama rm Qwen2.5-Coder-14B-Qiskit — usuń model
  • ollama show Qwen2.5-Coder-14B-Qiskit — pokaż informacje o modelu
  • ollama stop Qwen2.5-Coder-14B-Qiskit — zatrzymaj aktualnie uruchomiony model
  • ollama ps — lista aktualnie załadowanych modeli
Ręcznie wdróż modele Qiskit Code Assistant lokalnie przez pakiet llama-cpp-python

Alternatywą dla aplikacji Ollama jest pakiet llama-cpp-python, który jest powiązaniem Pythona dla llama.cpp. Daje on większą kontrolę i elastyczność w uruchamianiu modelu GGUF lokalnie i jest idealny dla użytkowników, którzy chcą zintegrować lokalny model w swoich przepływach pracy i aplikacjach Python.

  1. Zainstaluj llama-cpp-python
  2. Wchodź w interakcję z modelem z poziomu swojej aplikacji za pomocą llama_cpp. Na przykład:
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”]

Możesz również dodać parametry generowania tekstu do modelu, aby dostosować wnioskowanie:

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”]
Ręcznie wdróż modele Qiskit Code Assistant lokalnie przez llama.cpp

Użyj biblioteki llama.cpp

Kolejną alternatywą jest użycie llama.cpp, biblioteki open-source do wykonywania wnioskowania LLM na CPU przy minimalnej konfiguracji. Zapewnia ona niskopoziomową kontrolę nad wykonaniem modelu i jest zazwyczaj uruchamiana z wiersza poleceń, wskazując na lokalny plik modelu GGUF.

Istnieje kilka sposobów instalacji llama.cpp na swoim komputerze:

Po zainstalowaniu możesz użyć llama.cpp do interakcji z modelami GGUF w trybie konwersacji w następujący sposób:

# 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

Możesz również uruchomić serwer API kompatybilny z OpenAI dla modelu w następujący sposób:

llama-server -hf Qiskit/Qwen2.5-Coder-14B-Qiskit-GGUF
Zaawansowane parametry

Za pomocą programu llama-cli możesz kontrolować generowanie modelu przy użyciu opcji wiersza poleceń. Na przykład możesz podać wstępny monit „systemowy” za pomocą flagi -p/--prompt. W trybie konwersacji (-cnv) ten wstępny monit działa jako wiadomość systemowa. W przeciwnym razie możesz po prostu dołączyć dowolną pożądaną instrukcję do tekstu monitu. Możesz również dostosować parametry próbkowania — na przykład: temperaturę (--temp), top-k (--top-k), top-p (--top-p), karę za powtórzenia (--repeat-penalty) i ziarno losowości (--seed). Poniżej przykładowe wywołanie z użyciem tych opcji:

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

Aby zapewnić prawidłowe działanie naszych modeli Qiskit, zalecamy użycie monitu systemowego dostarczonego w naszych repozytoriach HF GGUF: monit systemowy dla mistral-small-3.2-24b-qiskit-GGUF, Qwen2.5-Coder-14B-Qiskit-GGUF, granite-3.3-8b-qiskit-GGUF i granite-3.2-8b-qiskit-GGUF.

Ręcznie połącz Continue (VS Code)

Continue (VS Code)

1. Zainstaluj rozszerzenie

Otwórz VS Code, przejdź do Rozszerzeń (Cmd+Shift+X), wyszukaj Continue i zainstaluj je.

2. Otwórz konfigurację

Kliknij ikonę Continue na pasku bocznym, a następnie kliknij ikonę koła zębatego lub otwórz paletę poleceń (Cmd+Shift+P) i uruchom Continue: Open Config File.

Otworzy to plik ~/.continue/config.yaml (lub config.json w starszych wersjach).

3. Skonfiguruj model

Dodaj następującą zawartość do pliku config.yaml:

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

Dzięki temu model Qiskit będzie dostępny w panelu czatu (rozmowy na pasku bocznym, Q&A w tekście) oraz do poleceń edycji w tekście.

4. Przetestuj
  • Czat: Otwórz panel Continue na pasku bocznym i zadaj pytanie (np. „How do I create a parameterized circuit in Qiskit?”)
  • Edycja w tekście: Zaznacz blok kodu i naciśnij Cmd+I (Mac) lub Ctrl+I (Linux/Windows)
Ręcznie połącz Jupyter AI (JupyterLab)

Jupyter AI (JupyterLab)

Uwaga: Te instrukcje dotyczą Jupyter AI w wersji 2.x.

1. Zainstaluj Jupyter AI i dostawcę Ollama
pip install “jupyter-ai<3” langchain-ollama

Przypięcie ”jupyter-ai<3” zapewnia pobranie wersji 2.x. Pakiet langchain-ollama jest wymagany, aby Jupyter AI mógł wykryć Ollama jako dostawcę. Bez niego Ollama nie pojawi się w panelu ustawień.

Następnie zrestartuj JupyterLab.

2. Skonfiguruj model czatu

Otwórz JupyterLab i kliknij ikonę czatu na lewym pasku bocznym. W panelu ustawień:

  1. W polu Language model wybierz Ollama jako dostawcę.
  2. Wpisz mistral-small-3.2-24b-qiskit jako nazwę modelu.
  3. Klucz API nie jest potrzebny dla Ollama (pozostaw pole puste).
  4. Kliknij strzałkę wstecz, aby rozpocząć czat.
3. Użyj polecenia magicznego %%ai

Polecenie magiczne %%ai umożliwia odpytywanie modelu bezpośrednio w komórkach notatnika.

%load_ext jupyter_ai_magics

Następnie w komórce:

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

Domyślnie Jupyter AI łączy się z http://127.0.0.1:11434. Jeśli twój serwer Ollama działa pod innym adresem lub portem:

W interfejsie czatu: Ustaw pole „Base API URL” w panelu ustawień AI.

Ręcznie połącz OpenCode (Terminal)

OpenCode (Terminal)

1. Zainstaluj OpenCode
curl -fsSL https://opencode.ai/install | bash
2. Skonfiguruj model Qiskit

Utwórz plik opencode.json w katalogu głównym projektu (lub ~/.config/opencode/opencode.json dla konfiguracji globalnej):

{
“$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. Wybierz model

Uruchom OpenCode w katalogu swojego projektu:

opencode

W interfejsie TUI uruchom polecenie /models i wybierz Qiskit Code Assistant z listy.

4. Przetestuj

Zadaj pytanie bezpośrednio w czacie, na przykład: „Define a Bell circuit and run it using QiskitRuntimeService”

Dostępne modele

Aktualne modele

Oto najnowsze zalecane modele do użycia z Qiskit Code Assistant:

  1. Qiskit/mistral-small-3.2-24b-qiskit - Released October 2025
  2. Qiskit/Qwen2.5-Coder-14B-Qiskit - Released June 2025
  3. qiskit/granite-3.3-8b-qiskit - Released June 2025
  4. qiskit/granite-3.2-8b-qiskit - Released June 2025

Modele GGUF (zalecane dla środowisk osobistych/laptopów)

Modele w formacie GGUF są zoptymalizowane do użytku lokalnego i wymagają mniejszych zasobów obliczeniowych:

  1. mistral-small-3.2-24b-qiskit-GGUF – Released October 2025
    Trained with Qiskit data up to version 2.1

  2. Qiskit/Qwen2.5-Coder-14B-Qiskit-GGUF – Released June 2025
    Trained with Qiskit data up to version 2.0

  3. qiskit/granite-3.3-8b-qiskit-GGUF – Released June 2025
    Trained with Qiskit data up to version 2.0

  4. qiskit/granite-3.2-8b-qiskit-GGUF – Released June 2025
    Trained with Qiskit data up to version 2.0

The Open Source Qiskit Code Assistant models are available in safetensors or GGUF file format and can be downloaded from the Hugging Face as explained below.

Wersje Qiskit użyte do trenowania

Model     Benchmark Metrics    Release dateTrained on Qiskit version
 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

Uwaga: Wszystkie modele wymienione w tabeli benchmarków zostały ocenione przy użyciu odpowiednich monitów systemowych zdefiniowanych w ich modelu na Hugging Face.

Przestarzałe modele

Te modele nie są już aktywnie utrzymywane, ale pozostają dostępne:

  1. qiskit/granite-8b-qiskit-rc-0.10 - Released February 2025 (deprecated)
  2. qiskit/granite-8b-qiskit - Released November 2024 (deprecated)

Więcej informacji i cytowania

Aby dowiedzieć się więcej o Qiskit Code Assistant, benchmarkach Qiskit HumanEval lub Qiskit HumanEval Hard i zacytować je w swoich publikacjach naukowych, zapoznaj się z tymi zalecanymi cytowaniami:

@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},
}