Skip to content

搞英语 → 看世界

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

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
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

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme