2024 年 11 月 25 日:
为sqlite-utils CLI 工具构建新插件sqlite-utils-ask,可直接对计算机上的 SQLite 数据库及 CSV/JSON 文件问人类语言问题。
- 安装:
sqlite-utils install sqlite-utils-ask
,可从OPENAI_API_KEY
环境变量获取 API 密钥,或安装LLM并使用llm keys set openai在配置文件中存储密钥。 - 使用示例:
curl -O https://datasette.io/content.db
,sqlite-utils ask content.db "how many sqlite-utils pypi downloads in 2024?"
,若成功会输出类似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
可查看使用的确切提示。 - 可通过
-e/--examples
选项为模式中的每个文本列添加 5 个常见值(平均长度小于 32 字符),有时有助于获得更好结果。
- 安装:
对 CSV 和 JSON 数据提问:
sqlite-utils
CLI 工具通常直接处理 SQLite 文件,三年前添加了sqlite-utils memory命令可直接对 CSV 和 JSON 文件运行 SQL 查询,通过将数据加载到内存 SQLite 数据库中执行查询。sqlite-utils ask-files
命令可处理一个或多个文件(混合 CSV、TSV 和 JSON),每个文件导入到不同表,允许模型构建必要的连接查询。
实现细节:
- 插件核心约 250 行 Python 代码[https://github.com/simonw/sql...],使用register_commands()插件钩子添加
ask
和ask-files
命令。 - 添加LLM作为依赖,利用其Python API抽象与模型交互的细节,可使用 LLM 或其插件支持的任何模型,如
sqlite-utils install llm-claude-3
,sqlite-utils ask content.db "count rows in news table" -m claude-3.5-sonnet
。插件默认初始使用gpt-4o-mini利用其自动提示缓存,经实际测试发现即使不缓存 4000 令牌提示成本也很低,缓存节省并不重要。
- 插件核心约 250 行 Python 代码[https://github.com/simonw/sql...],使用register_commands()插件钩子添加
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。