| # Quick Start Example | |
| ```python | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| import torch | |
| # Load model | |
| model = AutoModelForCausalLM.from_pretrained( | |
| "pawlaszc/DigitalForensicsText2SQLite", | |
| torch_dtype=torch.float16, | |
| device_map="auto" | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained("pawlaszc/DigitalForensicsText2SQLite") | |
| # Example schema | |
| schema = """ | |
| CREATE TABLE messages ( | |
| _id INTEGER PRIMARY KEY, | |
| address TEXT, | |
| body TEXT, | |
| date INTEGER, | |
| read INTEGER | |
| ); | |
| """ | |
| # Example request | |
| request = "Find all unread messages from yesterday" | |
| # Generate SQL | |
| prompt = f"""Generate a valid SQLite query for this forensic database request. | |
| Database Schema: | |
| {schema} | |
| Request: {request} | |
| SQLite Query: | |
| """ | |
| inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=2048) | |
| inputs = {k: v.to(model.device) for k, v in inputs.items()} | |
| with torch.no_grad(): | |
| outputs = model.generate(**inputs, max_new_tokens=200, do_sample=False) | |
| # Extract generated SQL | |
| input_length = inputs['input_ids'].shape[1] | |
| generated_tokens = outputs[0][input_length:] | |
| sql = tokenizer.decode(generated_tokens, skip_special_tokens=True) | |
| print(sql.strip()) | |
| ``` | |
| ## GGUF Usage (llama.cpp) | |
| ```bash | |
| # Download GGUF file (Q4_K_M recommended) | |
| wget https://huggingface.co/pawlaszc/DigitalForensicsText2SQLite/resolve/main/forensic-sql-q4_k_m.gguf | |
| # Run with llama.cpp | |
| ./llama-cli -m forensic-sql-q4_k_m.gguf -p "Your prompt here" | |
| ``` | |
| ## Available Files | |
| - **Full model (FP16):** ~6 GB - Best quality | |
| - **Q4_K_M.gguf:** ~2.3 GB - Recommended (95% quality, 2.5× faster) | |
| - **Q5_K_M.gguf:** ~2.8 GB - Higher quality (97% quality) | |
| - **Q8_0.gguf:** ~3.8 GB - Highest quality (99% quality) | |
| ## Performance | |
| - Overall: 79% accuracy | |
| - Easy queries: 94.3% | |
| - Medium queries: 80.6% | |
| - Hard queries: 61.8% | |