翻译:陈之炎
校对:付文欣
本文约3000字,建议阅读5分钟
十个问题帮你测试出哪个AI助手能写出最佳的SQL代码。
标签:AI助手,SQL
目录背景SQL技能比拼!第一轮:问题解决(LeetCode SQL)第二轮:业务逻辑第三轮:查询优化总结下一步是什么1. 背景欢迎来到ChatGPT vs. Claude vs. Gemini 数据分析系列博文的第一弹。在本系列博文中,我将比较不同AI模型在各种数据科学和分析任务上的表现,旨在帮助数据爱好者和专业人士选择最适合各自需求的AI助手。
我会比较下面的三个具体模型。之所以选择这三个模型,是因为它们都提供了一个易于访问且方便日常任务的聊天机器人界面。我使用了订阅账户进行性能比较(是的,为了写这篇文章,我在上周订阅了Claude和Gemini Advanced)。
ChatGPT 4o:对所有ChatGPT用户开放,但对免费用户有使用限制。
Plus订阅每月20美元。
上下文窗口:128k 标记训练数据更新至2023年10月(来源于官方文档:https://platform.openai.com/docs/models/gpt-4o)
Claude 3.5 Sonnet:对所有Claude.ai用户开放,但免费用户有使用限制。专业计划每月20美元。
上下文窗口:200k 标记训练数据更新至2024年4月(来源于官方文档:https://docs.anthropic.com/en/docs/about-claude/models)
Gemini Advanced:向Google One AI Premium计划订阅者开放,每月20美元(都是一样的价格...)
上下文窗口:100万个标记(详情:https://support.google.com/gemini/answer/14517446)
训练数据更新至2023年11月(来源于官方文档:https://ai.google.dev/gemini-api/docs/models/gemini?hl=zh-cn)
由DALL·E提供图片
2. SQL技能比拼!在本系列文章的第一篇中,我们将重点关注最重要的数据技能之一——SQL。每位数据分析师或科学家都需要SQL,其相对简单的语法使其成为评估LLMs的理想起点。我将评估三者的查询准确率、效率、格式化和可解释性。
评估过程包括十个问题,分为三个类别:
1. 问题解决:前三题来自LeetCode SQL问题。这些问题对于输入和输出表的结构有着清晰的描述,类似于面试问题。
2. 业务逻辑:接下来的四个问题是我原创的问题。我将尝试模拟在工作中如何使用SQL——我将提供实际数据集和业务问题或指标的简短描述。
3. 查询优化:在最后一部分,将挑战用LLMs优化三个SQL查询。
让我们开始吧!
3. 第一轮:问题解决(LeetCode SQL)3.1. 问题1 - LeetCode SQL 262 行程和用户我选择这个问题是因为它在LeetCode上被标记为“困难”,通过率仅为36.5%。它的复杂性在于如何在不同列上两次连接同一表并对多个过滤器进行解释。
GPT-4o:GPT在第一次回答就提供了正确的解决方案,并附有详细的解释。给予满分。
Claude 3.5 Sonnet:Claude提供了准确的代码和详细的解释。给予满分。
Gemini Advanced:Gemini也提供了正确的查询和解释,获得了满分。有趣的是,它在回答的最后给了一个GitHub链接。看来Gemini不仅根据它的“知识”生成问题,还搜索了互联网。然而,它链接的仓库是一个随机的LeetCode练习仓库,不包括这个SQL问题……我认为链接搜索结果可以增加可信度。但如果结果不相关,那么……?
Gemini链接了一个随机的GitHub仓库(图片由作者提供)
3.2. 问题2 - LeetCode SQL 185 部门三大最高薪水这也是一个较“困难”的SQL问题,需要一个窗口函数。
GPT-4o:GPT使用窗口函数提供了正确的解决方案,并附有清晰的解释。给予满分。
Claude 3.5 Sonnet:Claude也提供了类似的正确解决方案,并有全面的解释。给予满分。
Gemini Advanced:Gemini提供了正确的解决方案,获得了满分。这一次,它链接了包含LeetCode SQL解决方案的相关GitHub仓库和具体的LeetCode问题。我很高兴它没有犯同样的错误。
Gemini链接了相关GitHub仓库和正确的LeetCode问题(图片由作者提供)
3.3. 问题3 - LeetCode SQL 1341 电影评分我选择的最后一个问题是“中等”难度问题,但通过率仅为40.1%。它需要合并两次聚合得到的前几个结果。
GPT-4o:解决方案正确且解释得很好,尽管有点冗长和低效。MaxUser和MaxMovie CTEs是多余的。见下文Claude的整洁解决方案。因此,我给它一半的分数。
Claude 3.5 Sonnet:Claude的解决方案清晰高效,解释了两个子查询。它获得满分。
Gemini Advanced:不幸的是,Gemini的解决方案是错误的。过滤器WHERE user_rank=1 OR movie_rank=1抛出了一个语法错误,因为combined_results实际上并没有movie_rank列。有趣的是,它链接到了一个包含正确解决方案的相关GitHub仓库,但它并没有在自己的答案中使用这个解决方案。
(所以即使它搜索了互联网,它也不使用搜索结果中的解决方案?我真困惑…)
第一轮回顾
在这一轮中,Claude 3.5 Sonnet是赢家,它正确回答了所有三个问题,并附有清晰的解释。GPT-4o得分2.5分,由于查询效率低下而失去了0.5分。Gemini Advanced因最后一个问题中的语法错误而只得到2分。它的“来源和相关内容”功能仍然不一致——有时不相关,有时与其答案不一致。
第一轮得分(图片由作者提供)
4. 第二轮:业务逻辑奖励:数据集准备
在这一轮中,我计划上传假数据集到三个AI工具,提供有限的描述,并让它们读取数据集来解释我的业务问题并编写SQL查询。但首先,需要生成合成数据。
我也将使用LLMs来完成这项任务。
生成合成数据集的提示(图片由作者提供)
ChatGPT-4o:它生成了四个带有下载链接的CSV文件。令我印象深刻的是,GPT不仅创建了我指定的列,还添加了非常符合商业背景的额外列。它使用faker包生成了看起来非常真实的假数据。
GPT生成的合成数据集。别担心,所有的支付信息都是假的。(图片由作者提供)
ChatGPT利用faker包生成合成数据集(图片由作者提供)
Claude 3.5 Sonnet:Claude提供了使用np.random方法生成合成数据集的Python代码。然而,它不能直接运行代码提供的CSV下载链接,它也没有使用faker包,所以生成的数据感觉不太真实。
Gemini Advanced:Gemini在这任务中表现不佳。它生成了四个我可以打开的Google电子表格的表格,但这些只是表格描述的表格。在后续澄清后,它创建了只有10行的假表格,并拒绝提供更大的数据集。
Gemini创建了表格描述的表格(图片由作者提供)
加载数据集
有了这四个合成数据集,我尝试将它们上传到三个AI工具(在新的对话线程中)。总文件大小为920 KB,数据集大小从500到5000行不等。
GPT生成的文件(图片由作者提供)
ChatGPT-4o:ChatGPT成功加载了四个数据集,并为每个表格提供了预览。用户界面允许展开表格以便更仔细地检查。它的文件上传大小限制为每个文件512MB,一次对话中最多包含10个文件。
Claude 3.5 Sonnet:当我尝试上传四个数据集时,Claude返回了一个错误:“对话超出长度限制的119%。”这令人惊讶,因为Claude 3.5 Sonnet的上下文窗口比ChatGPT-4o高。尽管他们声明的文件上传限制为“每个文件30MB(最多5个文件)”,实际限制似乎更低,可能是由于需求量高的原因。最终,我不得不削减超过一半的行数,将总文件大小减少到320 KB,它才工作。
Claude关于长度限制的错误消息(图片由作者提供)
Gemini Advanced:Gemini回应说,“我无法协助你,因为我只是一个语言模型,没有能力理解和响应。”
因此,我不得不为后续问题提供表格描述,而不是上传真实的数据集。
Gemini关于文件上传的错误消息(图片由作者提供)
4.1. 问题4:月度销售计算提示:请帮我写一个SQL查询,计算美国用户的每月总订单金额。
GPT-4o:它提供了正确的答案,并根据对数据集的理解,主动添加了订单状态过滤器order_status = 'Completed'。我给它打满分和附加0.5额外分数。
Claude 3.5 Sonnet:它也提供了正确的查询。对于“美国用户”过滤器,它编写了country = 'United States' OR country = 'US'。我故意将一些“United States”的实例替换为“US”,以模仿现实世界中的数据不一致性。我很高兴看到Claude注意到了这个细节。它也得到满分和0.5的额外分数。
Gemini Advanced:Gemini生成了正确的查询,获得了满分。
以上为 ChatGPT Claude和Gemini 数据分析大比拼(第一部分)(上)全部内容,下篇为分享 ChatGPT Claude和Gemini 数据分析大比拼(第一部分)(下),谢谢阅读。
原文标题:
ChatGPT vs. Claude vs. Gemini for Data Analysis (Part 1)
原文链接:
https://towardsdatascience.com/chatgpt-vs-claude-vs-gemini-for-data-analysis-part-1-821086810318