QubitClient
Discovered★ 3AI Agent for Quantum Systems
QubitClient: 用于量子计算的AI智能体
介绍 •
功能特性 •
安装 •
快速开始 •
结果页 / DSH •
任务类型 •
文档 •
许可证
中文 | English
📖 介绍
QubitClient 是一个功能强大的AI智能体,用于与 Qubit 服务进行高效交互。它封装了丰富的 API 接口,专为量子计算实验数据处理而设计,支持特征提取、参数拟合、实验控制等多种任务,能够实现快速分析二维能谱、功率偏移曲线等关键实验数据,支持多种形式格式转换。
✨ 功能特性
- 🧠 智能数据分析:支持二维能谱分析、功率偏移曲线分析等复杂任务。
- 🔬 多种量子计算任务:涵盖 S21 峰值检测、最优 π 脉冲、Rabi 振荡、T1/T2 拟合等常见实验分析。
- 📦 灵活的数据输入:可直接传入文件路径、NumPy 数组或字典,适配不同数据源。
- ⚡ 批量处理:轻松同时处理多个数据文件,提高工作效率。
- 🔌 易于集成:简洁的 API 设计,可快速融入现有项目流程。
- 🤝 MCP 协议支持:基于 MCP 协议的实时量子测量任务控制,实现实验自动化。
- 🖥️ 结果可视化与 DSH 集成:内置 pipeline 结果 Web UI(SSE 实时刷新),并提供 DeepSeek Harness 插件把结果面板嵌进右侧栏。
- 🤖 LLM/VLM 集成:支持大语言模型和视觉语言模型,用于量子测量数据分析与决策。
- 🟢 Google Gemma 4:支持
google/gemma-4-E4B-it模型 - 🔵 NVIDIA Ising:支持
nv-community/Ising-Calibration-1-35B-A3B模型,专为量子校准设计
- 🟢 Google Gemma 4:支持
- 🎨 图像生成与编辑:支持文本生成图像、图像编辑、Chat API 图像生成等多种模式。
- 支持 DALL-E、Qwen-Image 等主流图像生成模型
- 支持多图生成、单图编辑、多图变体等丰富功能
📦 安装
推荐使用 pip 进行安装:
pip install qubitclient
如果需要绘图等额外功能,可以安装完整版:
pip install qubitclient[full]
详细安装说明请参考 安装指南。
🐳 服务部署(Docker)
# 初始化部署文件(拷贝 serve_templates 到当前目录)
qubitclient serve init
# 下载模型到 model_zoo 文件夹
qubitclient serve download
# 启动所有服务(proxy、qubitserving、qubitscope)
qubitclient serve up
# 查看服务状态
docker ps
🚀 快速开始
1️⃣ 配置
初始化配置文件:
qubitclient init
这会创建 qubitclient.json 和 .mcp.json 文件。然后编辑 qubitclient.json,填入您的服务器地址和 API 密钥:
{
"url": "https://your-api-server.com",
"api_key": "your-api-key"
}
2️⃣ 使用示例
🧠 NNScope 功能(SPECTRUM2D)
from qubitclient import QubitNNScopeClient, NNTaskName, CurveType
import numpy as np
# 初始化客户端
client = QubitNNScopeClient()
# 方式1:使用文件路径
file_path_list = ["data/file1.npz", "data/file2.npz"]
response = client.request(
file_list=file_path_list,
task_type=NNTaskName.SPECTRUM2D,
curve_type=CurveType.COSINE
)
# 方式2:使用 NumPy 数组字典
data_ndarray = np.load("data/file1.npz", allow_pickle=True)
dict_list = [data_ndarray]
response = client.request(
file_list=dict_list,
task_type=NNTaskName.SPECTRUM2D,
curve_type=CurveType.POLY
)
# 获取结果
results = client.get_result(response=response)
🔬 Scope 功能(OPTPIPULSE)
from qubitclient import QubitScopeClient, TaskName
import numpy as np
client = QubitScopeClient()
# 准备数据(示例)
dict_list = [{
"x_data": np.array([...]),
"y_data": np.array([...])
}]
response = client.request(
file_list=dict_list,
task_type=TaskName.OPTPIPULSE # 可选任务见下方列表
)
results = client.get_result(response=response)
🤖 Ctrl 功能(MCP 协议测量S21)
from qubitclient.ctrl import QubitCtrlClient, CtrlTaskName
client = QubitCtrlClient()
# 执行 S21 腔频测量实验
result = client.run(
task_type=CtrlTaskName.S21,
qubits=["Q0", "Q1"],
frequency_start=-40e6,
frequency_end=40e6,
frequency_sample_num=101
)
print(result)
🤖 LLM 功能(VLM 图像分析)
from qubitclient.llm import QubitLLM, LLMTaskName, ExperimentFamily
# 初始化客户端(自动从 qubitclient.json 读取配置)
llm = QubitLLM()
# 方式1:直接对话
result = llm.chat([
{"role": "system", "content": "You are a quantum physics expert."},
{"role": "user", "content": "Explain quantum entanglement"}
])
print(result)
# 方式2:带图像的 VLM 分析
result = llm.chat(
[{"role": "user", "content": "分析这张图像"}],
images="measurement.png"
)
print(result)
# 方式3:使用任务 prompt(自动构建消息和 JSON schema)
# QCalEval Q1: 描述图表
result = llm.run(
LLMTaskName.DESCRIBE_PLOT,
"test.png",
experiment_family=ExperimentFamily.RABI
)
print(result)
# QCalEval Q2: 分类实验结果
result = llm.run(
LLMTaskName.CLASSIFY_OUTCOME,
"test.png",
experiment_family=ExperimentFamily.T1
)
print(result)
# QCalEval Q3: 科学推理
result = llm.run(
LLMTaskName.SCIENTIFIC_REASONING,
"test.png",
experiment_family=ExperimentFamily.RAMSEY_T2STAR
)
print(result)
# QCalEval Q4: 评估拟合可靠性
result = llm.run(
LLMTaskName.ASSESS_FIT,
"test.png",
experiment_family=ExperimentFamily.RABI
)
print(result)
# QCalEval Q5: 提取参数
result = llm.run(
LLMTaskName.EXTRACT_PARAMS,
"test.png",
experiment_family=ExperimentFamily.T1
)
print(result)
# QCalEval Q6: 评估实验状态
result = llm.run(
LLMTaskName.EVALUATE_STATUS,
"test.png",
experiment_family=ExperimentFamily.T1
)
print(result)
# 决策任务:基于评估结果给出下一步测量建议
result = llm.run(
LLMTaskName.DECIDE_NEXT_ACTION,
evaluation_result={"status": "success", "params": {...}},
available_actions=["S21", "RABI", "T1"]
)
print(result)
🎨 Generate 功能(图像生成与编辑)
from qubitclient.generate import QubitGenerate, ImageSize
# 初始化客户端(自动从 qubitclient.json 读取配置)
gen = QubitGenerate()
# 方式1:文本生成图像(使用 /v1/images/generations)
images = gen.generate(
prompt="A beautiful sunset over mountains, digital art style",
size=ImageSize.SIZE_1024x1024,
n=1
)
images[0].save("output.png")
# 方式2:图像编辑(使用 /v1/images/edits)
images = gen.edit(
prompt="Convert to watercolor painting style",
image="input.png",
size=ImageSize.SIZE_1024x1024,
)
images[0].save("edited_output.png")
# 方式3:Chat API 图像生成(支持多模态模型)
images = gen.chat(
prompt="A quantum computing circuit diagram",
image=None, # 纯文本生成
size=ImageSize.SIZE_1024x1024,
n=1
)
images[0].save("circuit.png")
# 方式4:Chat API 单图像编辑
images = gen.chat(
prompt="Enhance the colors",
image="input.png", # 单图编辑
size=ImageSize.SIZE_1024x1024,
)
images[0].save("enhanced.png")
🖥️ 结果页与 DSH 集成
pipeline 脚本把每次运行写进 tmp/db/result/pipeline/*.json,项目自带的结果页服务会把它们实时推成一张卡片瀑布流。
既可以在浏览器里单独打开,也可以通过 DeepSeek Harness(下称 DSH)插件嵌进它的右侧栏,写代码和看结果不用来回切窗口。
启动结果页
pip install -e ".[ui]" # fastapi / uvicorn
qubitclient ui start # 默认 http://localhost:8581/
qubitclient ui start --port 9000
| 能力 | 说明 |
|---|---|
| 实时列表 | 每 2 秒扫 tmp/db/result/pipeline/,新增或更新的记录经 SSE 推到页面 |
| 卡片缩略图 | GET /api/plots/{run_id}/{i} 直接返回拟合图 PNG |
| 详情 | 点卡片查看参数、分析结果与原始 JSON |
| 依赖 | 单页内联 CSS/JS,无 CDN,离线可用 |
启动时工作目录要在仓库根:读取侧固定按
cwd/tmp/db/result取数,--storage-root目前只影响 SSE 监听目录。
DSH 插件(dsh-plugin/)
把上面这个结果页搬进 DSH 的右侧栏,并让模型能直接读到 pipeline 记录。
| 能力 | 位置 |
|---|---|
| 结果面板 | 右侧栏 tab「QubitClient 结果」:原样嵌入结果页(卡片流 / SSE / 详情) |
| 状态徽标 | 输入框下方显示服务在线状态、记录总数、最近一次任务,一键打开面板 |
| 模型工具 | qubitclient_results:按任务名与条数读取运行记录(任务、状态、比特、时间、图数、错误) |
安装(一次性,装进本机 DSH 的 profile):
# 仓库根目录
powershell -NoProfile -ExecutionPolicy Bypass -File dsh-plugin/scripts/install.ps1
# 重启 DSH 后,右侧栏「新建 tab」里会出现「QubitClient 结果」
也可以直接从 GitHub 安装(纯 JS,无需构建):
dsh plugin --profile desktop add "git+https://github.com/yaqiangsun/QubitClient.git#<commit>&path:/dsh-plugin/qubitclient-panel"
插件市场索引(format 1)见 dsh-plugin/market-index.json;在 DSH「插件 → 发现」里添加它的
raw URL 即可看到本插件。
卸载:
powershell -NoProfile -ExecutionPolicy Bypass -File dsh-plugin/scripts/uninstall.ps1
配置与限制:
| 项 | 说明 |
|---|---|
| 服务地址 | DSH 侧默认 http://127.0.0.1:8581;换端口时改 dsh-plugin/qubitclient-panel/cordis.patch.yml 的 config.baseUrl,并在面板的离线提示里改一次浏览器侧地址 |
| 未启动服务 | 面板显示启动指引与地址编辑框,不影响 DSH 其他功能 |
| 深链 | 结果页暂不支持 ?run= 直达某次运行,详情需在面板内点卡片 |
| 主题 | 面板保持结果页自己的样式,不跟随 DSH 明暗主题 |
详见 dsh-plugin/README.md 与 结果页文档。
📋 支持的任务类型
🧠 NNScope 任务
| 任务名称 | 描述 | 文档 | 状态 |
|---|---|---|---|
NNTaskName.SPECTRUM2D | 二维频谱数据曲线分割 | 文档 | ✅ |
NNTaskName.POWERSHIFT | 功率偏移曲线分割 | 文档 | ⏸️ |
NNTaskName.S21VSFLUX | S21 vs Flux 参数曲线分割 | 文档 | ⏸️ |
NNTaskName.SPECTRUM | 频谱分析 | 文档 | ✅ |
NNTaskName.S21PEAK | S21 峰值检测 | 文档 | ✅ |
NNTaskName.S21PEAKMULTI | S21 峰值检测 | 文档 | ✅ |
🔬 Scope 任务
| 任务名称 | 描述 | 文档 | 状态 |
|---|---|---|---|
TaskName.S21PEAKMULTI | 全频段扫描S21全链峰值检测 | 文档 | ✅ |
TaskName.S21PEAK | S21 单个峰值优化检测 | 文档 | ✅ |
TaskName.OPTPIPULSE | 最优 π 脉冲计算 | 文档 | ✅ |
TaskName.RABICOS | Rabi 振荡余弦第一峰检测 | 文档 | ✅ |
TaskName.RAMSEY | RAMSY 衰减震荡余弦拟合 | 文档 | ✅ |
TaskName.S21VSFLUX | S21 vs Flux 分析 | 文档 | ✅ |
TaskName.SINGLESHOT | 单次测量分析 | 文档 | ✅ |
TaskName.SPECTRUM | 频谱分析 | 文档 | ✅ |
TaskName.T1FIT | T1 时间拟合 | 文档 | ✅ |
TaskName.T2FIT | T2 时间拟合 | 文档 | ✅ |
TaskName.T12DFIT | 2D T1 衰减拟合 | 文档 | ✅ |
TaskName.POWERSHIFT | 功率偏移曲线分析 | 文档 | ✅ |
TaskName.SPECTRUM2D | 二维频谱数据曲线分割 | 文档 | ✅ |
TaskName.DRAG | DRAG 免交叉点分析 | 文档 | ✅ |
TaskName.DELTA | delta优化实验 | 文档 | ✅ |
TaskName.RB | 保真度测试 | 文档 | ✅ |
TaskName.SPINECHO | Spin Echo T2 拟合 | 文档 | ⏸️ |
TaskName.TIMINGXYZ | XYZ Timing 分析 | 文档 | ⏸️ |
🤖 Ctrl 任务
| 任务名称 | 描述 | 详细文档 | 状态 |
|---|---|---|---|
CtrlTaskName.S21 | S21 腔频测量实验 | 文档 | ✅ |
CtrlTaskName.DRAG | DRAG 免交叉点测量 | 文档 | ✅ |
CtrlTaskName.DELTA | 频率偏移校准测量 | 文档 | ✅ |
CtrlTaskName.OPTPIPULSE | 最优 π 脉冲测量 | 文档 | ✅ |
CtrlTaskName.POWERSHIFT | 功率偏移曲线测量 | 文档 | ✅ |
CtrlTaskName.RABI | Rabi 振荡测量 | 文档 | ✅ |
CtrlTaskName.RAMSEY | Ramsey 干涉测量 | 文档 | ✅ |
CtrlTaskName.S21VSFLUX | S21 vs Flux 测量 | 文档 | ✅ |
CtrlTaskName.SINGLESHOT | 单次测量分析 | 文档 | ✅ |
CtrlTaskName.SPECTRUM | 频谱分析测量 | 文档 | ✅ |
CtrlTaskName.SPECTRUM_2D | 二维频谱测量 | 文档 | ✅ |
CtrlTaskName.T1 | T1 弛豫时间测量 | 文档 | ✅ |
CtrlTaskName.T2 | T2 弛豫时间测量 | 文档 | ✅ |
CtrlTaskName.RB | 随机基准测试 | 文档 | ✅ |
CtrlTaskName.DATA | 获取测量数据 | 文档 | ✅ |
🤖 LLM 任务
| 任务名称 | 描述 | 详细文档 | 状态 |
|---|---|---|---|
LLMTaskName.DECIDE_NEXT_ACTION | 决策下一步测量目标及参数 | - | ⏸️ |
LLMTaskName.DESCRIBE_PLOT | 描述图表类型、坐标轴、特征 | QCalEval-Q1 | ⏸️ |
LLMTaskName.CLASSIFY_OUTCOME | 分类实验结果 (Expected/Suboptimal/Anomalous) | QCalEval-Q2 | ⏸️ |
LLMTaskName.SCIENTIFIC_REASONING | 科学推理分析 | QCalEval-Q3 | ⏸️ |
LLMTaskName.ASSESS_FIT | 评估拟合可靠性 | QCalEval-Q4 | ⏸️ |
LLMTaskName.EXTRACT_PARAMS | 从图表提取参数 | QCalEval-Q5 | ⏸️ |
LLMTaskName.EVALUATE_STATUS | 评估实验状态 (成功/失败及原因) | QCalEval-Q6 | ⏸️ |
📊 ExperimentFamily 实验家族
使用 ExperimentFamily 枚举指定不同实验类型,自动获取对应的 prompt 背景和参数提取 schema:
| 枚举值 | 描述 | 状态 |
|---|---|---|
ExperimentFamily.COUPLER_FLUX | 可调耦合器光谱 | ⏸️ |
ExperimentFamily.CZ_BENCHMARKING | CZ 门基准测试 | ⏸️ |
ExperimentFamily.DRAG | DRAG 校准 | ⏸️ |
ExperimentFamily.GMM | 高斯混合模型 | ⏸️ |
ExperimentFamily.MICROWAVE_RAMSEY | 微波 Ramsey | ⏸️ |
ExperimentFamily.MOT_LOADING | MOT 加载 | ⏸️ |
ExperimentFamily.PINCHOFF | Pinch-off 测量 | ⏸️ |
ExperimentFamily.PINGPONG | PingPong 校准 | ⏸️ |
ExperimentFamily.QUBIT_FLUX_SPECTROSCOPY | 量子比特通量光谱 | ⏸️ |
ExperimentFamily.QUBIT_SPECTROSCOPY | 量子比特光谱 | ⏸️ |
ExperimentFamily.QUBIT_SPECTROSCOPY_POWER_FREQUENCY | 二维功率频率光谱 | ⏸️ |
ExperimentFamily.RABI | Rabi 振荡 | ⏸️ |
ExperimentFamily.RABI_HW | Rabi 硬件 | ⏸️ |
ExperimentFamily.RAMSEY_CHARGE_TOMOGRAPHY | Ramsey 电荷层析 | ⏸️ |
ExperimentFamily.RAMSEY_FREQ_CAL | Ramsey 频率校准 | ⏸️ |
ExperimentFamily.RAMSEY_T2STAR | T2* 退相干 | ⏸️ |
ExperimentFamily.RES_SPEC | 共振器光谱 | ⏸️ |
ExperimentFamily.RYDBERG_RAMSEY | Rydberg Ramsey | ⏸️ |
ExperimentFamily.RYDBERG_SPECTROSCOPY | Rydberg 光谱 | ⏸️ |
ExperimentFamily.T1 | T1 弛豫 | ⏸️ |
ExperimentFamily.T1_FLUCTUATIONS | T1 涨落 | ⏸️ |
ExperimentFamily.TWEEZER_ARRAY | 光镊阵列 | ⏸️ |
| --- Extra 实验(非 QCalEval)--- | ||
ExperimentFamily.S21 | 腔频校准 | ⏸️ |
ExperimentFamily.SPECTRUM_2D | 二维频谱分析 | ⏸️ |
ExperimentFamily.OPTPIPULSE | 最优π脉冲校准 | ⏸️ |
ExperimentFamily.RABICOS | 功率Rabi振荡 | ⏸️ |
ExperimentFamily.RAMSEY | Ramsey干涉 | ⏸️ |
ExperimentFamily.S21VSFLUX | S21 vs Flux 2D | ⏸️ |
ExperimentFamily.POWERSHIFT | 功率偏移 | ⏸️ |
ExperimentFamily.SINGLESHOT | 单次读出 | ⏸️ |
ExperimentFamily.SPECTRUM | 频谱分析 | ⏸️ |
ExperimentFamily.T2 | T2退相干 | ⏸️ |
ExperimentFamily.RB | 随机基准测试 | ⏸️ |
🎯 ExperimentType 实验类型
使用 ExperimentType 枚举指定 QCalEval 数据集中的 87 个具体测试用例(用于评估)。详细列表请参考 实验类型文档。
📁 数据格式说明
不同任务对输入/输出数据格式有不同要求,请参考对应任务的详细文档(上面链接)获取具体说明。
🧪 运行测试示例
项目提供了丰富的测试示例,位于 tests 目录下:
# 运行 NNScope 测试
python tests/test_nnscope.py
# 运行 Scope 测试
python tests/test_scope.py
# 运行 Ctrl 测试
python tests/test_ctrl_mcp.py
# 运行 LLM 测试
python tests/test_llm.py
# 运行 Generate 测试
python tests/generate/test_generate.py
⚙️ LLM/VLM 配置
在 qubitclient.json 中配置 LLM/VLM(创建或编辑此文件):
{
"llm": {
"api_key": "your-api-key",
"base_url": "https://your-llm-endpoint.com/v1",
"model": "nvidia/Ising-Calibration-1-35B-A3B"
}
}
支持的模型
| 模型 | 描述 | 推荐用途 |
|---|---|---|
nvidia/Ising-Calibration-1-35B-A3B | NVIDIA Ising,专门针对量子校准任务优化 | 量子测量数据分析首选 |
google/gemma-4-E4B-it | Google Gemma 4,多模态推理能力 | 通用图表分析与推理 |
gpt-4o | OpenAI GPT-4o | 通用对话与分析 |
支持的配置方式(优先级从低到高):
- 默认值(gpt-4o)
- 用户目录
~/qubitclient.json - 环境变量
OPENAI_API_KEY,OPENAI_BASE_URL,OPENAI_MODEL - 运行目录
./qubitclient.json - 构造函数参数(最高优先级)
🔧 格式转换与工具集成
如需将数据转换为特定格式或集成其他工具,请参考 resources 目录下的实用脚本。
📝 更新日志
近期更新
- 🖥️ 新增结果页 DSH 集成:
dsh-plugin/把 pipeline 结果页嵌入 DeepSeek Harness 右侧栏,并提供qubitclient_results工具供模型读取运行记录 - 🎨 新增图像生成模块:支持文本生成图像、图像编辑、Chat API 图像生成(Qwen-Image、DALL-E 等)
- 🐳 新增 Docker 服务部署:新增
qubitclient serve命令,支持一键初始化和启动 qubitscope、qubitserving、proxy 三个服务 - 🤖 新增 VLM 模型支持:
- 🔵 NVIDIA Ising (
Ising-Calibration-1-35B-A3B):专为量子校准任务优化的 VLM - 🟢 Google Gemma 4 (
gemma-4-E4B-it):多模态推理能力,支持图表分析
- 🔵 NVIDIA Ising (
- 🤖 新增 QCalEval 基准测试:集成 NVIDIA QCalEval 数据集,支持 6 种 VLM 任务(Q1-Q6)和 87 种实验类型
- 🤖 新增实验背景模块:为 22 种实验家族提供专业物理背景描述
- 🤖 新增 LLM 决策模块:支持基于评估结果自动决策下一步测量
- 🤖 新增 LLM 模块:集成大语言模型和视觉语言模型,支持量子测量数据分析与决策
- 🎨 优化绘制功能:统一结果绘制风格
- 🤝 增加 Ctrl 功能包:基于 MCP 协议的实时测量任务
- 📈 增加 DRAG 分析功能:支持 DRAG 任务数据分析
- 🧩 增加 scope 功能包:新增多种拟合任务
- 📐 增加曲线类型:支持余弦类型曲线拟合
- 🏗️ 构建基础项目:完成基础功能与结构搭建
🤝 贡献指南
欢迎通过 Issues 提交问题或建议。如果您想贡献代码,请 Fork 本仓库并提交 Pull Request。
📄 许可证
本项目采用 GPL-3.0 许可证。详情请参阅 LICENSE 文件。
Comments
Loading…
Similar plugins
by zaimokuza-yoshiteru
Use AI agents from the DSH session UI.
★ 16
↓ 1k/wk
MIT
TypeScript
Oct 23, 2026
dsh plugin --profile web add @zaimokuza/dsh-acp-adapterby MichaelShii
dsh plugin teamflow
★ 14
↓ 750/wk
MIT
TypeScript
Oct 23, 2026
dsh plugin --profile web add dsh-plugin-teamflowby R-LEI2536
More Agent Presets for DSH derived from other coding agents (e.g. qwen code, iflow)
★ 3
MIT
JavaScript
Sep 12, 2026
dsh plugin --profile web add dsh-more-agent-presetsby eee1723
deepseek harness plugin for houdini. ai agnet for houdini
★ 13
Python
Oct 23, 2026
dsh plugin --profile web add dsh-houdiniby andrepontesmelo
The DSH productivity suite: plugins + agent skills for the DeepSeek Harness, installable in one command.
★ 0
MIT
JavaScript
Sep 11, 2026
dsh plugin --profile web add @andrepontesmelo/dsh-suiteby jypjypjypjyp
AgentTeams plugin for DeepSeek Harness
★ 0
MIT
JavaScript
Sep 8, 2026
dsh plugin --profile web add @jypjypjypjyp/dsh-agent-teams