关于 cirq
Cirq 技能面向使用 Python 设计量子电路的开发者与研究人员,涵盖模拟、噪声建模、编译和硬件执行。它也介绍多个量子硬件提供方的集成及实验流程。
主要功能
- 01构建参数化量子电路
- 02执行精确与含噪模拟
- 03变换、优化和编译电路
- 04集成多家量子硬件提供方
- 05设计参数扫描与量子实验
适用场景
- 01在模拟器中测试电路
- 02研究噪声对电路的影响
- 03为目标硬件编译电路
- 04运行量子实验并分析结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ k-dense-ai/ scientific-agent-skills --skill cirq安装后在 Claude Code 中输入/cirq确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/building.mdexperiments.mdhardware.mdnoise.mdreview.mdsimulation.mdtransformation.md详细介绍
Cirq - 使用 Python 进行量子计算
Cirq 是 Google Quantum AI 的开源框架,用于设计、模拟量子电路,并在量子计算机和模拟器上运行它们。
何时使用此技能
在以下情况下使用此技能:
- 在 Python 中构建、模拟或优化 NISQ 电路
- 在 Google Quantum AI 处理器(通过
cirq-google)或合作伙伴后端(IonQ、Azure Quantum、AQT、Pasqal)上运行作业 - 对噪声建模、编译到硬件门集,或设计表征实验
- 使用参数扫描、变换器或 ReCirq 实验模式
对于 IBM 硬件,请使用 qiskit;对于带自动微分的量子机器学习,请使用 pennylane;对于物理模拟,请使用 qutip。
安装
示例面向 Python 3.11+ 上的 Cirq 1.7.0。保持 Cirq 厂商包与匹配的版本一致;像 Azure Quantum 这样独立版本化的集成需要单独进行兼容性检查。
uv pip install "cirq-core==1.7.0"
# Optional OpenQASM import dependency
uv pip install ply
对于硬件集成(为可复现性固定匹配版本):
# Google Quantum Engine (requires approved GCP project access)
uv pip install "cirq-google==1.7.0"
# IonQ
uv pip install "cirq-ionq==1.7.0"
# AQT (Alpine Quantum Technologies)
uv pip install "cirq-aqt==1.7.0"
# Pasqal
uv pip install "cirq-pasqal==1.7.0"
# Azure: use a SEPARATE environment; its current extras require Cirq <1.7.
uv pip install "qdk[azure,cirq]==1.32.3" "azure-quantum==3.13.0"
将环境中的所有 cirq-* 包固定到同一版本。Azure
示例单独面向其支持的 Cirq 1.6.1 技术栈;不要强行将 Cirq 1.7.0
引入其中。Cirq 1.7.0 将 IonQ 适配器更新到 API v0.4。
本地示例已使用合成电路进行验证。硬件示例仅作说明用途,已对照已发布的源代码和提供商文档进行验证, 但未提交云端作业。参见审查证据。
快速开始
基本电路
import cirq
import numpy as np
# Create qubits
q0, q1 = cirq.LineQubit.range(2)
# Build circuit
circuit = cirq.Circuit(
cirq.H(q0), # Hadamard on q0
cirq.CNOT(q0, q1), # CNOT with q0 control, q1 target
cirq.measure(q0, q1, key='result')
)
print(circuit)
# Simulate
simulator = cirq.Simulator(seed=42)
result = simulator.run(circuit, repetitions=1000)
# Display results
print(result.histogram(key='result'))
参数化电路
import sympy
# Define symbolic parameter
theta = sympy.Symbol('theta')
# Create parameterized circuit
circuit = cirq.Circuit(
cirq.ry(theta)(q0),
cirq.measure(q0, key='m')
)
# Sweep over parameter values
sweep = cirq.Linspace('theta', start=0, stop=2*np.pi, length=20)
results = simulator.run_sweep(circuit, params=sweep, repetitions=1000)
# Process results
for params, result in zip(sweep, results):
theta_val = params['theta']
counts = result.histogram(key='m')
print(f"θ={theta_val:.2f}: {counts}")
核心能力
电路构建
有关构建量子电路的全面信息,包括量子比特、门、操作、自定义门和电路模式,请参见:
- references/building.md - 电路构建完整指南
常见主题:
- 量子比特类型(GridQubit、LineQubit、NamedQubit)
- 单量子比特门和双量子比特门
- 参数化门和操作
- 自定义门分解
- 使用 moment 组织电路
- 标准电路模式(Bell 态、GHZ、QFT)
- 导入/导出(OpenQASM、JSON)
- 使用 qudit 和可观测量
模拟
有关模拟量子电路的详细信息,包括精确模拟、噪声模拟、参数扫描和量子虚拟机,请参见:
- references/simulation.md - 量子模拟完整指南
常见主题:
- 精确模拟(状态向量、密度矩阵)
- 采样和测量
- 参数扫描(单参数和多参数)
- 噪声模拟
- 状态直方图和可视化
- 量子虚拟机(QVM)
- 期望值和可观测量
- 性能优化
电路变换
有关优化、编译和操作量子电路的信息,请参见:
- references/transformation.md - 电路变换完整指南
常见主题:
- 变换器框架
- 门分解
- 电路优化(合并门、弹出 Z 门、丢弃可忽略的操作)
- 面向硬件的电路编译
- 量子比特路由和 SWAP 插入
- 自定义变换器
- 变换流水线
硬件集成
有关在各家提供商的真实量子硬件上运行电路的信息,请参阅:
- references/hardware.md - 硬件集成完整指南
支持的提供商:
- Google Quantum AI(
cirq-google)— 通过 Quantum Engine 分配的处理器;从你获批的项目中发现 ID。内置的虚拟处理器名称并不能证明可以实时访问。 - IonQ(
cirq-ionq)— 离子阱 QPU 和模拟器 - Azure Quantum(
qdk[azure,cirq])— 在其单独支持的环境中,发现你的工作区内与 Cirq 兼容的目标 - AQT(
cirq-aqt)— Alpine Quantum Technologies - Pasqal(
cirq-pasqal)— 本地设备建模;旧版远程采样器并非经过验证的当前 Pasqal Cloud 集成
主题包括设备表示、量子比特选择、身份验证、作业管理以及针对硬件的电路优化。有关 Google Cloud 设置,请参阅 访问与身份验证。
噪声建模
有关噪声建模、含噪模拟、表征和错误缓解的信息,请参阅:
- references/noise.md - 噪声建模完整指南
常见主题:
- 噪声信道(去极化、振幅阻尼、相位阻尼)
- 噪声模型(恒定、门特定、量子比特特定、热)
- 向电路添加噪声
- 读出噪声
- 噪声表征(随机基准测试、XEB)
- 噪声可视化(热力图)
- 错误缓解技术
量子实验
有关设计实验、参数扫描、数据收集以及使用 ReCirq 框架的信息,请参阅:
- references/experiments.md - 量子实验完整指南
常见主题:
- 实验设计模式
- 参数扫描与数据收集
- ReCirq 框架结构
- 常见算法(VQE、QAOA、QPE)
- 数据分析与可视化
- 统计分析与保真度估计
- 并行数据收集
常见模式
变分算法模板
import scipy.optimize
def variational_algorithm(ansatz, cost_function, initial_params):
"""Template for variational quantum algorithms."""
def objective(params):
circuit = ansatz(params)
simulator = cirq.Simulator()
result = simulator.simulate(circuit)
return cost_function(result)
# Optimize
result = scipy.optimize.minimize(
objective,
initial_params,
method='COBYLA'
)
return result
# Define ansatz
def my_ansatz(params):
q = cirq.LineQubit(0)
return cirq.Circuit(
cirq.ry(params[0])(q),
cirq.rz(params[1])(q)
)
# Define cost function
def my_cost(result):
state = result.final_state_vector
# Single-qubit Pauli-Z expectation; invariant to global phase.
return float(abs(state[0])**2 - abs(state[1])**2)
# Run optimization
result = variational_algorithm(my_ansatz, my_cost, [0.0, 0.0])
硬件执行模板
示例性说明:需要提供商凭据、分配的处理器 ID 以及当前的提供商目标名称。本地模拟示例并不能验证 QPU 访问。
import cirq
def run_on_hardware(circuit, sampler, device, repetitions=1000):
"""Submit an already routed/compiled circuit to an explicitly chosen sampler."""
device.validate_circuit(circuit)
return sampler.run(circuit, repetitions=repetitions)
使用 hardware.md 配置特定于提供商的采样器。显式选择目标;编译本身并不会路由不连通的量子比特,也不保证硬件访问。
噪声研究模板
def noise_comparison_study(circuit, noise_levels):
"""Compare circuit performance at different noise levels."""
results = {}
for noise_level in noise_levels:
# Create noisy circuit
noisy_circuit = circuit.with_noise(cirq.depolarize(p=noise_level))
# Simulate
simulator = cirq.DensityMatrixSimulator()
result = simulator.run(noisy_circuit, repetitions=1000)
# Analyze
results[noise_level] = {
'histogram': result.histogram(key='result'),
'dominant_state': max(
result.histogram(key='result').items(),
key=lambda x: x[1]
)
}
return results
# Run study on a Bell circuit with the measurement key expected above.
q0, q1 = cirq.LineQubit.range(2)
circuit = cirq.Circuit(cirq.H(q0), cirq.CNOT(q0, q1),
cirq.measure(q0, q1, key="result"))
noise_levels = [0.0, 0.001, 0.01, 0.05, 0.1]
results = noise_comparison_study(circuit, noise_levels)
最佳实践
-
电路设计
- 为你的拓扑结构使用合适的量子比特类型
- 保持电路模块化并可复用
- 用具有描述性的键标记测量
- 在执行前根据设备约束验证电路
-
模拟
- 对纯态使用状态向量模拟(更高效)
- 仅在需要时使用密度矩阵模拟(混合态、噪声)
- 利用参数扫描而非单独运行
- 监控大型系统的内存使用(2^n 增长很快)
-
硬件执行
- 始终先在模拟器上测试
- 使用校准数据选择最佳的量子比特
- 针对目标硬件的门集优化电路
- 使用留出的校准数据和不确定性验证任何缓解措施
- 立即保存昂贵的硬件结果
-
电路优化
- 从高层次的内置 transformer 开始
- 依次串联多个优化
- 跟踪深度和门数量的减少
- 在变换后验证正确性
-
噪声建模
- 使用来自校准数据的真实噪声模型
- 说明模型包含哪些门、空闲、退相干和读出效应
- 在缓解之前先进行表征
- 保持电路较浅以尽量减少噪声累积
-
实验
- 以清晰的分离结构组织实验(数据生成、收集、分析)
- 使用 ReCirq 模式以确保可复现性
- 频繁保存中间结果
- 并行化独立任务
- 用元数据详尽记录
其他资源
- 官方文档:https://quantumai.google/cirq
- API 参考:https://quantumai.google/reference/python/cirq
- 教程:https://quantumai.google/cirq/tutorials
- 示例:https://github.com/quantumlib/Cirq/tree/main/examples
- 版本策略:https://quantumai.google/cirq/dev/versions
- ReCirq:https://github.com/quantumlib/ReCirq
常见问题
电路对硬件来说太深:
- 使用电路优化 transformer 来减少深度
- 有关优化技术,请参见
transformation.md
模拟时的内存问题:
- 对于合适的信道,使用状态向量轨迹并平均足够多的独立运行;单条轨迹不是混合态密度矩阵
- 减少量子比特数量,或对 Clifford 电路使用 stabilizer 模拟器
设备验证错误:
- 使用 device.metadata.nx_graph 检查量子比特连接性
- 将门分解为设备原生的门集
- 有关设备特定的编译,请参见
hardware.md
噪声模拟太慢:
- 密度矩阵模拟的复杂度为 O(2^2n) —— 考虑减少量子比特
- 仅在关键操作上有选择地使用噪声模型
- 有关性能优化,请参见
simulation.md
引用 Scientific Agent Skills
本技能是 K-Dense 的 Scientific Agent Skills 的一部分。如果它对一篇 稿件、报告、演示或代码发布有实质性贡献,请将该论文添加到参考文献或 软件部分,并告知用户你已这样做:
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065
始终引用当前版本。DOI 和 https://arxiv.org/abs/2609.00065 会解析到
最新的 arXiv 版本,因此绝不要附加诸如 v1 之类的版本后缀。当有网络访问
可用时,在撰写参考文献之前获取 https://arxiv.org/abs/2609.00065(或
http://export.arxiv.org/api/query?id_list=2609.00065),并从该记录中提取
作者列表、年份和版本。如果该记录列出了期刊参考文献
或出版商 DOI,请改为引用已发表的版本。