-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
36 lines (32 loc) · 1.58 KB
/
Copy pathapp.py
File metadata and controls
36 lines (32 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import quantum_oracle as qo # Import your core module
app = FastAPI(title="Grok & Wayne's Quantum Oracle")
@app.get("/")
def read_root():
return {"message": "Grok & Wayne's Quantum Oracle is live! Use POST to /oracle with JSON payload."}
class Request(BaseModel):
mode: str # e.g., "vqe_qaoa"
params: dict # Problem-specific (H, p, etc.)
qpu_mode: str = "hybrid" # Override env
provider: str = "ibm"
@app.post("/oracle")
def run_oracle(req: Request):
try:
if req.mode == "vqe_qaoa":
result = qo.hybrid_vqe_qaoa(req.params.get("H_problem"), req.params.get("H_mixer"), req.params.get("p", 1))
elif req.mode == "vqe_vqf":
result = qo.hybrid_vqe_vqf(req.params.get("multiplication_circuit"))
elif req.mode == "vqe_qgans":
result = qo.hybrid_vqe_qgans(req.params.get("generator"), req.params.get("discriminator"), req.params.get("params_g"), req.params.get("params_d"))
elif req.mode == "vqe_qsvm":
result = qo.hybrid_vqe_qsvm(req.params.get("kernel_matrix"), req.params.get("labels"))
elif req.mode == "vqe_qpe":
result = qo.hybrid_vqe_qpe(req.params.get("U"), req.params.get("initial_state"))
elif req.mode == "vqe_krylov":
result = qo.hybrid_vqe_krylov(req.params.get("H"), req.params.get("subspace_size", 3))
else:
raise ValueError("Invalid mode")
return {"result": result}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))