图表分析智能体 #3134
goodplayersoga
started this conversation in
Show and tell
图表分析智能体
#3134
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
图表分析智能体 — 基于 PaddleOCR + VLM 的多技能图表处理 Agent
项目定位
这是一个跑在 Nexent 平台上的端到端图表分析 Agent,以 PaddleOCR MCP Server 提供本地 OCR 能力,以 4 个 Skill 编排图表处理管道。用户上传任意图表图片后,经 OCR 识别 → 视觉对齐 → 结构化提取 → 代码生成 四步,即可获得可执行的 matplotlib Python 代码;或经 SUBSTEP 问题拆解 → 子代理原子查询 → 结果合成 三步,获得关于该图表的精确答案。
两条管道共享 OCR 和对齐的中间结果,可串联使用——先生成代码,再对同一张图提问,不重复分析。
架构设计:主 Agent 编排 + 子代理执行 + 本地 MCP
所有大模型推理由 Nexent 平台提供,OCR 文字识别由本地 PaddleOCR MCP Server 完成,图表视觉分析由 Nexent 内置 VLM 工具完成。
管道 A:图表转代码
管道 B:图表问答
文件结构
关键设计决策
1. OCR 作为 MCP Server,其余作为 Skill
OCR 需要真正执行 PaddleOCR 代码,LLM 无法直接完成,所以独立为 MCP Server。视觉对齐、JSON 提取、代码生成本质是"指导 LLM 如何思考和输出",SKILL.md 中的 prompt 就足够,无需封装为 Python Tool。
2. 管道步骤拆分为独立 Skill
每次 Skill 调用在 Nexent 对话中显式可见——用户能看到 Agent 正在执行
chart-vision-alignment→chart-structure-extract→chart-code-generate,中间产物(对齐报告、JSON)可检查和修正。对比单一黑盒 Skill,出问题时只需定位和修改出问题的那个。3. 严格 JSON 中间语言
Skill 2 输出的是固定 schema 的 JSON(
chart_type、x_axis、y_axis、series、legends),而非自由格式。这保证 Skill 3 不需要猜测数据结构,直接解析即可生成代码。同时 JSON 可被管道 B 复用,避免重复分析。4. SUBSTEP 问题拆解 + 子代理并行查询
复杂图表问题不直接丢给一个 VLM 调用,而是先拆解为原子子问题(每个只查一个值),再委派 3 个专用子代理并行查询。子代理用 flash 模型(更便宜),返回结果由主 Agent 按伪代码逻辑合成。这解决了单次 VLM 调用对复杂问题的幻觉和遗漏问题。
5. 两条管道共享中间结果
管道 A 和管道 B 不是两个独立的 Agent,而是同一 Agent 的两条路径。generated_code.py 执行完毕后,
chart-structure-extract输出的 JSON 仍在上下文中,用户可以立刻对同一张图提问,Agent 直接复用 JSON 做计算,无需重新 OCR 和对齐。使用的工具与技能
MCP 工具
Nexent 内置工具
技能
chart-vision-alignmentchart-structure-extractchart-code-generatechart-qa-understanding适用场景
数据可视化工作者:看到一张图表需要复现 → 上传直接生成 matplotlib 代码,无需手动量坐标、取色、写图例
数据分析师:需要对图表做数据提取和比较 → 上传后提问"最大值和最小值差多少""哪个系列增长最快"
科研/论文写作:需要将他人论文中的图表转为可编辑代码并修改 → 生成代码后自行调整参数
Nexent 平台开发者:作为"Skill 编排 + MCP 集成 + 子代理协作"的参考架构,展示如何将确定性管道映射到 LLM 驱动的 Agent 平台
图表 OCR 场景参考:PaddleOCR MCP Server 可被任何需要图表文字提取的 Agent 复用
快速体验
1. 部署 PaddleOCR MCP Server
2. 注册 MCP Server 到 Nexent
3. 导入 Agent 和 Skill
chart_analysis.jsonskills/下对应内容4. 开始使用
上传图表图片后:
项目亮点
Skill 显式调用:管道步骤不是黑盒,每次切换 Skill 在对话中可见,中间产物可检查
本地 OCR 精确提取:PaddleOCR 提供像素级文字位置(四点坐标 + 中心坐标),VLM 仅做对齐,不做识别
严格中间语言:对齐结果先转为固定 schema JSON,再生成代码——数据可溯源,不确定处如实标注
SUBSTEP 拆解 + 子代理并行:复杂问答不走单次 VLM 调用,拆解后并行查询,结果可追溯每个数值来源
两条管道独立可串联:生成代码和回答问题可在同一对话中连续使用,共享中间结果
配置文件
chart_analysis.json
chart-code-generate.SKILL.md
chart-qa-understanding.SKILL.md
chart-structure-extract.SKILL.md
chart-vision-alignment.SKILL.md
chart_atomic_fact_assistant.json
chart_value_query_assistant.json
chart_yes_no_assistant.json
server.py
Beta Was this translation helpful? Give feedback.
All reactions