多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

如何让LLM帮你选对图表?Data-Analysis-Agent推荐引擎的Prompt工程与JSON解析揭秘

如何让LLM帮你选对图表?Data-Analysis-Agent推荐引擎的Prompt工程与JSON解析揭秘 如何让LLM帮你选对图表Data-Analysis-Agent推荐引擎的Prompt工程与JSON解析揭秘【免费下载链接】Data-Analysis-Agent你的私人数据分析助手。通过对话式交互自动生成可视化报表与商业洞察让数据决策变得像聊天一样简单。 Your personal data analysis assistant. Say goodbye to complex SQL and Excel formulas. An LLM-powered data analysis agent. Chat with your data to instantly generate visualizations and business insights. Making>项目地址: https://gitcode.com/gh_mirrors/vi/Data-Analysis-AgentData-Analysis-AgentVizPilot AI是一个 LLM 驱动的智能图表推荐与生成系统上传 Excel 或 CSV 数据后它会自动分析字段类型与数据特征由大语言模型推荐 3-5 个最合适的图表并附理由、星级评分和字段映射建议最终一键生成交互式 HTML 报表。整个过程像聊天一样简单让数据决策告别复杂 SQL 和 Excel 公式。上面是系统首页。左侧完成数据上传和 LLM 提供商配置右侧是图表网格——这份列表并非手写死而是由 charts/registry.py 注册表统一驱动新增图表只需改一处前后端自动同步。一图看懂推荐链路整个智能推荐可以拆成五步全部封装在 LLM/llm_recommender.py读数据解析 CSV/XLSX自动识别数值列与文本列见 core/loader.py拼 Prompt把数据特征 图表白名单 输出格式约定打包成提示词调 LLM以temperature0.2的低随机度请求保证输出稳定解析 JSON多级容错提取推荐数组严格校验白名单过滤 字段映射补全输出干净结果给前端Prompt工程的三个关键设计1. 角色锚定让模型只说人话图表Prompt 以「你是数据可视化专家」开头见 LLM/llm_recommender.py。这一句看似平常其实把模型的知识空间约束到了数据可视化领域减少无关发散是 Prompt 工程里最基础也最有效的技巧之一。2. 动态图表白名单注册表即 Prompt这是本项目最巧妙的设计。函数build_charts_definition()每次都会从charts/registry.py实时生成图表目录注入 PromptAVAILABLE CHART TYPES (ONLY use these chart_id values): [对比类 COMPARING] chart_id: Bar_Chart name: 柱状图 desc: 通过矩形高度编码数值最常用的比较图表 required_fields: x, y ...好处有三永不失配注册表加一个图表Prompt 立刻多出对应选项LLM 永远不会推荐系统里根本不存在的图表带字段契约每个图表的required_fields如source, target, value一并告知 LLM让它提前按字段结构推荐而不是拍脑袋按优先级排序priority高的图表排在前面利用 LLM 对靠前内容权重更高的特性自然提高热门图表被选中的概率3. 结构化输出约定给 LLM 一张答题卡Prompt 末尾明确要求返回 JSON 数组每个推荐包含chart_id、stars五星~一星推荐、reason、field_mapping、columns_to_keep、data_processing六个字段并给出四条硬约束field_mapping必须覆盖所有required_fields列名必须是数据中真实存在的列只推荐注册表中存在的图表最多推荐 5 个图表这套答题卡式约定是后续 JSON 解析能够高成功率的根基——模型连往哪个格子里填都知道翻车概率自然低。JSON解析的三级容错LLM不是每次都听话再好的 Prompt 也无法保证 LLM 100% 按格式返回。extract_and_parse_json()采用了经典的三级回退策略第一级直接json.loads如果模型很乖返回的就是纯 JSON 数组一步到位。第二级提取围栏代码块很多模型会把 JSON 包在json ... 里。正则同时匹配带语言标记和裸围栏两种形式for p in [rjson\s*(.*?)\s*, r\s*(.*?)\s*]:第三级暴力截取最外层方括号最兜底的一招找到第一个[和最后一个]之间的内容再用正则re.sub(r,(\s*[\]}]), r\1, ...)顺手清掉 JS 风格的尾逗号这是 LLM 输出 JSON 最常见的翻车点然后再次尝试解析。三级全部失败才返回None前端会提示重试。这种能救则救的容错设计是 LLM 工程里对抗输出不稳定的通用思路。严格校验层白名单 字段映射双重兜底拿到 JSON 后还不能直接相信sanitize_and_validate_recommendations()会做一轮警察工作白名单过滤chart_id不在charts/registry.py里的直接丢弃防止模型幻觉出waterfall_chart_v2之类的野名星级纠偏星级字段只接受五星/四星/…/一星推荐六个合法值否则统一回填为三星字段映射瘦身只保留该图表required_roles和optional_roles中允许的角色名且值必须是真实列名必填检查required_fields缺一个就整条丢弃——宁缺毋滥避免生成时报错兼容回填对 XY 图老字段x_label/y_label会自动回填进field_mapping平滑过渡列名吸附自动把field_mapping中指向真实列的值并入columns_to_keep保证下游绘图模块拿到的列一定存在经过这一层返回给前端的推荐列表已经是可安全执行的干净数据。多 LLM 提供商一个配置面板切换 DeepSeek / OpenAI / 自定义推荐引擎与具体模型解耦。LLM/llm_config_manager.py 统一管理内置提供商DeepSeek、OpenAI、Claude和用户自定义的 OpenAI 兼容接口配置持久化在 LLM/llm_config.json。在页面 Settings 面板填入 API Key 并保存后调用analyze_data_with_llm()时会通过get_llm_client(provider)动态构造客户端无需改一行代码即可切换模型。这也是Prompt 工程落地的重要一环Prompt 写得好模型换得快。如上图当上传的数据包含source/target/value三列时LLM 给出五星推荐 桑基图理由和字段标签一目了然右侧图表网格中桑基图卡片同步高亮——这是推荐结果直接驱动前端 UI 的体现。图表详情页把推荐讲明白双击任一图表卡片可打开详情页左侧展示来自 charts/ 目录下各图表 README 的元数据分类、所需列、约束右侧是 Plotly 交互式示例帮助新手在点击生成前心里有数。规则引擎与 LLM 的双保险除 LLM 推荐外项目还提供了基于规则的 core/recommender_rules.py 推荐引擎根据列类型组合时间列数值列→折线图、双数值列→散点图、地理列→地图…做确定性匹配规则阈值集中定义在 LLM/chart_rules.yaml。LLM 负责聪明的解释规则负责兜底的确定性两者互为备份推荐结果既稳又准。上手只需三步安装依赖pip install -r requirements.txt详见 requirements.txt启动服务python app.py或 Windows 下双击 start.bat浏览器访问http://localhost:5017上传文件 → 配置 API Key → 点发送 → 选图生成写在最后Data-Analysis-Agent 的推荐引擎给所有做 LLM 应用的人上了三节课Prompt 不是模板是接口——把动态数据源注册表注入 Prompt让模型永远与系统状态同步JSON 解析要有三级火箭——直接解析 → 抽围栏 → 截方括号清尾逗号容错到位成功率翻倍校验层不能省——LLM 输出必须过一次白名单 契约校验才能安全进入生产链路掌握这套组合拳你也能把任何让 LLM 帮我选/写/生成 X的场景做得又稳又省心。【免费下载链接】Data-Analysis-Agent你的私人数据分析助手。通过对话式交互自动生成可视化报表与商业洞察让数据决策变得像聊天一样简单。 Your personal data analysis assistant. Say goodbye to complex SQL and Excel formulas. An LLM-powered data analysis agent. Chat with your data to instantly generate visualizations and business insights. Making>项目地址: https://gitcode.com/gh_mirrors/vi/Data-Analysis-Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表