在终端中对 SQLite 数据库和 CSV/JSON 文件提出问题

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.dbsqlite-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-utilsCLI 工具通常直接处理 SQLite 文件,三年前添加了sqlite-utils memory命令可直接对 CSV 和 JSON 文件运行 SQL 查询,通过将数据加载到内存 SQLite 数据库中执行查询。sqlite-utils ask-files命令可处理一个或多个文件(混合 CSV、TSV 和 JSON),每个文件导入到不同表,允许模型构建必要的连接查询。
  • 实现细节:

    • 插件核心约 250 行 Python 代码[https://github.com/simonw/sql...],使用register_commands()插件钩子添加askask-files命令。
    • 添加LLM作为依赖,利用其Python API抽象与模型交互的细节,可使用 LLM 或其插件支持的任何模型,如sqlite-utils install llm-claude-3sqlite-utils ask content.db "count rows in news table" -m claude-3.5-sonnet。插件默认初始使用gpt-4o-mini利用其自动提示缓存,经实际测试发现即使不缓存 4000 令牌提示成本也很低,缓存节省并不重要。
阅读 8
0 条评论