Text Generation
PEFT
Safetensors
English
text-to-sql
agent
tool-use
lora
qlora
agenttune
auditkit
File size: 5,844 Bytes
f7625f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12c183e
f7625f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
---
license: cc-by-nc-4.0
base_model: CohereLabs/tiny-aya-global
library_name: peft
pipeline_tag: text-generation
language:
- en
tags:
- text-to-sql
- agent
- tool-use
- lora
- qlora
- agenttune
- auditkit
datasets:
- satish9177/tiny-aya-sql-agent-data
- trl-lab/SQaLe-2-text-to-SQL-Queries
---

# Tiny Aya SQL agent (B)

A LoRA adapter that turns Cohere's **Tiny Aya Global** into a tool-using agent for SQLite databases.
This is **B**, the model submitted to the Lexsi AI Safety & Alignment Hackathon, Track 3 (Agentic
Fine-tuning).
- **How it was made:** QLoRA supervised fine-tuning on 1,500 verified episodes (the
  [A1500 adapter](https://huggingface.co/satish9177/tiny-aya-sql-agent-a1500)), plus one round of
  self-training on 306 of its own verified answers (rejection-sampling fine-tuning).
- **Tools:** built with Lexsi **AgentTune**; every score is re-checked by **AuditKIT**.

- Write-up: [Teaching Tiny Aya to query databases (HF Article)](https://huggingface.co/blog/satish9177/teaching-tiny-aya-to-query-databases-what-fine-tun)
- Code, plans and full results: [github.com/satish9177/aya-db-agent](https://github.com/satish9177/aya-db-agent)
- Data, trajectories and logs: [satish9177/tiny-aya-sql-agent-data](https://huggingface.co/datasets/satish9177/tiny-aya-sql-agent-data)

## What it does

The agent gets a question and four tools over a read-only SQLite database:

| Tool | Does |
|---|---|
| `list_tables()` | lists the tables |
| `describe_table(table)` | shows columns, foreign keys and three sample rows |
| `run_sql(query)` | runs one read-only `SELECT` and previews up to 20 rows |
| `submit_sql(query)` | submits the final query and ends the episode |

- **Turn format:** it writes one tool call per turn as `[{"tool_name": ..., "parameters": {...}}]` and has
  **eight tool steps**.
- **Prompt:** an exact example is in `prompt_example.json`.

## Results (strict, final sets never used for any choice)

Strict means the submitted query's full result equals the reference, and the query reads a real table.

| Set | Base (untuned) | A1500 | **B (this model)** | gpt-6-luna (closed, same test) |
|---|---:|---:|---:|---:|
| SQaLe final (144, unseen databases) | 2.8% | 31.3% | **30.6%** | 66.0% |
| BIRD Mini-Dev (493, never trained on) | 0.0% | 1.6% | **1.4%** | not run |
| Shop retention, dev (40) | 0 | 40 | **40** | not run |
| Shop retention, multi-hop (40) | 0 | 1 | **0** | not run |

**Where it works:**
- It reads the schema before querying.
- Its submitted queries almost always run: 2 failures across all final sets, against 377 for the untuned
  model.
- It is close to the closed model on simple one-table lookups (29 vs 31 of 36).

**Where it does not:**
- Questions over 3+ tables or needing several steps (1 of 51).
- Large schemas (BIRD).
- Recovering after a failed query; it never does.

Running out of the eight tool steps is the main failure.

## How to load

```python
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
from peft import PeftModel

base = AutoModelForCausalLM.from_pretrained(
    "CohereLabs/tiny-aya-global", revision="af89d219b53ed9b13b8a4645f9c8028973510324",
    dtype=torch.float16, device_map="auto",
    quantization_config=BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4",
                                           bnb_4bit_use_double_quant=True,
                                           bnb_4bit_compute_dtype=torch.float16))
model = PeftModel.from_pretrained(base, "satish9177/tiny-aya-sql-agent")
```

**Tokenizer: load it from the base model's `tokenizer.json`**, as `ayadb.engine.official_tokenizer` does in
the code repo. In transformers 5.x, `AutoTokenizer` replaces Tiny Aya's pre-tokenizer
([huggingface/transformers#49192](https://github.com/huggingface/transformers/issues/49192)), and the token
ids then differ from the ones used in training.

To run the full agent loop and the scoring, use `ayadb.sqlrunner.evaluate_with_engine` from the code repo.

## Training

| | |
|---|---|
| Starting point | A1500 adapter, step 180 (QLoRA SFT on 1,265 SQaLe + 235 shop episodes) |
| Self-training data | 306 verified, correct attempts by A1500 on 229 held-out SQaLe questions |
| Quantization | 4-bit NF4, double quantization, fp16 compute |
| LoRA | rank 16, alpha 32, dropout 0.05; q, k, v, o, gate, up and down projections |
| Optimization | 2 passes, learning rate 1e-4, effective batch 16, 40 updates |
| Loss | the model's own turns only; tool outputs are never trained |
| Hardware | one Tesla T4 |
| Adapter SHA256 | `90b04823368f50d6ef5ce85c171fffff317b11a3bf43a591cf3952f01b076837` |

**Self-training vs a matched control:**
- A token-matched control trained on teacher episodes for the same questions.
- On dev, B beat it 4 tasks to 0 (p = 0.125) and scored 40/95, against 37 for A1500.
- On the final sets, B and A1500 are the same within noise.

Training records are in `training/`. Each run was preregistered and ran once; the plans are in the code
repo's `experiments/` folder.

## Limitations

- **Accuracy:** it is weak on complex and multi-step SQL, and on large schemas.
- **Recovery:** it does not recover from errors.
- **Language:** English questions only.
- **Closed-model comparison:** a cheap closed model (gpt-6-luna) scored far higher on the same test, at a
  lower cost per correct answer than this model on a rented T4.
- **Use:** research and non-commercial use only (see the licence).

## Licence and credits

- **Licence:** CC-BY-NC-4.0, following the base model, **Tiny Aya Global** by Cohere Labs.
- **AgentTune and AuditKIT** (Lexsi Labs) are source-available, non-commercial tools.
- **SQaLe** by Cornelius Wolff, Daniel Gomm and Madelon Hulsebos (2026). Its card declares MIT.
- **BIRD Mini-Dev** by Li et al. (NeurIPS 2024), CC BY-SA 4.0. It was used only for final evaluation.