Aprendizagem pessoal com IA
e orientação prática

SQLite-Utils-Ask: permite que os usuários consultem bancos de dados SQLite e arquivos CSV/JSON para obter dados de consulta

Introdução geral

O SQLite-Utils-Ask é uma ferramenta avançada criada para ajudar os usuários a realizar consultas de dados com perguntas e respostas em bancos de dados SQLite e arquivos CSV/JSON com o auxílio do LLM (Large Language Model). A ferramenta é capaz de gerar automaticamente consultas SQL apropriadas com base nas perguntas do usuário e executar as consultas para retornar os resultados, simplificando bastante o processo de análise e processamento de dados.

 

Lista de funções

  • questionamento em linguagem naturalPerguntas: faça perguntas sobre os dados no banco de dados por meio de linguagem natural, e a ferramenta gerará automaticamente as consultas SQL correspondentes.
  • Compatibilidade do banco de dadosSuporte ao banco de dados SQLite para facilitar o gerenciamento e a consulta de dados.
  • Manuseio de arquivos CSV/JSONSuporte à consulta direta de arquivos CSV, TSV ou JSON.
  • Pesquisa de vários documentosSuporte a consultas federadas para vários documentos.
  • ferramenta de linha de comandoInterface de linha de comando: fornece uma interface de linha de comando fácil de usar que permite aos usuários executar consultas rapidamente.
  • Suporte a plug-insPode ser integrado a ferramentas como o sqlite-utils para ampliar a funcionalidade e os cenários de aplicativos.

Fazer perguntas sobre bancos de dados SQLite e arquivos CSV/JSON no Terminal

Estou trabalhando na minha ferramenta CLI sqlite-utils para oCriei um novo plug-in que permite fazer perguntas em linguagem humana diretamente para bancos de dados SQLite e arquivos CSV/JSON em seu computador.


Seu nome é sqlite-utils-ask. Instale-o da seguinte forma:

Instalação do sqlite-utils sqlite-utils-ask

Ele obtém a chave de API da variável de ambienteOPENAI_API_KEYou você pode instalar o LLM e usar oConjunto de chaves llm openaiArmazene a chave em um arquivo de configuração.

Então, você pode usá-lo da seguinte forma:

curl -O https://datasette.io/content.db
sqlite-utils perguntou a content.db " Qual é o número de downloads do sqlite-utils pypi em 2024?"

Esse comando extrairá o esquema SQL do arquivo de banco de dados fornecido, o enviará ao LLM com sua pergunta, retornará a consulta SQL e tentará executá-la para produzir resultados.

Se tudo correr bem, ele fornecerá a seguinte resposta:

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

Se a execução da consulta SQL falhar (devido a algum erro de sintaxe), ele passará esse erro de volta ao modelo para correção e tentará novamente até três vezes antes de desistir.

aumentar-v/--verbosepara ver os prompts exatos que ele usa:

Prompt do sistema.
Você receberá um esquema SQLite seguido de uma pergunta. Gere uma única consulta SQL para responder a essa pergunta.
Gere uma única consulta SQL para responder a essa pergunta. Retorne essa consulta em um ```sql ...'' Retornar essa consulta em uma ``sql ...''
Retornar essa consulta em um bloco de código vedado ``sql ...''.
Exemplo: Quantos repositórios existem?
Resposta: bloco de código vedado ``sql ...''.
```sql
select count(*) from repos

Prompt.
...
CREATE TABLE [stats] (
[pacote] TEXTO,
[data] TEXTO,
[downloads] INTEGER,
PRIMARY KEY ([package], [date])
);
...
quantos downloads do sqlite-utils pypi em 2024?

