File size: 6,233 Bytes
85b606c
 
 
 
 
6388512
85b606c
6388512
85b606c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6388512
85b606c
6388512
85b606c
 
 
 
 
 
 
 
 
 
6388512
85b606c
6388512
85b606c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6388512
85b606c
6388512
85b606c
 
 
 
 
 
 
 
 
 
 
 
6388512
85b606c
6388512
85b606c
 
 
 
 
 
6388512
85b606c
 
6388512
85b606c
 
 
 
 
 
6388512
85b606c
 
6388512
85b606c
 
 
 
 
 
 
 
 
 
7eff501
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
description = """
**DB Assistant** is an interactive **AI-powered SQL agent** built with **Gradio** and **LangChain**.  
It enables users to connect to any relational database, ask natural language questions, and receive data-driven answers in real time — no manual SQL writing required.

---
"""

key_features = """
- **Natural Language to SQL Conversion**  
  Ask questions like _“Which genre has the longest tracks?”_ or _“List the top 5 customers by purchase amount.”_  
  The assistant automatically generates and executes optimized SQL queries against your connected database.

- **Live SQL Agent Streaming**  
  The model’s reasoning, query generation, and intermediate steps are streamed to the interface, allowing you to see exactly how the LLM builds and refines its queries.

- **Collapsible Debug Panels (AI & Tool Messages)**  
  Intermediate tool calls and SQL executions are neatly displayed in collapsible **accordions**, making the output transparent yet organized.

- **Multi-Provider LLM Support**  
  Choose from a variety of providers:
  - 🧠 **Google GenAI** (Gemini 2.x)
  - 💬 **OpenAI** (GPT-4, GPT-4o, GPT-3.5)
  - 🦣 **Anthropic** (Claude-3 series)
  - ☁️ **Azure OpenAI**, **AWS Bedrock**, **xAI**, **DeepSeek**, **Perplexity**, and more.  
  The interface automatically updates the available model list based on your provider choice.

- **Secure Database Connectivity**  
  Connect to SQL databases via a simple connection string — supporting **SQLite**, **PostgreSQL**, **MySQL**, and others through LangChain’s `SQLDatabase` utility.

- **Transparent Query Execution**  
  The agent inspects tables, analyzes schemas, and constructs precise SQL queries, always respecting safety rules (no DML statements like INSERT, UPDATE, DELETE, DROP).

- **Intuitive Gradio Interface**  
  Built with `gr.Blocks()` for clean layout:
  - **Left Panel:** LLM setup and database connection  
  - **Right Panel:** Interactive chatbot and conversation history  
  - **Expandable sections** for metadata and project credits

---
"""

tech_stack_overview = """
| Component | Purpose |
|------------|----------|
| **LangChain** | Framework for connecting LLMs with external data tools |
| **SQLDatabaseToolkit** | Provides database inspection, schema parsing, and safe query execution |
| **Gradio** | Creates a user-friendly web UI for chatting with the agent |
| **Python** | Core application logic and integration |
| **Markdown + HTML** | Enhanced output formatting with collapsible accordions |
| **Base64 Encoding** | Used to embed custom logo images directly in the interface |

---
"""

how_it_works= """
1. **Setup LLM**  
   Select your preferred provider and model, enter the corresponding API key, and click **Setup LLM**.

2. **Connect Database**  
   Paste your SQL connection string (e.g., `sqlite:///Chinook.db` or `postgresql+psycopg2://user:pass@host/db`) and click **Connect**.  
   The app automatically lists available tables.

3. **Ask Questions**  
   Type a natural language question in the chat box — the agent:
   - Retrieves the database schema,
   - Generates SQL queries,
   - Executes them safely,
   - Returns a human-readable explanation and result summary.

4. **Inspect Reasoning**  
   Expand the *AI Message* or *Tool Message* accordions to see exactly what the model did under the hood (SQL statements, schema checks, etc.).

---
"""

example = """
**User:**  
> Which genre on average has the longest tracks?

**AI Assistant:**  
- 📊 Generates a SQL query joining `Track` and `Genre` tables  
- 🧩 Computes average `Milliseconds` per genre  
- 🧠 Returns:

> On average, the genre with the longest tracks is **"Sci-Fi & Fantasy"**,  
> followed by **"Science Fiction"**, **"Drama"**, and **"TV Shows"**.

---
"""

use_cases = """
- Data analysts and engineers exploring new databases  
- BI professionals needing quick insights without SQL writing  
- Educators demonstrating database–AI integration  
- Developers testing and debugging database schemas via conversational interface

---
"""

#### 🪄 Future Enhancements
enhancements = """
- ✅ Add visualizations (bar charts, pie charts) for query results  
- ✅ Support multiple database sessions  
- ✅ Enable query caching and history tracking  
- ✅ Integrate authentication for enterprise deployments  

---
"""

#### 💡 Credits
credits = """
Developed using:
- **LangChain Community Modules**
- **Gradio UI Framework**
- **Python 3.12+**

This project bridges the gap between **conversational AI** and **structured data analytics**, giving everyone a personal **SQL-powered data assistant** at their fingertips. 🤖💾

---

"""

footer = """
<div style="background-color: #1d2938; color: white; padding: 10px; width: 100%; bottom: 0; left: 0; display: flex; justify-content: space-between; align-items: center; padding: .2rem 35px; box-sizing: border-box; font-size: 16px;">
    <div style="text-align: left;">
        <p style="margin: 0;">&copy; 2025 </p>
    </div>
    <div style="text-align: center; flex-grow: 1;">
        <p style="margin: 0;">      This website is made with ❤ by SARATH CHANDRA</p>
    </div>
    <div class="social-links" style="display: flex; gap: 20px; justify-content: flex-end; align-items: center;">
        <a href="https://github.com/21bq1a4210" target="_blank" style="text-align: center;">
            <img src="data:image/png;base64,{}" alt="GitHub" width="40" height="40" style="display: block; margin: 0 auto;">
            <span style="font-size: 14px;">GitHub</span>
        </a>
        <a href="https://www.linkedin.com/in/sarath-chandra-bandreddi-07393b1aa/" target="_blank" style="text-align: center;">
            <img src="data:image/png;base64,{}" alt="LinkedIn" width="40" height="40" style="display: block; margin: 0 auto;">
            <span style="font-size: 14px;">LinkedIn</span>
        </a>
        <a href="https://21bq1a4210.github.io/MyPortfolio-/" target="_blank" style="text-align: center;">
            <img src="data:image/png;base64,{}" alt="Portfolio" width="40" height="40" style="display: block; margin-right: 40px;">
            <span style="font-size: 14px;">Portfolio</span>
        </a>
    </div>
</div>
"""