【天翼AI-星辰智能体平台】| 基于Excel表实现智能问数助手智能体开发实战

【天翼AI-星辰智能体平台】| 基于Excel表实现智能问数助手智能体开发实战

目录

一. 🦁 写在前面

今天,狮子使用中国电信的智能体平台——星辰智能体平台,搭建一个基于Excel表格问数的工作流,给了两张表(一张用户个人画像表(大概120多个字段),一张订单表(大概四个个字段)),一共两万条数据,现在要做根据自然语言问数,需要返回的数据形式有多种:分别是表格、柱状图、饼图、折线图这几种。
看了一下这个平台,因为神态酷似dify,但是确实插件比较少,给的数据源数据量较大,所以决定采用外部实现一个智能体用于处理数据和提供接口,在平台http接口的形式调用,在平台内实现图表和表格生成(尽力了,真不知道在平台怎么处理这个数据源)。
现在狮子来回忆一波捏这个工作流的步骤,并且分享一下在平台上实现图表的教程!!!

二. 🦁 搭建流程

2.1 总体工作流展示

在这里插入图片描述

2.2 外部工作流搭建流程

这个外部工作流的作用是查询数据源,并且返回用户需要的数据!数据源格式如下:

在这里插入图片描述


实现该流程的方案有两种。

2.2.1 方案一—pandas + 规则解析 + 字段RAG 混合问数

第一种方案就是利用pandas解析Excel表格的便捷性,将问题中的筛选条件提取出来标准化,再去Rag数据库那里检索最相关的字段说明,将检索结果与统计摘要拼成prompt交给大模型生成简短关联分析,同时通过pandas根据字段筛选出相应的数据,通过接口返回。具体流程如下:

在这里插入图片描述
ps:
狮子选择该种方法实现问数,因为时间有点急,数据库处理很麻烦。

2.2.2 方案二—Text2SQL方案

方案二则是将Excel的数据导入到数据库(可以选择SQLite)中,然后构建Rag向量库。用户输入问题后,先去知识库筛选对应的表信息,再封装成Prompt提交给大模型,让大模型帮忙生成对应的SQL,具体实现可以参考以下流程图:

在这里插入图片描述
ps:
这里后续还会有具体的文章来说明!

2.3 表格展示构建实现

如果用户的问题是返回对应的列表时,则需要展示时使用表格的方式呈现,这个其实很好实现,因为智能体平台一般都支持Markdow语法的数据展示,所以直接将得到的数据通过大模型转化为表格的语法,输出则是表格的形式。这个我们通过规定的提示词给大模型则可以实现,提示词如下:

