saadkhi's picture
Update README.md
d983985 verified
metadata
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)

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))