|
|
--- |
|
|
language: |
|
|
- en |
|
|
license: apache-2.0 |
|
|
library_name: peft |
|
|
tags: |
|
|
- text-generation |
|
|
- sql |
|
|
- chat |
|
|
- peft |
|
|
- lora |
|
|
- transformers |
|
|
- phi-3 |
|
|
- instruction-tuning |
|
|
base_model: unsloth/Phi-3-mini-4k-instruct-bnb-4bit |
|
|
pipeline_tag: text-generation |
|
|
inference: false |
|
|
--- |
|
|
|
|
|
# 🧠 SQL Chat – Phi-3-mini SQL Assistant |
|
|
|
|
|
**Model ID:** `saadkhi/SQL_Chat_finetuned_model` |
|
|
**Base model:** `unsloth/Phi-3-mini-4k-instruct-bnb-4bit` |
|
|
**Model type:** LoRA (merged) |
|
|
**Task:** Natural Language → SQL query generation + conversational SQL assistance |
|
|
**Language:** English |
|
|
**License:** Apache 2.0 |
|
|
|
|
|
This model is a fine-tuned version of **Phi-3-mini-4k-instruct** (4-bit quantized) specialized in understanding natural language questions about databases and generating correct, clean SQL queries. |
|
|
|
|
|
## ✨ Key Features |
|
|
|
|
|
- Very good balance between size, speed and SQL generation quality |
|
|
- Works well with common database dialects (PostgreSQL, MySQL, SQLite, SQL Server, etc.) |
|
|
- Can explain queries, suggest improvements and handle follow-up questions |
|
|
- Fast inference even on consumer hardware (especially with 4-bit quantization) |
|
|
|
|
|
## 🎯 Intended Use & Capabilities |
|
|
|
|
|
**Best for:** |
|
|
- Converting natural language questions → SQL queries |
|
|
- Helping beginners learn SQL through explanations |
|
|
- Quick prototyping of SQL queries in development |
|
|
- Building SQL chat interfaces / tools / assistants |
|
|
- Educational purposes |
|
|
|
|
|
**Limitations / Not recommended for:** |
|
|
- Extremely complex analytical/business intelligence queries |
|
|
- Real-time query optimization advice |
|
|
- Very database-specific or proprietary SQL extensions |
|
|
- Production systems without human review (always validate generated SQL!) |
|
|
|
|
|
## 🛠️ Quick Start (merged LoRA version) |
|
|
|
|
|
```python |
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM |
|
|
import torch |
|
|
|
|
|
model_id = "saadkhi/SQL_Chat_finetuned_model" |
|
|
|
|
|
tokenizer = AutoTokenizer.from_pretrained(model_id) |
|
|
model = AutoModelForCausalLM.from_pretrained( |
|
|
model_id, |
|
|
torch_dtype=torch.bfloat16, |
|
|
device_map="auto", |
|
|
trust_remote_code=True |
|
|
) |
|
|
|
|
|
# Simple prompt style (chat template is recommended) |
|
|
prompt = """Show all customers who placed more than 5 orders in 2024""" |
|
|
|
|
|
messages = [{"role": "user", "content": prompt}] |
|
|
|
|
|
inputs = tokenizer.apply_chat_template( |
|
|
messages, |
|
|
tokenize=True, |
|
|
add_generation_prompt=True, |
|
|
return_tensors="pt" |
|
|
).to(model.device) |
|
|
|
|
|
outputs = model.generate( |
|
|
inputs, |
|
|
max_new_tokens=180, |
|
|
do_sample=False, |
|
|
temperature=0.0, |
|
|
pad_token_id=tokenizer.eos_token_id |
|
|
) |
|
|
|
|
|
print(tokenizer.decode(outputs[0], skip_special_tokens=True)) |