SQLite-Utils-Ask: Permite a los usuarios consultar bases de datos SQLite y archivos CSV/JSON para obtener datos de consulta.
Últimos recursos sobre IAPublicado hace 9 meses Círculo de intercambio de inteligencia artificial 1.9K 00
Introducción general
SQLite-Utils-Ask es una potente herramienta diseñada para ayudar a los usuarios a realizar consultas de datos de tipo pregunta-respuesta en bases de datos SQLite y archivos CSV/JSON con la ayuda de LLM (Large Language Model). La herramienta es capaz de generar automáticamente consultas SQL apropiadas basadas en las preguntas del usuario y ejecutar las consultas para devolver los resultados, simplificando enormemente el proceso de análisis y procesamiento de datos.
Lista de funciones
- preguntas en lenguaje naturalPreguntas: formule preguntas sobre los datos de la base de datos mediante lenguaje natural, y la herramienta generará automáticamente las consultas SQL correspondientes.
- Compatibilidad con bases de datos: Admite la base de datos SQLite para facilitar la gestión y consulta de datos.
- Tratamiento de archivos CSV/JSON: Admite la consulta directa de archivos CSV, TSV o JSON.
- Búsqueda multidocumento: Admite consultas federadas para varios documentos.
- herramienta de línea de comandos: Proporciona una interfaz de línea de comandos fácil de usar que permite a los usuarios ejecutar consultas rápidamente.
- Soporte para plug-ins: Puede integrarse con herramientas como sqlite-utils para ampliar la funcionalidad y los escenarios de aplicación.
Preguntas sobre bases de datos SQLite y archivos CSV/JSON en Terminal
Estoy trabajando en mi herramienta sqlite-utils CLI para elConstruí un nuevo plugin que te permite hacer preguntas en lenguaje humano directamente a bases de datos SQLite y archivos CSV/JSON en tu computadora.
Su nombre es sqlite-utils-ask. Instálelo del siguiente modo:
sqlite-utils 安装 sqlite-utils-ask
Obtiene la clave API de la variable de entornoOPENAI_API_KEY
o puede instalar LLM y utilizar la funciónteclas llm set openaiAlmacena la clave en un archivo de configuración.
Entonces puedes usarlo así:
curl -O https://datasette.io/content.db
sqlite-utils 询问 content.db “ 2024 年 sqlite-utils pypi 下载量是多少?”
Este comando extraerá el esquema SQL del archivo de base de datos suministrado, lo enviará a través de LLM con su pregunta, devolverá la consulta SQL e intentará ejecutarla para producir resultados.
Si todo va bien, dará la siguiente respuesta:
SELECT SUM(downloads)
FROM stats
WHERE package = 'sqlite-utils' AND date >= '2024-01-01' AND date < '2025-01-01';
[
{
"SUM(downloads)": 4300221
}
]
Si la ejecución de la consulta SQL falla (debido a algún error de sintaxis), devuelve ese error al modelo para que lo corrija y lo reintenta hasta tres veces antes de darse por vencido.
aumentar-v/--verbose
para ver las indicaciones exactas que utiliza:
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.
...
CREAR TABLA [stats] (
[paquete] TEXTO,
[fecha] TEXTO,
[descargas] INTEGER,
PRIMARY KEY ([paquete], [fecha])
);
...
¿cuántas descargas de sqlite-utils pypi habrá en 2024?
我已将上述内容截断为仅包含相关表 - 它实际上包含了该数据库中每个表的完整模式。
默认情况下,该工具只会将该数据库架构和您的问题发送给 LLM。如果您添加该`-e/--examples`选项,它还将为该架构中的每个文本列包含五个公共值,平均长度小于 32 个字符。这有时可以帮助获得更好的结果,例如,为`state`列发送值“CA”和“FL”和“TX”可以提示模型应该在查询中使用州缩写而不是全名。
#### 询问 CSV 和 JSON 数据的问题
核心`sqlite-utils`CLI 通常直接针对 SQLite 文件运行,但三年前我添加了使用[sqlite-utils memory](https://simonwillison.net/2021/Jun/19/sqlite-utils-memory/)命令直接针对 CSV 和 JSON 文件运行 SQL 查询的功能。其工作原理是在执行 SQL 查询之前将数据加载到内存 SQLite 数据库中。
我决定重用该机制来直接针对 CSV 和 JSON 数据启用 LLM 提示。
该`sqlite-utils ask-files`命令如下所示:
```shell
sqlite-utils ask-files transaction.csv “按年计算的总销售额”
Este comando acepta uno o más archivos, que puede suministrar en una mezcla de formatos CSV, TSV y JSON. Cada archivo suministrado se importará en una tabla diferente, lo que permitirá al modelo construir consultas de unión si es necesario.
Nota de aplicación
La implementación central del plugin es aproximadamente250 líneas de código PythonUtilicesqlite-utils
registrar_comandos()Plugin hooks para añadirask
responder cantandoask-files
Comando.
Añade LLM como una dependencia y utiliza LLM'sAPI de Pythonpara abstraer los detalles del diálogo con el modelo. Esto significa que elsqlite-utils-ask
Se puede utilizar cualquier modelo soportado por LLM o sus plugins - si quieres pasar el modelo Claude 3.5 Sonnet ejecuta el prompt y usted puede hacer lo siguiente:
sqlite-utils 安装 llm-claude-3
sqlite-utils 询问 content.db “计算新闻表中的行数” -m claude-3.5-sonnet
Inicialmente, el plugin utiliza por defecto gpt-4o-mini para aprovechar la caché automática de sugerencias del modelo: si ejecutas varias preguntas con el mismo esquema, acabarás enviando el mismo prefijo largo de sugerencia varias veces, y la caché de sugerencias de OpenAI se activará automáticamente y proporcionará un descuento 50% para esos tokens de entrada.
Luego he calculado las cifras reales y he encontrado estogpt-4o-mini
Es lo suficientemente barato como para que, incluso sin almacenar en caché 4.000 sugerencias de token (que es un esquema SQL bastante grande), el coste sea inferior a una décima de céntimo. Así que el ahorro en caché no merece la pena ni mencionarlo.
© declaración de copyright
El artículo está protegido por derechos de autor y no debe reproducirse sin autorización.
Artículos relacionados
Sin comentarios...