关注下方“公众号”,获取更多开源资讯
导读
电力系统静态分析(潮流计算、N-1校核等)高度依赖专业工具如MATPOWER,工程师需手工编写或调试代码,耗时且易错。
中山大学团队提出一套基于LLM的智能体框架,将自然语言指令自动转换为MATPOWER脚本,并通过三层纠错机制(静态预检+动态反馈循环+语义校验器)确保代码可靠性。利用DeepSeek-OCR将265页MATPOWER手册重构为增强向量库,结合MCP协议实现异步执行与自动调试。在10个仿真任务上,系统全局保真度GCA达82.38%,相比无RAG模式提升近18个百分点,有效消除了复杂分析任务中的代码幻觉。并于2026年4月17日至19日在中国南京举行的第九届能源、电气和电力工程国际会议(CEEPE 2026)上被接受发表。
-
标题:Agentic Application in Power Grid Static Analysis: Automatic Code Generation and Error Correction -
作者:Qinjuan Wang, Shan Yang, Yongli Zhu -
机构:中山大学 -
发表:CEEPE 2026
一、背景与挑战
电力系统静态分析(如潮流计算、N-1安全校核、最优潮流等)是电网稳定运行的核心环节。工程师通常使用MATPOWER、PSS/E等专业工具,但这些工具的学习成本高,每次分析任务都需要手动编写或修改MATLAB脚本。特别是当分析场景变化(例如从支路故障切换到母线故障,或从发电机失效改为负荷失效)时,代码需要大幅调整,过程繁琐且容易出错。
大语言模型(LLM)的出现为自然语言生成代码提供了可能,但直接使用通用LLM存在两大障碍:
-
领域知识缺失:MATPOWER有265页用户手册,包含大量参数表、API约定和数学公式,普通LLM无法准确记忆。 -
代码幻觉:生成的代码可能在MATLAB中运行成功,但逻辑上并未实现用户意图,这种“静默错误”难以发现。
本文提出的智能体框架,通过增强检索、三层纠错和MCP异步执行,将自然语言指令转化为可靠的可执行MATPOWER脚本。
二、架构设计
2.1 增强向量库构建:DeepSeek-OCR + 双源拼接
传统的PDF文本提取会破坏表格和代码块的结构关系。系统采用DeepSeek-OCR对265页MATPOWER 8.1用户手册进行版式分析,输出高质量Markdown,保留层级标题和代码块结构。然后通过滑动窗口切分为语义块。
为兼顾内容完整性和结构清晰,系统将OCR处理后的Markdown与原始PDF文本流拼接后共同入库,使用预训练Transformer编码为向量,FAISS建立索引。检索时,先通过Query Planner将用户指令拆解为子请求,分别召回Top-K片段后重组注入LLM提示。
图片来源于原论文
2.2 三层纠错机制
第一层:静态预检(Static Pre-check)
在代码送入MATLAB前,基于MATPOWER约定进行规则扫描:
-
模糊匹配纠正API拼写错误(如 pf.algorithm→pf.alg) -
检测到 PD、GEN_BUS等常量时自动注入define_constants;语句
第二层:动态反馈循环(Dynamic Feedback Loop)
当MATLAB返回运行时错误时,系统捕获错误栈,结合静态预检提示、上一轮失败代码、用户原始请求、RAG检索上下文,构造错误报告作为新提示发给LLM,让其分析并重写代码。最大迭代次数设为5,避免无限循环。
第三层:语义校验器(Semantic Validator)
即使代码能运行,也可能不符合用户意图。系统使用一个独立的LLM实例,将用户请求与最终代码进行比较,输出“关键级”或“轻微级”偏差。关键偏差强制重试,轻微偏差仅输出警告但放行。
图片来源于原论文
2.3 MCP异步架构与工程实现
系统基于LangChain构建Agent工作流,并封装为MCP(Model Context Protocol)服务器,支持外部工具调用。由于MATLAB仿真计算密集,采用asyncio+subprocess异步架构:主进程收到请求后fork独立子进程运行Agent,避免阻塞。子进程将最终代码、执行状态、调试日志打包为JSON,并在头部添加标识符,主进程通过流解析后返回MCP标准响应。
前端使用Chainlit提供Web可视化界面,实时显示Agent的思考过程、代码生成与纠错历史。
三、实验结果与对比
3.1 测试任务与评价指标
论文设计了10个仿真任务,其中6个代表性任务如下:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
评价指标:
-
单任务保真度 CSGF_i = S_i × (N_threshold - (n_i - 1)) / N_threshold,其中S_i为语义得分(1.0完美,0.8必要变通,0失败),n_i为迭代轮数,N_threshold=5 -
全局保真度 GCA = (1 - sqrt(1/K Σ(1-CSGF_i)²)) × 100%
3.2 不同检索模式对比
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
| Mode 3(双源增强向量库) | 82.38% |
关键发现:
-
Mode 1反而最差(25.82%),因为关键词匹配引入大量噪声。 -
Mode 2(仅PDF)仅略高于零样本,说明原始PDF切块破坏结构,RAG收益被噪声抵消。 -
Mode 3结合OCR结构化信息与PDF完整文本,达到最佳。
3.3 消融实验
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
-30.96pp |
|
|
|
|
|
|
|
|
|
|
|
|
核心结论:语义校验器贡献最大,去掉后性能崩盘;动态反馈与Query Planner也至关重要;单独的反馈循环(无校验器)反而比零样本更差,因为LLM会自信地输出错误代码。
3.4 31%幻觉率与语义校验器的作用
在Execution Only(去掉语义校验器)的消融中,约31%的代码在MATLAB中可运行但违背用户意图。语义校验器将这31%的“静默错误”抓出并强制重试,从而将GCA从51.42%拉升至82.38%。
图片来源于原论文
四、关键发现与消融分析
-
向量库构建质量决定RAG成败:仅使用OCR-Markdown关键词匹配(Mode 1)GCA最低(25.82%),反而比无RAG还差。说明结构保留不够,且未做语义向量检索,导致大量噪声干扰。双源拼接+FAISS向量检索(Mode 3)是性能跃升的关键。
-
语义校验器不可替代:去掉校验器后GCA下降30.96个百分点,是所有组件中影响最大的。因为很多代码能运行但逻辑错误,人类难以逐行审计,必须用LLM自动校验。
-
动态反馈需要校验器配合:单有反馈循环(无校验器)GCA仅51.42%,低于零样本的64.36%。这是因为反馈循环会把“运行成功”当作成功,反而强化了错误代码。必须与语义校验器配套使用。
-
Query Planner对硬任务至关重要:在Hard任务上,Simple Search(去掉规划器)的平均CSGF仅0.86,而Full Model达0.90。复杂任务需要拆解意图才能召回精确的API使用示例。
五、总结与思考
核心贡献
-
首个面向MATPOWER的LLM智能体自动代码生成与纠错系统,实现从自然语言到可执行脚本的端到端自动化。 -
DeepSeek-OCR+双源向量库,解决了技术文档中表格、代码块的结构化检索难题。 -
三层纠错机制(静态预检+动态反馈+语义校验器),将全局保真度从64.65%提升至82.38%,有效消除31%的静默幻觉。 -
MCP异步架构,支持与外部工具集成,避免长时间仿真阻塞。
产业落地价值
-
电网调度/规划人员:可直接用自然语言描述分析任务,系统自动生成并调试MATPOWER脚本,大幅降低编程门槛。 -
教育培训:学生可通过自然语言交互学习电力系统分析,无需记忆复杂API。 -
运维自动化:当分析场景频繁变化时(如不同故障类型),系统可快速重新生成代码,减少人工修改时间。
该工作为电力系统分析自动化提供了一个可复用的Agent范式:高质量文档向量化 + 三层纠错 + 异步工具调用。对于任何需要频繁编写仿真脚本的工程领域,该方法都具有借鉴意义。
Coovally 团队在视觉算法开发中也在实践 AI 编码工具与 Agent 工作流。如果您对 AI 辅助开发的落地经验感兴趣,欢迎评论区交流~
© THE END
转载请联系本公众号获得授权
分享、点赞与在看,至少帮我拥有一个~

