Skip to content

realshubhamraut/SQL-Snowflake-chat

Repository files navigation

SQL-Snowflake-chat ❄️

and also with local postgres 🐘


SQL-Snowflake-chat is a user-friendly application that lets you interact with your Snowflake and local PostgreSQL data using natural language queries. Simply type your questions, and SQL-Snowflake-chat will generate the SQL query and return the data you need. It eliminates the need for complex SQL queries and makes data access easy. Enjoy real‑time data retrieval, interactive visualizations, and a sleek dark-themed UI—all through a conversational interface.

Supported LLM's

  • Gemini Flash 2.0
  • Deepseek R1
  • GPT-4o

Technology Stack

  • Frontend:
    Streamlit with a custom dark theme

  • Data Processing & Visualization:
    Pandas, Matplotlib

  • Database Connectivity:
    SQLAlchemy, psycopg2-binary, snowflake-connector-python, snowflake-sqlalchemy

  • LLM & Query Generation:
    Google Gemini via langchain_google_genai, langhchain, langgraph (for developing SQL specific agentic AI)

🌟 Features

  • Conversational AI: Use Google Gemini and other models to translate natural language into precise SQL queries.
  • Conversational Memory: Retains context for interactive, dynamic responses.
  • Snowflake Integration: Offers seamless, real-time data insights straight from your Snowflake database.
  • Self-healing SQL: Proactively suggests solutions for SQL errors, streamlining data access.
  • Interactive User Interface: Transforms data querying into an engaging conversation, complete with a chat reset option.
  • Agent-based Architecture: Utilizes an agent to manage interactions and tool usage.
  • Plot Charts Automatically, without code - Want quick insight just ask to plot the required charts/graphs, it will figure out the required query by relating tables in database, I've optimized the code for removing uncecessary data, and will show you just vizualisation.

🛠️ Installation

  1. Clone the Repository:

    git clone https://github.com/<your-username>/sql-snowflake-chat.git
    cd sql-snowflake-chat
  2. Install the required packages:

    pip install -r requirements.txt

  1. Set up your GEMINI_API, ACCOUNT, USER_NAME, PASSWORD, ROLE, DATABASE, SCHEMA, WAREHOUSE,CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_NAMESPACE_ID, CLOUDFLARE_API_TOKEN in project directory secrets.toml. Cloudflare is used here for caching Snowflake responses in KV.

  2. Make your schemas and store them in docs folder that matches your database.

  3. Create supabase extention, table and function from the supabase/scripts.sql.

  4. Run python ingest.py to get convert to embeddings and store as an index file.

  5. Run the Streamlit app to start chatting: streamlit run main.py


🤝 Contributing

Feel free to contribute to this project by submitting a pull request or opening an issue. Your feedback and suggestions are greatly appreciated!