LLM 构建Data Multi-Agents 赋能数据分析平台的实践之④:数据分析之三(数据展示)

概述
在先前探讨的文章中,我们构建了一个全面的数据测试体系,该体系遵循“数据获取—数据治理—数据分析”的流程。如何高效地构建数据可视化看板,以直观展现分析结果,正逐渐成为利用新兴技术提升效能的关键领域。伴随业务拓展、数据量增长与信息系统不断升级,对数据分析成果呈现的灵活性需求日益增强。这预示着能够迅速且灵活创建数据看板的能力,将成为未来技术赋能的核心趋势之一。

本实践研究旨在深入探讨利用大型语言模型(LLM)来构建Data Multi-Agents框架下数据展示与看板的潜力及其可能面临的挑战。通过LLM的智能分析能力,我们期望能自动识别关键数据指标,智能设计图表类型,并动态调整数据看板布局,以适应不同用户的需求和场景。然而,这一过程中也存在若干难题,如数据隐私保护、模型训练所需大量高质量数据集的获取,以及如何确保看板信息的准确性和实时性等,这些都是需要我们重点关注和解决的问题。

通过本次实践,我们将评估LLM在自动化数据看板构建中的适用性,探索其在提升数据可读性与洞察力方面的潜在优势,同时也会审视技术实施中可能遇到的实际障碍,以期为未来的数据可视化工具开发提供有价值的参考。
在这里插入图片描述

Data Agent构建
本次实践工程采用LLM+AutoGen框架,借助AutoGen框架代码生成和执行的能力构建数据展示的原生代码,并且使用Streamlit、PyEcharts、Bypython等框架来展示数据情况:

1. 代码执行器的构建

目标:

创建一个可以安全地执行Python代码的环境,用于动态生成数据可视化。

实现步骤:
  • 容器化: 使用Docker容器隔离执行环境,确保主机系统安全。
  • 权限控制: 限制代码执行器对系统的访问权限,防止恶意代码损害系统。
  • 错误处理: 捕获并优雅地处理执行时可能发生的任何异常。
  • 资源管理: 监控和限制CPU、内存使用,避免资源耗尽。
技术栈:
  • Docker
  • Python虚拟环境
  • Error handling in Python

2. 代码编写器的构建

目标:

设计一个用户友好的界面,允许非技术用户通过自然语言描述需求,自动生成代码。

实现步骤:
  • 自然语言解析: 利用LLM解析用户的自然语言指令,转换成可执行的代码片段。
  • 代码模板库: 建立常用数据处理和可视化的代码模板,减少从头生成代码的需求。
  • 用户反馈循环: 提供机制让用户验证和修改自动生成的代码,增强准确性。
技术栈:
  • AutoGen API
  • Streamlit for UI
  • LLM for NLP processing

3. 代码迭代策略及提示词的构建

目标:

优化代码生成过程,提高代码质量和效率。

实现步骤:
  • 迭代学习: 记录并分析用户修改的代码,让LLM从这些修改中学习,改进未来生成的代码。
  • 提示词优化: 创建和维护一套高质量的提示词库,帮助引导LLM生成更准确的代码。
  • 性能监控: 定期评估代码生成和执行的性能,调整算法和参数以提升效率。
技术栈:
  • Machine Learning for iterative improvement
  • Prompt engineering
  • Performance monitoring tools

展示数据情况

在所有组件就绪后,利用Streamlit、PyEcharts、ByPython等框架创建交互式数据看板:

  • Streamlit: 构建前端界面,集成所有功能。
  • PyEcharts: 生成复杂的动态图表。
  • ByPython: 实时代码执行和结果显示。
