欢迎使用 QPanda3 Runtime MCP Server!本指南将帮助你从零开始,即使你是量子计算或 MCP 服务器的新手。
QPanda3 Runtime MCP Server 是一座桥梁,将 AI 助手(如 Claude、ChatGPT 或自定义 AI 智能体)连接到本源量子的量子计算服务。通过这个服务器,你可以:
- 让 AI 助手在真实的量子计算机上运行量子线路
- 让 AI 管理你的量子计算任务
- 构建 AI 驱动的量子计算应用
如果你还没有安装服务器,请先按照以下指南操作:
连接到 AI 助手后,尝试以下提示:
List all available QPU devices
AI 将调用 list_qpu_devices_tool 并显示可用的量子计算机。
Run a Bell state circuit on device 20 with 1000 shots
AI 将:
- 使用贝尔态线路(创建量子纠缠)
- 将其提交到指定设备
- 返回测量结果
预期结果:约 50% 00 和约 50% 11(量子纠缠!)
Check the status of my last task
| 工具 | 功能 | 使用场景 |
|---|---|---|
setup_origin_quantum_account_tool |
配置你的凭据 | 首次设置 |
list_saved_accounts_tool |
列出会话账户 | 检查身份验证 |
active_account_info_tool |
获取当前账户信息 | 验证连接 |
| 工具 | 功能 | 使用场景 |
|---|---|---|
list_qpu_devices_tool |
列出所有量子设备 | 查找可用的 QPU |
get_qpu_properties_tool |
获取设备详情 | 检查设备能力 |
| 工具 | 功能 | 使用场景 |
|---|---|---|
sample_tool |
运行带测量的线路 | 获取测量结果 |
estimate_tool |
计算期望值 | 量子化学、VQE |
batch_sample_tool |
运行多条线路 | 对比线路 |
batch_estimate_tool |
估算多条线路 | 优化任务 |
| 工具 | 功能 | 使用场景 |
|---|---|---|
get_task_status_tool |
检查任务是否完成 | 监控进度 |
get_task_results_tool |
获取任务结果 | 获取输出 |
cancel_task_tool |
取消任务 | 停止执行 |
list_my_tasks_tool |
列出最近的任务 | 查看历史 |
| 工具 | 功能 | 使用场景 |
|---|---|---|
create_circuit_observable_binding_tool |
创建绑定 | 多目标优化 |
add_product_rule_tool |
添加所有组合 | 测试所有配对 |
add_zip_rule_tool |
添加特定配对 | 自定义组合 |
estimate_with_binding_tool |
执行绑定 | 运行估算 |
list_bindings_tool |
列出绑定 | 管理绑定 |
delete_binding_tool |
删除绑定 | 清理 |
服务器提供了开箱即用的量子线路:
| 资源 | 描述 | 量子比特数 | 预期结果 |
|---|---|---|---|
circuits://bell-state |
量子纠缠 | 2 | 50% 00,50% 11 |
circuits://ghz-state |
多量子比特纠缠 | 3 | 50% 000,50% 111 |
circuits://random |
随机数生成器 | 4 | 均匀分布 |
circuits://superposition |
单量子比特演示 | 1 | 50% 0,50% 1 |
线路使用 OriginIR 格式:
QINIT <量子比特数>
CREG <经典比特数>
<门操作>
MEASURE q[i],c[i]
| 量子门 | 语法 | 描述 |
|---|---|---|
| Hadamard 门 | H q[0] |
叠加态 |
| Pauli-X 门 | X q[0] |
比特翻转 |
| Pauli-Y 门 | Y q[0] |
比特+相位翻转 |
| Pauli-Z 门 | Z q[0] |
相位翻转 |
| CNOT 门 | CNOT q[0],q[1] |
受控非门 |
| CZ 门 | CZ q[0],q[1] |
受控 Z 门 |
| 测量 | MEASURE q[0],c[0] |
测量到经典比特 |
# 一个 3 量子比特的 GHZ 类线路
circuit = """QINIT 3
CREG 3
H q[0]
CNOT q[0],q[1]
CNOT q[1],q[2]
MEASURE q[0],c[0]
MEASURE q[1],c[1]
MEASURE q[2],c[2]"""对于估算任务,你需要定义可观测量(即要测量什么):
observable = {
"Z0 Z1": 1.0, # 在量子比特 0 和 1 上测量 Z
"X0": 0.5 # 在量子比特 0 上测量 X
}observable = "IIXY" # 4 量子比特可观测量graph LR
A[Submit Task] --> B[Check Status]
B --> C{Status?}
C -->|PENDING| B
C -->|RUNNING| B
C -->|DONE| D[Get Results]
C -->|FAILED| E[Handle Error]
# 1. 提交任务
result = await sample_tool(
circuit=bell_state_circuit,
device_id="20",
shots=1000
)
task_id = result["task_id"]
# 2. 轮询等待完成
import asyncio
while True:
status = await get_task_status_tool(task_id)
if status["task_status"] == "DONE":
break
elif status["task_status"] == "FAILED":
raise Exception("Task failed!")
await asyncio.sleep(2)
# 3. 获取结果
results = await get_task_results_tool(task_id)
print(f"Results: {results['results']}")- 永远不要提交
.env文件 - 将其添加到.gitignore - 在生产环境中使用环境变量 来管理凭据
- 限制文件权限:
chmod 600 .env