1. 接收{{output#}}内容并检查其是否为空。2. 如果输入内容为空,输出“未查询到结果请调整查询话术”。 3. 如果输入内容不为空,将提取的{{output#}}整理成表格,同时汇总数量。简洁输出
在这里插入图片描述

2.4 图表展示构建实现

ps:
这一步之所以能实现,完全是因为平台支持Echarts的md格式,当平台的前端界面识别到这个由三个反引号包裹、并标记为echarts的代码块时,便会自动将其渲染为交互式图表

图表展示这块,我们肯定使用熟悉的Echarts组件库,官网地址如下:https://echarts.apache.org/examples/zh/index.html,在官网我们可以看到其实每种图都有一个代码模板的,比如折线图:

{"title":{"text":"{{ CHART_TITLE | default('Chart') }}","left":"center"},"tooltip":{"trigger":"axis","axisPointer":{"type":"cross"},"formatter":"{b} : {c}"},"xAxis":{"type":"category","data":{{ data.labels | tojson }},"boundaryGap":false},"yAxis":{"type":"value","name":"{{ Y_AXIS_NAME | default('Y') }}"},"series":[{"name":"{{ SERIES_NAME | default('Series') }}","type":"line","data":{{ data.values | tojson }},"smooth":true,"lineStyle":{"color":"rgba(54, 162, 235, 1)","width":2},"itemStyle":{"color":"rgba(54, 162, 235, 0.8)"},"areaStyle":{"color":"rgba(54, 162, 235, 0.1)"}}]}

我们每次只要将不同的数据填充进来,就能都得到不同数据的折线图,但是我们通过接口传过来的数据是json字符串,那应该如何将这个数据填充进Echarts模板呢?
这时候可以使用到大模型来帮我们完成,需要编写一段提示词,将json的数据对象提取出来交给大模型,大模型就会根据提示词将数据给我们格式化为Echarts代码。提示词如下:

你是一个专业的ECharts数据可视化专家。根据用户提供的数据,使用提供给您的模板,生成标准的折线图ECharts配置。 用户数据:{{#1765639035525.chart_data#}} 提供给您的模板: " # 折线图模板 适用场景:展示数据随时间的变化趋势 模板代码: ```json { "title": { "text": "{{ CHART_TITLE | default('Chart')}}", "left": "center" }, "tooltip": { "trigger": "axis", "axisPointer": { "type": "cross" }, "formatter": "{b} : {c}" }, "xAxis": { "type": "category", "data": {{ data.labels | tojson }}, "boundaryGap": false }, "yAxis": { "type": "value", "name": "{{ Y_AXIS_NAME | default('Y')}}" }, "series": [{ "name": "{{ SERIES_NAME | default('Series')}}", "type": "line", "data": {{ data.values | tojson }}, "smooth": true, "lineStyle": { "color": "rgba(54, 162, 235, 1)", "width": 2 }, "itemStyle": { "color": "rgba(54, 162, 235, 0.8)" }, "areaStyle": { "color": "rgba(54, 162, 235, 0.1)" } }] } ## 关键点说明: - 数据输入结构 - 使用 data.labels 和 data.values 两组数据来驱动 X 轴时间数据和折线的数值。 - data.labels 与 data.values 的长度应一致,确保一一对应。 - 默认值与容错 - CHART_TITLE 使用 default('Chart'),如果未提供就显示“Chart”。 - Y_AXIS_NAME 使用 default('Y'),SERIES_NAME 使用 default('Series')。 - 数据通过 tojson 安全渲染,避免 JSON 转义问题。 - 单/多线扩展 - 该模板当前设计为单系列折线图;若未来需要多系列,可以在 series 中添加更多对象,并把数据结构调整为多组 data.values(或提供一个 series_list)。 - 显示与样式 - smooth 设置为 true,呈现平滑曲线。 - areaStyle 提供区域填充,颜色为浅蓝色调,便于对比趋势。 - xAxis 的 boundaryGap 设置为 false,便于时间序列数据紧贴边界显示。 - 语言一致性 - 演示中的占位符名为英文,默认文本也尽量使用英文;实际显示文本可按需要由数据源提供英文或翻译后文本。 " 请严格按以下步骤操作: 1. 从检索结果中选择最匹配的图表模板 2. 将用户数据按ECharts标准格式填入占位符 3. 输出完整且可直接使用的ECharts option配置 输出要求: - 必须输出标准的ECharts option JSON格式 - 所有占位符{{}}必须被实际数据替换 - 确保JSON语法完全正确,可直接用于echarts.setOption()- 数据格式严格遵循ECharts规范: * 字符串用双引号包围 * 数组格式正确:["item1","item2"]* 数值不加引号:[100, 200, 300]- 图表标题简洁明了,符合数据内容 输出格式示例: echarts {"title": {"text": "Monthly Sales Data","left": "center"},"tooltip": {"trigger": "axis","axisPointer": {"type": "cross"},"formatter": "{b} : {c}"},"xAxis": {"type": "category","data": ["January","February","March","April","May","June"],"boundaryGap": false },"yAxis": {"type": "value","name": "Sales Amount"},"series": [{"name": "Sales","type": "line","data": [120, 200, 150, 300, 250, 400],"smooth": true,"lineStyle": {"color": "rgba(54, 162, 235, 1)","width": 2 },"itemStyle": {"color": "rgba(54, 162, 235, 0.8)"},"areaStyle": {"color": "rgba(54, 162, 235, 0.1)"}}]} 注意:输出的JSON必须能够直接复制粘贴到ECharts中使用,不允许有任何语法错误。 

这样就可以将我们的数据转换成Echarts的格式了,但是到这里还不行,我们还需要将大模型生成的代码整理成md格式的代码,这里就直接使用代码来处理了,具体代码示例如下:

import json defmain(option=None):# 如果没有传入 option,给一个默认版本(中文文本示例)if option isNone: option ={"title":{"text":"BMI Distribution","left":"center"},"grid":{"left":"8%","right":"4%","bottom":"6%","containLabel":True},"tooltip":{"trigger":"axis","axisPointer":{"type":"line"},"formatter":"{b} : {c}"},"xAxis":{"type":"category","data":["BMI>=24","BMI<=20"]},"yAxis":{"type":"value","name":"Count"},"series":[{"name":"Population","type":"bar","data":[3294,1985],"barWidth":"20%","barMaxWidth":40,"itemStyle":{"color":"rgba(255, 99, 132, 0.8)"}}]}# 如果 option 是字符串,尝试解析为字典ifisinstance(option,str):try: option = json.loads(option)except Exception as e:return{"error":f"Invalid JSON string: {e}"}# 现在 option 应该是一个字典try: option_json = json.dumps(option, indent=2, ensure_ascii=False) output ="```echarts\n"+ option_json +"\n```"return{"result": output}except Exception as e:return{"error":str(e)}

效果展示:

在这里插入图片描述
ps:
有人会问,为什么不用大模型直接生成md格式的Echarts代码?
这里也是可以这么做的,但是我觉得让大模型专心处理一件事情就好了,怕出错!

另外,其它类型的表也是按上面一样的方法,只是把折线图的模板换成其它类型,这一步可以通过AI完成。

2.5 其它环节

主要环节搭建已经完成,其它环节就是对数据的一些处理,无非就是新增一些节点来处理数据,我这里搭建的很匆忙,有很多节点处理得不好,其实有很多步都是可以优化的,总体还是显得有些冗余。

三. 🦁 写在最后

从Excel数据到最终的交互图表,这个项目完整地实践了如何将一个复杂的业务需求,拆解、封装成一个个可控的技术模块,并通过智能体平台进行高效组装。


🦁 其它优质专栏推荐 🦁

🌟《Java核心系列(修炼内功,无上心法)》: 主要是JDK源码的核心讲解,几乎每篇文章都过万字,让你详细掌握每一个知识点!
🌟 《springBoot 源码剥析核心系列》一些场景的Springboot源码剥析以及常用Springboot相关知识点解读

欢迎加入狮子的社区:『Lion-编程进阶之路』,日常收录优质好文

更多文章可持续关注上方🦁的博客,2025咱们顶峰相见!

Read more

2026 GitHub 热门 Python 项目:AI 代理与数据工具精选

2026 GitHub 热门 Python 项目:AI 代理与数据工具精选

2026 年的 Python 生态正在被 AI 代理(AI Agent)和数据工程工具重新定义。本文精选 GitHub 上最具影响力的开源项目,涵盖 AI 代理框架、数据管道工具、向量数据库客户端等关键领域,附带代码示例与架构解析。 一、2026 Python 开源生态全景图 ┌─────────────────────────────────────────────────────────────────────┐ │ 2026 Python 开源热门方向 │ ├──────────────────┬──────────────────┬───────────────────────────────┤ │ AI 代理框架 │ 数据工具链 │ 基础设施与编排 │ ├──────────────────┼──────────────────┼───────────────────────────────┤ │ LangGraph │ Polars │ Dagster │ │ CrewAI │ DuckDB │ Prefect │ │ AutoGen │ ibis-project │

【保姆级教程】Claude Code 进阶指南:用 Everything Claude Code 打造更有“记忆”的 AI 程序员

【保姆级教程】Claude Code 进阶指南:用 Everything Claude Code 打造更有“记忆”的 AI 程序员

目录 第一部分:环境准备与安装 第二部分:插件化极速部署 第一步:安装“Everything”插件核心 第二步:手动注入“大脑规则”(必做!) 第三步:验证安装 & 初始化包管理器 第三部分:实战演练 1. 提出需求:不要直接写代码,先做计划 2. 见证“降维打击”级的规划能力 3. 架构师的“追问”:它竟然懂得抠细节! 4. 交棒时刻:从“设计”到“施工” 5. 关键技巧:如何“一键授权”所有文件? 6. 见证成果 第四部分:结语 在之前的教程中,我们成功在 Windows 11

多模态 AI 应用:图文音视频一体化开发实战教程

多模态 AI 应用:图文音视频一体化开发实战教程

什么是多模态AI 多模态AI是指能够同时处理文本、图像、音频、视频等多种不同类型数据的人工智能系统,它打破了单模态AI的信息壁垒,能更贴近人类理解世界的方式。比如我们日常使用的AI聊天机器人识图功能、视频自动字幕生成工具,都是多模态AI的典型应用。 开发前的核心准备 模型选型建议 模型类型推荐模型适用场景开源轻量模型Qwen-VL-Chat、MiniGPT-4本地部署、快速验证云端API模型GPT-4V、Gemini Pro生产级应用、复杂任务处理专业领域模型CLIP、Whisper图像检索、音频转写等细分场景 环境依赖安装 我们将基于Python生态实现实战项目,需要安装以下核心库: # 基础依赖 pip install torch torchvision transformers pillow # 音频处理依赖 pip install librosa soundfile # 视频处理依赖 pip install opencv-python moviepy # API调用依赖(可选,用于调用云端多模态模型) pip install openai anthropic

2026年主流AI生成PPT工具横评:6款实测,谁是你的效率搭档?

2026年主流AI生成PPT工具横评:6款实测,谁是你的效率搭档?

原创声明:本文为作者原创,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 摘要:AI生成PPT工具正成为职场办公的重要辅助手段。本文基于2026年3月的实测体验,对市面上6款主流AI PPT工具进行客观评测,从核心功能、技术特点、适用场景、费用机制等维度展开分析,涵盖7牛AI PPT、百度文库PPT、Kimi PPT、Gamma、讯飞智文、WPS AI等产品。不吹不黑,只讲实话,帮助读者根据自身需求找到合适的工具。 关键词:AI生成PPT;AI做PPT;工具横评;办公效率;智能办公 一、引言:AI做PPT,如今发展到哪一步了? 凌晨三点还在调整PPT字体间距?因为领导一句“逻辑不对”就要推翻重排版式?这种被PPT支配的日子,很多职场人都经历过。 数据显示,普通职场人年均花费87小时在幻灯片制作上,其中42%的时间耗在排版、