from autogen import GroupChat
from autogen import GroupChatManager
from autogen import ConversableAgent  # 从autogen模块导入ConversableAgent类
from autogen.coding import LocalCommandLineCodeExecutor
from autogen import UserProxyAgent
import tempfile
from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent
from autogen.agentchat.contrib.retrieve_assistant_agent import RetrieveAssistantAgent
import chromadb
import autogenconfig_deepseek= {"config_list": [{"model": "xxx","base_url":"xxx","api_key":"xxx"}],"cache_seed": None}executor = LocalCommandLineCodeExecutor(timeout=10,  # 每次代码执行的超时时间,单位为秒work_dir='/content/pig_data',  # 使用临时目录来存储代码文件
)assistant = autogen.AssistantAgent(name="assistant",system_message="You are a helpful assistant.",llm_config=config_deepseek,)
# 创建一个配置了代码执行器的代理
code_executor_agent = ConversableAgent("code_executor_agent",llm_config=False,  # 关闭此代理的LLM功能code_execution_config={"last_n_messages": 5,"work_dir": "/content/pig_data","use_docker": False,},  # 使用本地命令行代码执行器human_input_mode="NEVER",  # 此代理始终需要人类输入,以确保安全is_termination_msg=lambda msg: "TERMINATE" in msg["content"].lower())# 代码编写代理的系统消息是指导LLM如何使用代码执行代理中的代码执行器
code_writer_system_message = """You are a helpful AI assistant.Solve tasks using your coding and language skills.In the following cases, suggest python code (in a python coding block) or shell script (in a sh coding block) for the user to execute.1. When you need to collect info, use the code to output the info you need, for example, browse or search the web, download/read a file, print the content of a webpage or a file, get the current date/time, check the operating system. After sufficient info is printed and the task is ready to be solved based on your language skill, you can solve the task by yourself.2. When you need to perform some task with code, use the code to perform the task and output the result. Finish the task smartly.Solve the task step by step if you need to. If a plan is not provided, explain your plan first. Be clear which step uses code, and which step uses your language skill.When using code, you must indicate the script type in the code block. The user cannot provide any other feedback or perform any other action beyond executing the code you suggest. The user can't modify your code. So do not suggest incomplete code which requires users to modify. Don't use a code block if it's not intended to be executed by the user.If you want the user to save the code in a file before executing it, put # filename: <filename> inside the code block as the first line. Don't include multiple code blocks in one response. Do not ask users to copy and paste the result. Instead, use 'print' function for the output when relevant. Check the execution result returned by the user.If the result indicates there is an error, fix the error and output the code again. Suggest the full code instead of partial code or code changes. If the error can't be fixed or if the task is not solved even after the code is executed successfully, analyze the problem, revisit your assumption, collect additional info you need, and think of a different approach to try.When you find an answer, verify the answer carefully. Include verifiable evidence in your response if possible.Reply 'TERMINATE' in the end when everything is done."""# 创建一个名为code_writer_agent的代码编写代理,配置系统消息并关闭代码执行功能
code_writer_agent = ConversableAgent("code_writer_agent",system_message=code_writer_system_message,llm_config=config_deepseek,  # 使用GPT-4模型code_execution_config={"last_n_messages": 5,"work_dir": "/content/pig_data","use_docker": False,},  # 关闭此代理的代码执行功能)

数据多智能体协作:数据展示测试

prompt = """我们想要创建一个数据看板,用于展示和分析广东省生猪市场的价格动态。具体而言,我们需要关注以下几类数据:
全国母猪市场价格数据:Minimum price per week for weeded sows.csv ;淘汰母猪最低价格(周度).xlsx
全国仔猪市场价格数据:Piglet weekly out price.csv;仔猪出栏价格周度.xlsx
全国育肥猪价格数据:Weekly price of commercial pigs.csv;商品猪周度出栏价格.xlsx
一、数据获取与清洗:
1、获取广东省生猪市场的实时数据,包括育肥猪、仔猪和母猪的价格信息。
2、清洗数据,确保其准确无误且格式一致。
-计算价格指数:
1、基于获取的实时价格,计算育肥猪、仔猪和母猪的价格指数。价格指数可以通过标准化当前价格与基期价格的比例来计算
2、计算过程中,请确保考虑到数据的时间序列性质,选择最早日期作为基期。
二、数据保存:
1、将计算出的价格指数以及对应的实时价格数据保存到一个CSV文件中。CSV文件应包含日期、育肥猪价格指数、育肥猪实时价格、仔猪价格指数、仔猪实时价格、母猪价格指数、母猪实时价格等字段。
三、数据可视化:
1、使用Streamlit 库、Plotly 库:创建一个综合看板,利用Streamlit 库、Plotly 库的图表功能,展示各类猪只的价格指数与实时价格变化。保存数据看板为py文件。确保每个包含Streamlit代码的Python文件都有一个名为run的函数来运行Streamlit应用。
2、看板布局:顶部:广东省生猪市场总览,显示最新日期的平均价格指数。中部:第二个模块:两个独立的折线图,母猪价格指数折线图,母猪实时价格趋势图第三个模块:两个独立的柱状图,仔猪价格指数折线图,仔猪实时价格趋势图第四个模块:两个独立的折线图,育肥猪价格指数折线图,育肥猪实时价格趋势图第五个模块:两个独立的双折线图,母猪与仔猪价格指数对比折线图,母猪与育肥猪价格指数对比折线图底部:数据表格,列出具体日期的价格指数与实时价格,便于查阅。
3、图表样式:折线图:清晰标注日期轴,区分价格指数与实时价格的两条折线,使用不同的颜色和标记点。颜色方案:采用温和而对比明显的颜色组合,如深蓝与亮橙,便于区分不同类别。图例与标题:确保每个图表都有清晰的标题和图例,标注价格指数与实时价格的含义。
4、交互性与美观性交互设计:允许用户通过下拉菜单或滑块选择不同的日期范围,动态更新图表与表格中的数据。响应式设计:确保看板在不同设备上(桌面、平板、手机)都能良好显示,适应屏幕尺寸自动调整布局。视觉美观:整体设计简洁明快,避免过多装饰,确保数据呈现为主。"""

执行任务:

groupchat_result = code_writer_agent.initiate_chat(code_excute_agent,message=prompt,
)

结果展示:
运行过程
在这里插入图片描述
数据看板界面

WeChat_20240715175508

总结
1、AutoGen作为一个大模型应用开源开发框架,支持非openAI大模型力度不够,在测试过程中,面对复杂任务容易失灵;
2、当前的国产大模型面对多文件、多流程、复杂的任务很难快速生成准确无误的代码,导致迭代次数增加;从而极大的推高使用成本;
3、AutoGen经过更新虽然原生支持RAG应用,但是RAG应用效果远不如Langchain、Llamaindex等框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/47658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《驾驭AI浪潮:伦理挑战与应对策略》

AI发展下的伦理挑战&#xff0c;应当如何应对&#xff1f; 人工智能飞速发展的同时&#xff0c;也逐渐暴露出侵犯数据隐私、制造“信息茧房”等种种伦理风险。随着AI技术在社会各个领域的广泛应用&#xff0c;关于AI伦理和隐私保护问题日趋凸显。尽管国外已出台系列法规来规范…

YOLOv7网络结构学习

YOLOV7详细解读&#xff08;一&#xff09;网络架构解读 YOLOV7学习记录之原理代码介绍 【Make YOLO Great Again】YOLOv1-v7全系列大解析&#xff08;Backbone篇&#xff09; yolov7 图解 深入浅出 Yolo 系列之 Yolov7 基础网络结构详解 我觉得Head、Neck和Head的划分不太…

从产品手册用户心理学分析到程序可用性与易用性的重要区别

注&#xff1a;机翻&#xff0c;未校对。 Designing for People Who Have Better Things To Do With Their Lives 为那些生活中有更重要事情要做的人设计 When you design user interfaces, it’s a good idea to keep two principles in mind: 在设计用户界面时&#xff0c;…

三大ip代理服务商PK,IPFoxy黑马逆袭成首选?

最近亚马逊的Prime Day ,小编我呀忙得不可开交。因为小编负责的店铺数量多且需要稳定的长期连接&#xff0c;我用某一海外ip代理竟然不稳定&#xff0c;这还是号称老牌的ip代理服务商&#xff0c;因为它的漏洞&#xff0c;让我加班了好久处理工作上的问题。 吃一堑&#xff0c…

RPA鼠标按键使用技巧

RPA鼠标按键使用技巧 Mouse.MouseAuto.Action命令出错&#xff0c;调用的目标发生了异常&#xff0c;Exception in Mouse.Action元素不可用怎么解决 出现问题 1.想要实现的效果鼠标移动到录屏工具的小球上2.点击开始按钮开始录屏现象&#xff0c;鼠标没有移动痕迹&#xff0c…

【C++】C++ 职工信息管理系统(源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

C++系列-Vector模拟实现(补充)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 迭代器失效 这篇文章是基于上一篇的Vector的模拟实现的补充知识点&#xff0c;首先我们需要重点关注的便是迭代器失效的问题。 void test_vector3(){std::vector<int> v…

【C++】类与对象的学习(中)

目录 一、默认成员函数&#xff1a; 二、构造函数&#xff1a; 1、定义&#xff1a; 2、理解&#xff1a; 三、析构函数&#xff1a; 1、定义&#xff1a; 2、理解&#xff1a; 四、拷贝构造&#xff1a; 1、定义&#xff1a; 2、理解&#xff1a; 五、运算符的重载&…

抖音视频素材是哪里找的?热门的抖音素材网站分享

抖音视频创作高手们&#xff0c;你们是否在寻找下一个爆款视频的完美素材&#xff1f;今天&#xff0c;我将为你们介绍几个优质的视频素材网站&#xff0c;确保你们能在素材的海洋中轻松找到那最耀眼的“珍珠”&#xff01; 蛙学网 首先&#xff0c;我们要推荐的是蛙学网。这个…

Go语言并发编程-同步和锁

同步和锁 概述 同步是并发编程的基本要素之一&#xff0c;我们通过channel可以完成多个goroutine间数据和信号的同步。 除了channel外&#xff0c;我们还可以使用go的官方同步包sync&#xff0c;sync/atomic 完成一些基础的同步功能。主要包含同步数据、锁、原子操作等。 一…

13. C++继承 | 详解 | 虚拟继承及底层实现

目录 1.定义 1.1继承的概念 1.2 继承的定义 2. 对象赋值转换 3. 继承中的作用域 a. 隐藏/重定义 (Hiding/Redefinition) b. 重载 (Overloading) c. 重写/覆盖 (Overriding) d. 编译报错 (Compilation Error) 4. 派生类的默认成员函数 构造 拷贝构造 运算符重载 析…

win11将bat文件固定到“开始“屏幕

一、为bat文件创建快捷方式 (假设bat文件的全名为运行脚本.bat) 右键bat文件&#xff0c;点击显示更多选项 右键菜单选择发送到(N)-桌面快捷方式 二、获取快捷方式的路径 返回桌面&#xff0c;选中创建好的快捷方式&#xff0c;按AltEnter&#xff0c;切换到安全选项卡 鼠…

JCR一区级 | Matlab实现PSO-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现PSO-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现PSO-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现PSO-Transformer-LSTM多变量回归预测&#xff0c;粒子群优化Transformer结合LST…

Nginx的核心功能

1. Nginx的核心功能 1.1 nginx反向代理功能 正向代理 代理的为客户端&#xff0c;对于服务器不知道真实客户的信息。例如&#xff1a;翻墙软件 反向代理服务器 代理的为服务器端。对于客户来说不知道服务器的信息。例如&#xff1a;nginx 项目部署图 web项目部署的虚拟机和Ng…

鸿蒙语言基础类库:【@system.notification (通知消息)】

通知消息 说明&#xff1a; 从API Version 7 开始&#xff0c;该接口不再维护&#xff0c;推荐使用新接口[ohos.notification]。本模块首批接口从API version 3开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import notification fro…

httpx 的使用

httpx 是一个可以支持 HTTP/2.0 的库 还有一个是&#xff1a; hyper 库 这里有一个由HTTP/2.0的网站&#xff1a; https://spa16.scrape.center/ 使用 requests 库 进行爬取 import requests url https://spa16.scrape.center/ response requests.get(url) print(response…

达梦数据库的系统视图v$arch_file

达梦数据库的系统视图v$arch_file 在达梦数据库中&#xff0c;V$ARCH_FILE 是一个动态性能视图&#xff0c;用于显示当前数据库的归档日志文件信息。这个视图可以帮助数据库管理员监控和管理归档日志文件&#xff0c;确保数据库的备份和恢复过程顺利进行。 查询本地归档日志信…

Unity UGUI Image Maskable

在Unity的UGUI系统中&#xff0c;Maskable属性用于控制UI元素是否受到父级遮罩组件的影响。以下是关于这个属性的详细说明和如何使用&#xff1a; Maskable属性 Maskable属性&#xff1a; 当你在GameObject上添加一个Image组件&#xff08;比如UI面板或按钮&#xff09;时&…

ctfshow-web入门-php特性(web127-web131)

目录 1、web127 2、web128 3、web129 4、web130 5、web131 1、web127 代码审计&#xff1a; $ctf_show md5($flag); 将 $flag 变量进行 MD5 哈希运算&#xff0c;并将结果赋值给 $ctf_show。 $url $_SERVER[QUERY_STRING]; 获取当前请求的查询字符串&#xff08;que…

开源防病毒工具--ClamAV

产品文档&#xff1a;简介 - ClamAV 文档 开源地址&#xff1a;Cisco-Talos/clamav&#xff1a;ClamAV - 文档在这里&#xff1a;https://docs.clamav.net (github.com) 一、引言 ClamAV&#xff08;Clam AntiVirus&#xff09;是一个开源的防病毒工具&#xff0c;广泛应用…