| # Fine-Tuned SQLCoder-7B for Odoo 17 | |
| This is a fine-tuned version of [defog/sqlcoder-7b-2](https://huggingface.co/defog/sqlcoder-7b-2) trained on Odoo 17 database schemas and queries. | |
| ## Model Details | |
| - Base model: defog/sqlcoder-7b-2 | |
| - Fine-tuned using LoRA for parameter-efficient adaptation | |
| - Optimized for Odoo 17 SQL queries | |
| ## Usage | |
| ```python | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| # Load the model with PEFT adapter | |
| model = AutoModelForCausalLM.from_pretrained("VPCSinfo/odoo17-sqlcoder-7b") | |
| tokenizer = AutoTokenizer.from_pretrained("VPCSinfo/odoo17-sqlcoder-7b") | |
| # Example query | |
| schema = """ | |
| CREATE TABLE res_partner ( | |
| id INTEGER PRIMARY KEY, | |
| name VARCHAR(255), | |
| email VARCHAR(255), | |
| phone VARCHAR(64) | |
| ); | |
| CREATE TABLE sale_order ( | |
| id INTEGER PRIMARY KEY, | |
| partner_id INTEGER REFERENCES res_partner(id), | |
| date_order TIMESTAMP, | |
| state VARCHAR(20), | |
| amount_total NUMERIC | |
| ); | |
| """ | |
| question = "Find all customers who have orders with a total amount greater than 1000" | |
| # Format your input following SQLCoder's expected format | |
| prompt = f'''### Task | |
| Generate a SQL query to answer the question below based on the table schema. | |
| ### Database Schema | |
| CREATE TABLE res_partner ( | |
| id INTEGER PRIMARY KEY, | |
| name VARCHAR(255), | |
| email VARCHAR(255), | |
| phone VARCHAR(64) | |
| ); | |
| CREATE TABLE sale_order ( | |
| id INTEGER PRIMARY KEY, | |
| partner_id INTEGER REFERENCES res_partner(id), | |
| date_order TIMESTAMP, | |
| state VARCHAR(20), | |
| amount_total NUMERIC | |
| ); | |
| ### Question | |
| Find all customers who have orders with a total amount greater than 1000 | |
| ### SQL Query | |
| ''' | |
| # Generate SQL | |
| inputs = tokenizer(prompt, return_tensors="pt") | |
| outputs = model.generate(**inputs, max_new_tokens=300) | |
| sql_query = tokenizer.decode(outputs[0], skip_special_tokens=True).split("### SQL Query")[1].strip() | |
| print(sql_query) | |