大模型和Agent用两行代码实现Excel/CSV文件数据分析

liftword2周前 (05-08)技术文章11

经常跟数据打交道的“表哥”、“表妹”,经常看报表的各位老板,应该非常熟悉Excel和CSV文件,通常我们想要分析数据中的信息,会使用各种函数、工具来进行探索和评估,最终输出分析报告形成数据支撑。

当下还是有非常多的企业招聘数据产品、数据分析的岗位,在大模型时代,如何用大模型的思路助力数据研发?这篇文章我们利用大模型、Agent以及LangChain框架来实现与CSV文件的直接“对话”,并且非常cool的一点,实现这一切仅仅需要两行代码。

Excel可以导出成CSV格式,我们此处仅考虑CSV文件

1. 准备工作

  • Python 3.10+ 的开发环境
  • 大模型的API Key,任一可调用API的大模型(OpenAI / Minimax / ...)
  • 一些csv文件(本文中我们选取了两类csv文件,一类是FAQ型,一类是数据记录型)
  • langchain
  • langchain_experimental


2. 编码

我们所用到的方法是langchain中的create_csv_agent,它可以通过agent的方式实现与csv文件的对话。

agent = create_csv_agent(
    OpenAI(temperature=0),
    "data.csv",
    verbose=True,
)

answer = agent.run(user_input)

这里几个参数介绍下

  • 第一个参数是你调用的大模型,你可以指定大模型的temperature, 模型版本等参数
  • 第二个参数是csv文件目录,可以是一个文件,也可以与多个csv文件交互(["a.csv", "b.csv"]
  • 第三个参数verbose,用于在log中展示大模型在其中都做了哪些操作
  • 还有未设置的第四个参数agent_type,可以设置为AgentType.ZERO_SHOT_REACT_DESCRIPTIONAgentType.OPENAI_FUNCTIONS,当然你也可以像我一样默认即可


执行的话也仅需一行代码,
agent.run(user_input),其中user_input是你输入的问句。

3. 运行效果

在看运行效果之前,我们看一下两类csv文件

3.1 FAQ类

FAQ类文件主要包含常见的问答对数据,在企业售前、售后等客服等场景中经常会碰到,此处我们选择一个网站的业务助手。

针对以上文件,我们看下提问的效果

可以看到理解问题并给出了正确答案,其中的原理就是大模型agent对任务的拆解,以及对拆解后的子任务的思考(Thought)、行动(Action)以及输入(Input)得到最终答案(Final Answer)。

大模型agent的推理过程如下:

3.2 数据记录类

这类数据通常来自于生产系统、关系型数据库,记录日常行为操作等信息,此处我们选择某省水利测站对时段降水量的记录数据。

针对以上文件,看下提问的回答效果。

可以看到效果还不错,但是实际很多问题回答的并不好,原因在于我们用的是通用大模型,并且没有做任何的优化,但是基于这个思路,可以给到我们很多启发,尤其是大模型如何对用户的问题,进行思考理解、推理拆解,并调用Pandas DataFrame agent和Python agent的过程。

以下是针对每个问题,大模型agent的推理过程。

有兴趣的可以放大图片查看,或者联系作者进一步交流沟通,后续针对agent会专门写一篇文章。

相关文章

使用python把csv汇总成excel(python怎么将csv文件中的列存入列表)

最近领导安排让我每周定时把grafana导出的csv文件进行统计汇总工作,需要处理的csv文件还是蛮多的,况且还要每周重复汇总处理。干脆写个脚本,每周执行一遍脚本,既方便还不会出错。一、需求分析1....

python爬虫25 | 爬取的数据怎么保存?CSV了解一下

大家好我是小帅b是一个练习时长两年半的练习生喜欢唱!跳!rap!篮球!敲代码!装逼!不好意思我又走错片场了接下来的几篇文章小帅b将告诉你如何将你爬取到的数据保存下来有文本文件、redis、数据库(My...

将MySQL查询结果输出为CSV格式的方法

技术背景在数据库管理和数据分析中,我们常常需要将MySQL查询结果以CSV格式输出,方便在其他工具(如Excel、Python数据分析库)中进行进一步处理。然而,由于CSV格式有其特定的规范,如字段分...

Django 如何使用视图动态输出 CSV 以及 PDF

Django 如何使用视图动态输出 CSV 以及 PDF这一篇我们需要用到 python 的 csv 和 reportLab 库,通过django视图来定义输出我们需要的 csv 或者 pdf 文件。...

Python版的迷你程序——json文件转换为csv

浅话C语言是过去几十年软件和硬件两个阵营之间,签署的最坚实的契约。硬件为C语言的语义提供了最能发挥其性能的基础构件,而软件虽然搞了很多的圆环套圆环般的层次,但最终都以C语言作为最后的沉淀收尾。----...

Python CSV文件的读写和处理(csv python 读取)

一、介绍CSV文件的概念和结构CSV(Comma-Separated Values,逗号分隔值)是一种常见的文本文件格式,用于存储表格数据。CSV 文件以纯文本形式存储数据,使用逗号作为字段之间的分隔...