文章目录 展开 收起

项目

Agent 参与分解流程小型实验

2026-11-02

实验设置:

固定 QSD 流程与 Agent 驱动的工具编排流程; (Agent依然可以用 QSD)

baseline

QSD;

当前 baseline QSD 已经输出量子门线路,但这些门可能是 U、CX、RZ、H;本项目规定最终只能用 RX、RZ、SX、X、CZ。其中 U、CX、H ,需要进一步等价转换。

实验参数设置:config.yaml

固定门集: RX RZ SX X CZ

拓扑关系:3 个 qubit线性连接;

比较指标:酉矩阵相似度、CX 数量、电路深度、总门数;

Agent 负责哪些

可调用的工具有什么? AQC、diagonal、Clifford、Qserach、KAK、QSD;

Agent 的决策请求包括:

目标矩阵的 ID、矩阵特征,不发送完整复数矩阵。
优化目标:正确性优先,然后比较 CZ 数、深度、总门数。
QSD Baseline 的指标:将 baseline 已经完成的分解指标给 Agent。CZ 数量、深度等等;
当前合法、可用的工具及参数定义。
已尝试的候选、上一次评价反馈、剩余预算。

{
  "matrix_id": "M01",
  "goal": "valid first; minimize (cz_count, depth, total_gates)",
  "features": {
    "n_qubits": 3,
    "diagonal_error": 0.9501224590962994,
    "is_clifford": false,
    "tensor_separable": false,
    "identity_overlap": 0.021563491596844595,
    "unitarity_error": 4.922122155816044e-16,
    "subproblem_id": null,
    "available_tools": ["QSD", "AQC"]
  },
  "baseline_metrics": {
    "similarity": 0.9999999999999996,
    "cz_count": 31,
    "depth": 89,
    "total_gates": 143,
    "basis_ok": true,
    "topology_ok": true,
    "valid": true
  },
  "candidate_history": [],
  "remaining_budget": {
    "tool_calls": 3,
    "decisions": 5
  },
  "last_feedback": null
}

任务决策器、特征提取器、评价器、执行器等每一个部分的输入输出到底是什么需要讲清楚;

特征提取器提供哪些特征:

重要。决定 Agent 能得到什么特征。

特征含义能影响什么决策
n_qubits输入矩阵对应的比特数量能否使用 KAK、AQC
diagonal_error矩阵偏离对角矩阵的程度是否使用 Diagonal Synthesis
is_clifford是否属于 Clifford 酉矩阵是否使用 Clifford Synthesis
tensor_separable是否能够写为小矩阵的张量积是否先拆分子问题
identity_overlap与单位矩阵的接近程度(忽略全局相位)是否值得尝试低深度近似电路
unitarity_error是否满足酉性条件输入是否合法
baseline_cxQSD 的 CX 门数量其他候选需要改善的指标
baseline_depthQSD 的电路深度其他候选需要改善的指标

任务决策器(核心):

项目结构

unitary-agent-demo/
├── demo.ipynb                    # 主操作入口,逐步运行与展示实验
├── README.md                     # 项目介绍
├── VALIDATION.md                 # 验收结果、已处理问题与已知限制
├── config.yaml                   # 门集、拓扑、精度门槛及 Agent 预算
├── environment.yml               # Conda 环境定义
├── requirements.txt              # 项目直接依赖及固定版本
├── requirements-server.lock.txt  # 服务器完整 Python 依赖快照
├── .gitignore                    # Git 忽略规则
│
├── src/                          # 核心实现
│   ├── __init__.py               # Python 包入口
│   ├── matrices.py               # 生成、校验和保存目标酉矩阵
│   ├── baseline.py               # 运行固定配置的 QSD Baseline
│   ├── features.py               # 提取矩阵特征及 KAK 子问题
│   ├── tools.py                  # 注册综合工具、校验参数和控制超时
│   ├── normalizer.py             # 统一门集并映射到线性拓扑
│   ├── evaluator.py              # 检查正确性并计算四项指标
│   ├── agent.py                  # DeepSeek 工具调用与评价反馈
│   └── experiment.py             # 编排实验流程、保存状态和汇总结果
│
├── scripts/                      # 环境与运行辅助脚本
│   ├── setup-server.sh           # 创建服务器环境、安装依赖与内核
│   ├── start-jupyter.sh          # 启动 JupyterLab
│   └── validate-notebook.py      # 执行完整 Notebook 并保存验收结果
│
├── tests/                        # 离线测试
│   └── test_pipeline.py          # 验证综合流程、评价及调用约束
│
└── results/                      # 实验输出,每次运行使用独立目录
    ├── .gitkeep                  # 保留空目录的占位文件
    └── validation-20261102/      # 服务器上的本次验收产物
        ├── config.json           # 本次运行的配置快照
        ├── demo.executed.ipynb   # 已执行并保留输出的 Notebook
        ├── summary.csv           # Baseline 与 Agent 指标对比
        ├── matrices/             # 目标矩阵、种子与 KAK 分解因子
        ├── circuits/             # 原始及最终线路、布局与逻辑算符
        └── traces/               # 每轮决策、执行反馈和最终选择

文件位置

  • 准备测试、提前生成的矩阵:unitary-agent-demo/results/exploration-validation-20261102/matrices样本类别是:M01 M02 … M04; 想生成不同的M01,改随机种子即可;

  • 评估:先检查准确性(相似度)、然后检查是否满足硬性要求、最后剩下来的按照CZ 数量、深度、总门数量的顺序选最优;

    相似度:

    F(U,V)=∣Tr(U†V)∣2d2=∣Tr(U†V)∣264F(U, V) = \frac{|\text{Tr}(U^\dagger V)|^2}{d^2} = \frac{|\text{Tr}(U^\dagger V)|^2}{64}

    这个函数是Qiskit提供的 酉矩阵相似保真度,有文献。A simple formula for the average gate fidelity of a quantum dynamical operation。

  • 特征提取器:unitary-agent-demo/src/features.py

QA

预算请求会不会太少?

两种分解的比较在哪里?

在发送给模型的上下文中,模型怎么知道这些个字段代表什么?

unitary-agent-demo/src/agent.py:里面放了系统提示词,模型的角色、任务;还有函数定义;

unitary-agent-demo/src/experiment.py 告诉模型具体的矩阵特征、Baseline 指标、历史结果和预算;

当前没用 langchain,如果用了 langchain,当前项目会有什么变化?简化在哪里?

当前程序生成一个候选方案,只通过一种方法生成到底;然后再 Transpile 成硬件约束路线;不涉及自主设计组合路线

流派:自顶向下分解,or,自底向上搜索;