No mundo dinâmico e altamente tecnológico de hoje, o acesso eficiente e a manipulação de dados são cruciais para a tomada de decisões empresariais informadas. No entanto, a complexidade inerente ao Structured Query Language (SQL) pode representar uma barreira significativa para muitos profissionais que não possuem uma formação técnica aprofundada. A necessidade de compreender intricados comandos T-SQL muitas vezes desmotiva usuários que poderiam se beneficiar enormemente da análise de dados.
Para resolver este desafio, surge a vanna.ai, uma tecnologia inovadora que permite aos usuários interagir com bancos de dados Structured Query Language de maneira simples e intuitiva, sem a necessidade de conhecer T-SQL. Com essa nova tecnologia, a extração de informações valiosas torna-se acessível a um público mais amplo, permitindo que profissionais de diversas áreas explorem e analisem dados de forma eficiente e eficaz.
SQL
Neste artigo, exploraremos como a vanna.ai está transformando a maneira como interagimos com bancos de dados Structured Query Language. Discutiremos as principais funcionalidades da tecnologia, seus benefícios práticos e como ela se integra ao fluxo de trabalho existente nas organizações. Ao final, esperamos demonstrar a democratização do acesso aos dados, capacitando usuários a tomar decisões baseadas em dados sem a complexidade tradicional associada ao T-SQL.
Vamos iniciar:
from vanna.openai import OpenAI_Chat
from vanna.vannadb import VannaDB_VectorStore
class MyVanna(VannaDB_VectorStore, OpenAI_Chat):
def __init__(self, config=None):
MY_VANNA_MODEL = # Your model name from https://vanna.ai/account/profile
VannaDB_VectorStore.__init__(self, vanna_model=MY_VANNA_MODEL,
vanna_api_key=MY_VANNA_API_KEY, config=config)
OpenAI_Chat.__init__(self, config=config)
# Add your OpenAI api_key
vn = MyVanna(config={'api_key': 'sk-...', 'model': 'gpt-4o'})
olhando a documentação do vanna .ai podemos se conectar a essa “pequena e desconhecida lista” de banco de dados:
- Postgres SQL
- Oracle
- DuckDB
- MySQL
- SQLite
- Big Query
- Snowflake
- Microsoft SQL
Observando a documentação , você pode descobrir como conectar seu banco de dados específico. Para os fins desta postagem, eu estaria me conectando ao banco de dados DuckDB StackOverFlow. O banco de dados pode ser encontrado aqui !
#É assim que você pode se conectar a um banco de dados DuckDB
vn.connect_to_duckdb(url= 'motherduck:[<database_name>]?motherduck_token=
<token>&saas_mode=true' )
Tabelas SQL utilizadas para nosso treinamento
Treinamento no Plano (Esquema de Informações)
# A consulta do esquema de informações pode precisar de alguns ajustes dependendo
do seu banco de dados. Este é um bom ponto de partida.
df_information_schema = vn.run_sql( "SELECIONE * FROM INFORMATION_SCHEMA.COLUMNS" )
# Isso dividirá o esquema de informações em pedaços pequenos que podem ser
referenciados pelo
plano LLM = vn.get_training_plan_generic(df_information_schema)
plan
# Se você gostar do plano, remova o comentário e execute-o para treinar
vn.train(plan=plan)
Treinamento em DDL
# No duckDB, a instrução de descrição pode buscar o DDL para qualquer tabela
vn.train ( ddl = "DESCRIBE SELECT * FROM Stackoverflow.users;" )
Treinamento em instruções SQL
# aqui está um exemplo de treinamento em instruções SQL
vn.train(
question= "Quais são os 10 principais usuários com maior quantidade de emblemas?"
,sql= "" "SELECT UserId, COUNT(*) AS badge_count
FROM stackoverflow.main. badges
GROUP BY UserId
ORDER BY badge_count DESC
LIMIT 10
" "" )
# Outro exemplo
vn.train(
question= "Qual é a diferença no total de respostas para o usuário que respondeu
mais respostas e o usuário que respondeu menos perguntas?" ,
,sql= "SELECT MAX(answer_count) - MIN(answer_count) AS diferença
FROM (
SELECT OwnerUserId, COUNT(*) AS answer_count
FROM stackoverflow.main.posts
WHERE PostTypeId = 2
GROUP BY OwnerUserId
) AS answer_counts;
" )
Treinamento em Documentação
# Você pode alimentar informações contextuais usando a documentação
vn.train(documentation=
"Chamamos o usuário com as respostas mais altas em um ano de Grão-Mestre" )
Você pode visualizar seus dados de treinamento usando vn.get_training_data()
# vn.ask executa as seguintes funções em sequência, que podem ser executadas
individualmente
# 1. vn.generate_ql
# 2. vn.run_sql
# 3. vn.generate_plotly_code
# 4. vn.get_plotly_figure
# é assim que você pode fazer a pergunta pós-treinamento de Vanna
vn.ask( 'Encontrar os 10 principais usuários com a maior quantidade de emblemas?' )
Usando o aplicativo Flask
Vanna vem com um aplicativo UI Flask integrado. Que pode ser iniciado dentro de um notebook Jupyter ou script Python.
de vanna.flask importar VannaFlaskApp
app = VannaFlaskApp(vn)
app.run()
É assim que você pode usar o GPT 4o para conversão de texto em Structured Query Language.
Referência
Abaixo está a comparação entre o GPT 4o com outros modelos de sua classe, como você pode ver que ele tem o desempenho mais alto de 61% em comparação com 59% do ChatGPT 4 turbo e 56% do Claude Opus
Até mais!!! o/
#llm #vanna.ai #sql #duckdb #tsql #python
LEIA TAMBÉM