Bu proje, doğal dil sorguları kullanarak SQL sorgularını otomatik olarak oluşturan ve veritabanında çalıştıran bir asistan uygulamasıdır.
- Doğal dil sorguları SQL'e dönüştürme
- Otomatik SQL sorgu optimizasyonu ve doğrulama
- Etkileşimli Streamlit arayüzü
- Çoklu LLM desteği (Ollama ve OpenAI)
- Otomatik veri görselleştirme
- Akıllı hata düzeltme ve geri bildirim
- Projeyi klonlayın:
git clone https://github.com/akatakan/Text2SQL-Agent-using-Langgraph
cd Text2SQL-Agent-using-Langgraph- Sanal ortam oluşturun ve etkinleştirin:
python -m venv .venv
# Windows için:
.\.venv\Scripts\activate
# Linux/Mac için:
source .venv/bin/activate- Gerekli paketleri yükleyin:
pip install -r requirements.txt.envdosyasını yapılandırın:
DATABASE_URL="db-path"
LLM_MODEL="llama3.1:latest"
LLM_TEMPERATURE=0.1
USE_OLLAMA=true
USE_OPENAI=false- Docker imajını oluşturun:
docker build -t sql-assistant .- Konteyner'ı çalıştırın:
docker run -d \
-p 8501:8501 \
-v $(pwd)/data:/app/data \
--env-file .env \
--name sql-assistant \
sql-assistant- Streamlit uygulamasını başlatın:
streamlit run app.py- Tarayıcınızda
http://localhost:8501adresine gidin - Yan menüden LLM ayarlarını yapılandırın
- Doğal dil ile sorgunuzu yazın ve "Sorguyu Çalıştır" butonuna tıklayın
- Tarayıcınızda
http://localhost:8501adresine gidin - Yan menüden LLM ayarlarını yapılandırın
- Doğal dil ile sorgunuzu yazın ve "Sorguyu Çalıştır" butonuna tıklayın
- "Show me the total number of employees for each level"
- "What is the average salary by department?"
- "Show me the highest paid employees in each department"
Testleri çalıştırmak için:
pytest tests/.
├── src/
│ ├── analysis/ # Analiz ve mantıksal işlemler
│ ├── core/ # Temel modeller ve konfigürasyon
│ ├── database/ # Veritabanı işlemleri
│ ├── sql/ # SQL işlemleri
│ └── utils/ # Yardımcı fonksiyonlar
├── tests/ # Test dosyaları
├── app.py # Streamlit arayüzü
├── Dockerfile # Docker yapılandırması
└── requirements.txt # Bağımlılıklar
- LangChain: LLM entegrasyonu için
- Streamlit: Web arayüzü için
- SQLAlchemy: Veritabanı işlemleri için
- Pandas: Veri manipülasyonu için
- Pytest: Test otomasyonu için
- Docker: Konteynerizasyon için
Bu proje MIT lisansı altında lisanslanmıştır.