O Qiskit pode ser usado para enviar tarefas para dispositivos IBM usando Python (ou Swift e JavaScript). Mas e se eu quiser usar um idioma diferente?
Por exemplo, suponha que eu tenha um circuito específico que eu queira executar. Suponha que eu já o criei no Python Qiskit e gere a string qasm correspondente ou (idealmente) o objeto qobj completo.
Quero poder executar isso e obter os resultados de volta em qualquer idioma de minha escolha.
Tanto quanto eu entendo, esta é uma maneira de fazer isso via HTML. As informações geradas no Qiskit podem ser transformadas em JSON e enviadas pela Web. É assim que o ProjectQ envia tarefas para dispositivos IBM (embora eles façam isso em Python).
Como a engenharia reversa do código do ProjectQ é um pouco assustadora, eu gostaria de um guia simples para usar esse recurso. Especialmente em uma linguagem que não seja Python.
fonte
Respostas:
Vou tentar responder dessa maneira, mas eu mesmo não tentei. Apenas faça a engenharia reversa lendo o código com algumas noções de solicitação de HTML.
Vamos supor que, no idioma de sua escolha, você tenha a capacidade de enviar solicitações HTTP via métodos GET e POST. O
api_url
é https://quantumexperience.ng.bluemix.net/api/ .Para enviar um trabalho, você enviará uma solicitação POST com algumas informações (como você preencheu um formulário na Web e deseja conversar com um servidor). É como endereçar um servidor com um dicionário de informações. Será no link https://quantumexperience.ng.bluemix.net/api/Jobs com o cabeçalho de solicitação POST definido como
application/json
(mostrando como você envia as informações). As informações aqui são enviadas em uma formatação JSON no corpo da solicitação:Acho que podemos adicionar parâmetros
maxCredits
e outros parâmetros para envio. dispositivo refere-se ao nome do backend se eu seguir os seus comentários:simulator
,ibmqx4
ouibmqx5
. Você recebe uma resposta novamente como JSON novamente com um argumento de id referente aexecution_id
.Depois de enviado, seu trabalho estará na fila. Você precisará solicitar por GET esse ID do trabalho para obter a resposta do back-end. O URL GET é: https://quantumexperience.ng.bluemix.net/api/Jobs/execution_id . Você receberá outra resposta JSON (coloque-a em uma
r_json
variável). Se ele tiver oqasms
item, veja se eler_json['qasms'][0]
possui umresult
item e você obterá o resultado do envio.Isso deve resumir o procedimento.
fonte