|
|
--- |
|
|
title: PostgreSQL Query Agent with Visualization |
|
|
emoji: π€― |
|
|
colorFrom: pink |
|
|
colorTo: yellow |
|
|
sdk: docker |
|
|
pinned: false |
|
|
short_description: PostgreSQL Query Agent with Visualization |
|
|
--- |
|
|
|
|
|
[HF URL](https://huggingface.co/spaces/intellica/talk2data) |
|
|
[Gradio APP URL](https://intellica-talk2data.hf.space/) |
|
|
|
|
|
|
|
|
# Natural Language SQL Query Agent with Visualization |
|
|
|
|
|
A smart and interactive PostgreSQL query system that translates natural language requests into SQL queries, executes them, and generates visualizations using PandasAI. Built with modern technologies including LangChain, FastMCP, and Gradio. |
|
|
|
|
|
 |
|
|
|
|
|
## π Features |
|
|
|
|
|
- **Natural Language to SQL**: Convert plain English questions into SQL queries |
|
|
- **Interactive Chat Interface**: User-friendly Gradio web interface |
|
|
- **Smart Visualization**: Automated chart generation based on query results |
|
|
- **Conversation Memory**: Maintains context across multiple queries |
|
|
- **Database Schema Understanding**: Intelligent handling of database structure |
|
|
- **Multiple LLM Support**: Compatible with both OpenAI and Google's Gemini models |
|
|
|
|
|
## ποΈ Architecture |
|
|
|
|
|
The project is structured into several key components: |
|
|
|
|
|
### 1. Query Processing Layer |
|
|
- **LangChain Client** (`langchain_mcp_client.py`): |
|
|
- Manages LLM interactions for query understanding |
|
|
- Handles conversation flow and context |
|
|
- Integrates with MCP tools |
|
|
- Supports multiple LLM providers (OpenAI/Gemini) |
|
|
|
|
|
### 2. Database Layer |
|
|
- **PostgreSQL MCP Server** (`postgre_mcp_server.py`): |
|
|
- Manages PostgreSQL connections and query execution |
|
|
- Implements connection pooling for efficiency |
|
|
- Provides database schema information |
|
|
- Handles query result processing |
|
|
|
|
|
### 3. Visualization Layer |
|
|
- **PandasAI Integration** (`pandasai_visualization.py`): |
|
|
- Intelligent chart generation from query results |
|
|
- Support for multiple chart types |
|
|
- Automated visualization selection |
|
|
- Exports charts to `exports/charts/` directory |
|
|
|
|
|
### 4. User Interface |
|
|
- **Gradio Web Interface** (`gradio_app.py`): |
|
|
- Clean and intuitive chat interface |
|
|
- Real-time query processing |
|
|
- Visualization display |
|
|
- Interactive session management |
|
|
|
|
|
### 5. Memory Management |
|
|
- **Conversation Store** (`memory_store.py`): |
|
|
- Maintains conversation history |
|
|
- Implements singleton pattern for global state |
|
|
- Enables contextual query understanding |
|
|
|
|
|
## π Getting Started |
|
|
|
|
|
### Prerequisites |
|
|
|
|
|
- Python 3.11 or lower |
|
|
- PostgreSQL database |
|
|
- Access to either OpenAI API or Google Gemini API |
|
|
|
|
|
### Installation |
|
|
|
|
|
1. **Clone the Repository** |
|
|
```bash |
|
|
git clone <repository-url> |
|
|
cd query_mcp_server |
|
|
``` |
|
|
|
|
|
2. **Set Up Virtual Environment** |
|
|
```bash |
|
|
python -m venv venv |
|
|
source venv/bin/activate # Linux/Mac |
|
|
# or |
|
|
.\venv\Scripts\activate # Windows |
|
|
``` |
|
|
|
|
|
3. **Install Dependencies** |
|
|
```bash |
|
|
pip install -r requirements.txt |
|
|
``` |
|
|
|
|
|
4. **Environment Configuration** |
|
|
Create a `.env` file using the .env.example template: |
|
|
```bash |
|
|
cp .env.example .env |
|
|
``` |
|
|
Fill in the required environment variables. |
|
|
|
|
|
## πββοΈ Running the Application |
|
|
|
|
|
1. **Start the Application** |
|
|
```bash |
|
|
python gradio_app.py |
|
|
``` |
|
|
or using run.sh |
|
|
```bash |
|
|
chmod +x run.sh |
|
|
./run.sh |
|
|
``` |
|
|
|
|
|
2. **Access the Interface** |
|
|
- Open your browser and navigate to `http://localhost:7860` |
|
|
- Start querying your database using natural language! |
|
|
|
|
|
## π§ͺ Testing |
|
|
|
|
|
To test the visualization component independently: |
|
|
```bash |
|
|
python pandasai_visualization.py |
|
|
``` |
|
|
This will generate sample visualizations to verify the PandasAI setup. |
|
|
|
|
|
## π Project Structure |
|
|
``` |
|
|
query_mcp_server/ |
|
|
βββ gradio_app.py # Web interface |
|
|
βββ langchain_mcp_client.py # LLM integration |
|
|
βββ postgre_mcp_server.py # Database handler |
|
|
βββ pandasai_visualization.py # Visualization logic |
|
|
βββ memory_store.py # Conversation management |
|
|
βββ exports/ |
|
|
β βββ charts/ # Generated visualizations |
|
|
βββ resources/ # Static resources |
|
|
``` |
|
|
|
|
|
## π οΈ Contributing |
|
|
|
|
|
1. Fork the repository |
|
|
2. Create your feature branch (`git checkout -b feature/amazing-feature`) |
|
|
3. Commit your changes (`git commit -m 'Add amazing feature'`) |
|
|
4. Push to the branch (`git push origin feature/amazing-feature`) |
|
|
5. Open a Pull Request |
|
|
|
|
|
## π License |
|
|
|
|
|
This project is licensed under the MIT License - see the LICENSE file for details. |
|
|
|
|
|
## β¨ Acknowledgments |
|
|
|
|
|
- LangChain for the powerful LLM framework |
|
|
- PandasAI for intelligent visualization capabilities |
|
|
- Gradio for the intuitive web interface |
|
|
- FastMCP for efficient database communication |
|
|
|