Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
  • Product Hunt
  • Visual Capitalist
  • Elon Musk
Menu

在终端中询问有关 SQLite 数据库和 CSV/JSON 文件的问题

Posted on 2024-11-25

sqlite-utils-ask.png

我为sqlite-utils CLI 工具构建了一个新插件,可让您直接向计算机上的 SQLite 数据库和 CSV/JSON 文件提出人类语言问题。

它称为sqlite-utils-ask 。安装方法如下:

 sqlite-utils 安装 sqlite-utils-ask

它从OPENAI_API_KEY环境变量中获取 API 密钥,或者您可以安装 LLM并使用llm keys set openai将密钥存储在配置文件中。

然后你可以像这样使用它:

卷曲-O https://datasette.io/content.db  sqlite-utils 问 content.db “ 2024 年有多少 sqlite-utils pypi 下载量? ”

此命令将提取所提供的数据库文件的 SQL 模式,将其与您的问题一起通过 LLM 发送,返回 SQL 查询并尝试运行它以得出结果。

如果一切顺利,它会给出如下答案:

 SELECT SUM(downloads) FROM stats WHERE package = 'sqlite-utils' AND date >= '2024-01-01' AND date < '2025-01-01'; [ { "SUM(downloads)": 4300221 } ]

如果 SQL 查询无法执行(由于某种语法错误),它会将该错误传递回模型进行更正,并在放弃之前重试最多 3 次。

添加-v/--verbose以查看其使用的确切提示:

 System prompt: You will be given a SQLite schema followed by a question. Generate a single SQL query to answer that question. Return that query in a ```sql ... ``` fenced code block. Example: How many repos are there? Answer: ```sql select count(*) from repos ``` Prompt: ... CREATE TABLE [stats] ( [package] TEXT, [date] TEXT, [downloads] INTEGER, PRIMARY KEY ([package], [date]) ); ... how many sqlite-utils pypi downloads in 2024?

我已将上面的内容截断为仅相关表 – 它实际上包含该数据库中每个表的完整架构。

默认情况下,该工具仅将该数据库架构和您的问题发送给法学硕士。如果添加-e/--examples选项,它还将包含该架构中每个文本列的五个常用值,平均长度小于 32 个字符。这有时可以帮助获得更好的结果,例如,为state列发送值“CA”、“FL”和“TX”可以提示模型应该在查询中使用状态缩写而不是全名。

询问 CSV 和 JSON 数据的问题

核心sqlite-utils CLI 通常直接针对 SQLite 文件运行,但三年前我添加了直接使用sqlite-utils 内存命令针对 CSV 和 JSON 文件运行 SQL 查询的功能。这是通过在执行 SQL 查询之前将该数据加载到内存 SQLite 数据库中来实现的。

我决定重用该机制来直接针对 CSV 和 JSON 数据启用 LLM 提示。

sqlite-utils ask-files命令如下所示:

 sqlite-utils Ask-files transactions.csv “按年份列出的总销售额”

此命令接受一个或多个文件,您可以提供 CSV、TSV 和 JSON 的组合。每个提供的文件都将导入到不同的表中,从而允许模型在必要时构建连接查询。

实施说明

该插件的核心由大约250 行 Python 代码实现,使用sqlite-utils register_commands()插件挂钩来添加ask和ask-files命令。

它将LLM添加为依赖项,并利用 LLM 的Python API来抽象与模型对话的细节。这意味着sqlite-utils-ask可以使用 LLM 或其插件支持的任何模型 – 如果您想通过 Claude 3.5 Sonnet 运行提示,您可以这样做:

 sqlite-utils 安装 llm-claude-3  sqlite-utils 询问 content.db “统计新闻表中的行数” -m claude-3.5-sonnet

该插件最初默认为gpt-4o-mini,以利用该模型的自动提示缓存:如果您针对同一模式运行多个问题,您最终将多次发送相同的冗长提示前缀,并且 OpenAI 的提示缓存应自动启动并为这些输入代币提供 50% 的折扣。

然后我运行了实际数字,发现gpt-4o-mini足够便宜,即使不缓存 4,000 个令牌提示(这是一个相当大的 SQL 模式),成本也应该不到十分之一美分。所以这些节省下来的缓存根本没有任何价值!

标签:插件、项目、 sqlite 、 ai 、 sqlite-utils 、生成式 ai 、 llms 、 ai 辅助编程、 llm

原文: https://simonwillison.net/2024/Nov/25/ask-questions-of-sqlite/#atom-everything

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abdisalan Mohamud
  • Addy Osmani
  • Aeon
  • Ahoy There! on THT's den
  • Alec Muffett
  • Andreas
  • anhvn
  • Ankaph
  • Annie
  • Armin Ronacher
  • Ask Hacker News Weekly
  • Astro Blog
  • Austin White
  • Backlinko
  • Better Dev Link
  • Building Pika Out Loud
  • Caleb Hearth
  • Cédric Aellen
  • Chip Huyen
  • Colossal
  • Cooltools by KK
  • CoRecursive
  • Craig Mod
  • Curt Merrill
  • Dan Abramov's Overreacted Blog RSS Feed
  • Daniel Lemire
  • Daniel Stenberg
  • Daring Fireball
  • David H
  • David Heinemeier Hansson
  • Dayu | 大宇
  • Ed Zitron
  • Ersei
  • Ersei 'n Stuff
  • Evan Martin
  • First Page Sage
  • Founder Weekly
  • FuzzyGrim
  • Gabriel
  • Good Enough
  • Gregory Hammond
  • Habib
  • How They Make Money
  • I Love Charts
  • Ian Betteridge
  • Ivaylo Durmonski
  • Jason Kottke
  • Jason Kratz
  • Jeff Perry
  • John D. Cook
  • Jonas Hietala
  • Jonathan Snook
  • jwb
  • Kevin Kelly
  • Kevin Yank
  • Kirsty
  • Kush
  • Loris Cro
  • Maarten van Gompel
  • Manas J. Saloi
  • Mandy Brown
  • Matt Fantinel
  • Matt Mullenweg
  • Mere Civilian
  • Ness Labs
  • News Letter
  • Nicholas Carlini
  • Nicolas F. R. A. Prado
  • Niko
  • Nir Eyal
  • Noah Smith
  • Pedro Lopes
  • Positive News
  • Predrag Gruevski
  • Rachel Kroll
  • Recomendo by KK
  • rendezvous with cassidoo
  • Rest of World
  • Ruben Schade
  • Scott Galloway
  • Sébastien Etter
  • SEMrush Blog
  • Seth Godin
  • Shariq Raza Qadri
  • Simon Willison
  • Six Colors
  • Slashdot
  • Spectre Collie
  • Spyglass
  • storytelling with data
  • Streamline Blog
  • Tableau Blog
  • tekphloyd
  • The Alchemy of Money
  • The Independent Variable
  • The Marginalian
  • thriftmac
  • Tim Bray
  • Tim Ferriss
  • Tim Kellogg
  • TLDR
  • Topslakr
  • Track Awesome list
  • Trump
  • Victor Kropp
  • Vincent Ritter
  • Vox
  • Westenberg
  • Xe Iaso
  • xkcd
  • Yuri Cunha
  • Zarar
  • 未分类
  • 英文媒体
  • 英文推特
  • 英文独立博客
  • 读写错误
©2026 搞英语 → 看世界 | Design: Newspaperly WordPress Theme