Eu trunquei o texto acima para incluir apenas as tabelas relevantes - na verdade, ele contém o esquema completo de cada tabela desse banco de dados.
Por padrão, a ferramenta enviará apenas esse esquema de banco de dados e sua pergunta para o LLM e, se você adicionar a opção `-e/--examples`, ela também incluirá cinco valores públicos para cada coluna de texto nesse esquema, com um comprimento médio de menos de 32 caracteres. Por exemplo, o envio dos valores "CA", "FL" e "TX" para a coluna `state` pode sugerir que o modelo deve usar as abreviações de estado abreviações de estado em vez de nomes completos.
#### Problemas ao solicitar dados CSV e JSON
O núcleo da CLI do `sqlite-utils` normalmente é executado diretamente em arquivos SQLite, mas há três anos adicionei a capacidade de usar o comando [sqlite-utils memory](https://simonwillison.net/2021/Jun/19/sqlite-utils-memory/) para obter diretamente dados CSV e JSON. Há três anos, adicionei a capacidade de executar consultas SQL diretamente em arquivos CSV e JSON usando o comando [sqlite-utils memory](). Isso funciona carregando dados em um banco de dados SQLite na memória antes de executar a consulta SQL.
Decidi reutilizar esse mecanismo para habilitar dicas LLM diretamente em dados CSV e JSON.
O comando ``sqlite-utils ask-files`` tem a seguinte aparência:
```shell
sqlite-utils ask-files transaction.csv "Total de vendas por ano"

Esse comando aceita um ou mais arquivos, que você pode fornecer em uma combinação de formatos CSV, TSV e JSON. Cada arquivo fornecido será importado para uma tabela diferente, permitindo que o modelo construa consultas de junção, se necessário.

Nota de implementação

A implementação principal do plug-in é aproximadamente250 linhas de código PythonUsosqlite-utils register_commands()Ganchos de plug-in para adicionarperguntarresponder cantandoperguntar-arquivosComando.

Ele adiciona o LLM como uma dependência e usa a funçãoAPI do Pythonpara abstrair os detalhes do diálogo com o modelo. Isso significa que osqlite-utils-askQualquer modelo compatível com o LLM ou seus plug-ins pode ser usado - se você quiser passar o Claude 3.5 O Sonnet executa o prompt e você pode fazer o seguinte:

sqlite-utils instala o llm-claude-3
sqlite-utils ask content.db "count rows in news table" -m claude-3.5-sonnet

Inicialmente, o padrão do plug-in é gpt-4o-mini para aproveitar o cache automático de dicas do modelo: se você executar várias perguntas no mesmo esquema, acabará enviando o mesmo prefixo de dica longo várias vezes, e o cache de dicas da OpenAI deve entrar em ação automaticamente e fornecer um desconto 50% para esses tokens de entrada.

Em seguida, analisei os números reais e descobri o seguintegpt-4o-miniÉ barato o suficiente para que, mesmo sem armazenar em cache 4.000 token hints (que é um esquema SQL bem grande), o custo seja inferior a um décimo de centavo. Portanto, nem vale a pena mencionar essa economia de cache!

Aprendizagem fácil com IA

O guia do leigo para começar a usar a IA

Ajuda você a aprender a utilizar as ferramentas de IA com baixo custo e a partir de uma base zero.A IA, assim como o software de escritório, é uma habilidade essencial para todos. Dominar a IA lhe dará uma vantagem em sua busca de emprego e metade do esforço em seu trabalho e estudos futuros.

Ver detalhes>
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " SQLite-Utils-Ask: permite que os usuários consultem bancos de dados SQLite e arquivos CSV/JSON para obter dados de consulta

Chefe do Círculo de Compartilhamento de IA

O Chief AI Sharing Circle se concentra no aprendizado de IA, fornecendo conteúdo abrangente de aprendizado de IA, ferramentas de IA e orientação prática. Nosso objetivo é ajudar os usuários a dominar a tecnologia de IA e explorar juntos o potencial ilimitado da IA por meio de conteúdo de alta qualidade e compartilhamento de experiências práticas. Seja você um iniciante em IA ou um especialista sênior, este é o lugar ideal para adquirir conhecimento, aprimorar suas habilidades e realizar inovações.

Entre em contato conosco
pt_BRPortuguês do Brasil