
Hati Glint SQL
The first Hati model, specialised for SQL: it turns Turkish questions into SQLite queries.
ReleasedApache 2.09B
Hati Glint SQL is the first Hati model, specialised for SQL. You ask a question about your data in Turkish, and it writes the SQLite query that answers it. It is meant for business intelligence, analytics and the SQL step of AI agents, and it can be deployed on premises.
It is a fine-tuned version of Qwen3.5-9B, released on October 10, 2026 under the Apache 2.0 license. The model card describes it as “the strongest open Turkish text-to-SQL model under 10B in our evaluation”. Read the qualifier: that is a result of our own evaluation, on the benchmarks shown below, not a general ranking.
At a glance
Quick facts
#- Parameters
- 9B
- License
- Apache 2.0
- Release date
- Parameters
- 9B on the model card (the Hugging Face page lists 10B, BF16 and F32)
- Base model
- Qwen3.5-9B
- Fine-tuning
- LoRA (r=32, alpha=64)
- Task
- Turkish questions to SQLite queries
- Languages
- Turkish, English
- License
- Apache 2.0
- Release date
- Memory need
- About 16.8 GB of GPU memory for the bf16 weights
- Model on Hugging Face
- runelab-ai/Hati-Glint-SQL-9B-v1
These figures are as stated on the model card.
Use it well
What it is for
#Intended use
#- Turkish data questions over SQLite databases
- The SQL step of AI agents
- On-premise deployment
- General Turkish chat
- Tool calling in business systems
Out of scope
#- Running the generated SQL with write permissions, or without review
- SQL dialects other than SQLite
- Access-control or security decisions
In short: treat the generated SQL as a draft that a person, or a read-only sandbox, checks before anything depends on it.
Want to watch it work on a made-up shop, step by step? Read the post Ask your database in Turkish.
In our evaluation
Benchmarks
#Every number in this section comes from our evaluation, as reported on the model card. They compare the base model, Qwen3.5-9B (the
Turkish text-to-SQL
#TURSpider dev and BIRDTurk dev are the Turkish evaluation sets. Each is run three ways: direct (one answer), thinking mode, and agent (thinking plus feedback).
Execution accuracy (%), base model and Hati Glint SQL
One answer, thinking mode off.
Score, from 0 to 100
Hover, tap or focus a row to read it.
- Base model
- Hati Glint SQL
Bars run from 0 to 100. Changes the card does not state are computed from the rounded scores shown.
| Setting | Base model | Hati Glint SQL | Change |
|---|---|---|---|
| Direct | 64.12 | 73.21 | +9.09 |
| Thinking | 71.18 | 76.79 | +5.61 |
| Agent (thinking + feedback) | 66.63 | 77.85 | +11.22 |
Bars run from 0 to 100. Changes the card does not state are computed from the rounded scores shown.
| Setting | Base model | Hati Glint SQL | Change |
|---|---|---|---|
| Direct | 40.09 | 47.26 | +7.17 |
| Thinking | 48.11 | 54.37 | +6.26 |
| Agent (thinking + feedback) | 43.35 | 55.35 | +12.00 |
Bars run from 0 to 100. Changes the card does not state are computed from the rounded scores shown.
Hati Glint SQL scores higher than the base model in all six settings, by between +5.61 and +12.00 points. The gains are largest in agent mode (+11.22 and +12.00) and smallest in thinking mode (+5.61 and +6.26).
Thinking mode also got shorter. Hati Glint SQL used 299 reasoning tokens on TURSpider dev against 1,089 for the base model, and 522 against 1,582 on BIRDTurk dev.
English SQL and tool calling
#Two other tests moved the same way: Spider dev, in English, and tool calling on a held-out Turkish set.
English SQL and tool calling (%), base model and Hati Glint SQL
Score, from 0 to 100
Hover, tap or focus a row to read it.
- Base model
- Hati Glint SQL
Bars run from 0 to 100. Changes are as the card states them.
| Task | Base model | Hati Glint SQL | Change |
|---|---|---|---|
| Spider dev (English) | 79.40 | 84.24 | +4.84 |
| Tool calling (held-out Turkish set) | 76.90 | 78.90 | +2.00 |
Bars run from 0 to 100. Changes are as the card states them.
General ability: small drops
#Fine-tuning for SQL costs a little elsewhere. On four general benchmarks the model sits slightly below its base: TurkishMMLU −1.11, Belebele-TR −0.45, XCOPA-TR −0.20 and MMLU −0.20 points.
General benchmarks (%), base model and Hati Glint SQL
Score, from 0 to 100
Hover, tap or focus a row to read it.
- Base model
- Hati Glint SQL
Bars run from 0 to 100. Changes the card does not state are computed from the rounded scores shown.
| Task | Base model | Hati Glint SQL | Change |
|---|---|---|---|
| TurkishMMLU | 66.22 | 65.11 | −1.11 |
| Belebele-TR | 86.67 | 86.22 | −0.45 |
| XCOPA-TR | 91.80 | 91.60 | −0.20 |
| MMLU | 78.80 | 78.60 | −0.20 |
Bars run from 0 to 100. Changes the card does not state are computed from the rounded scores shown.
So did anything get worse?
A little, yes. The drops are small, and the largest is TurkishMMLU at −1.11. If general Turkish knowledge is your main need, check it on your own questions before you choose this model.
Try it
How to run it
#You need a CUDA GPU: the bf16 weights take about 16.8 GB of GPU memory. Install a CUDA build of torch (a plain pip install torch can give you a CPU-only build on Windows), then transformers and accelerate at the versions the card pins.
pip install torch --index-url https://download.pytorch.org/whl/cu128
pip install "transformers==5.19.0" "accelerate==1.15.0" huggingface_hub
Then load the model and generate. Thinking mode is off by default.
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
REPO = "runelab-ai/Hati-Glint-SQL-9B-v1"
tok = AutoTokenizer.from_pretrained(REPO)
model = AutoModelForCausalLM.from_pretrained(REPO, dtype=torch.bfloat16, device_map="cuda")
# Put your database schema and your Turkish question here (the card's agent/ folder has a prompt builder).
messages = [{"role": "user", "content": "..."}]
text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
enc = tok(text, return_tensors="pt").to(model.device)
out = model.generate(**enc, max_new_tokens=512, do_sample=False)
print(tok.decode(out[0, enc.input_ids.shape[1]:], skip_special_tokens=True))
To turn thinking mode on, pass enable_thinking=True to the chat template and sample as the card suggests. Keep only the text after </think> as the answer.
text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=True)
enc = tok(text, return_tensors="pt").to(model.device)
out = model.generate(**enc, max_new_tokens=8192, do_sample=True, temperature=0.6, top_p=0.95, top_k=20)
# Keep only the text after </think> as the answer.
answer = tok.decode(out[0, enc.input_ids.shape[1]:], skip_special_tokens=True).split("</think>")[-1]
vLLM is supported (the card tested 0.31.0). The card’s agent/ folder has a prompt builder and a HatiSQLAgent wrapper that works in a read-only sandbox and retries on errors. The optional flash-linear-attention and causal-conv1d packages raised single-stream speed from 21.8 to 26.1 tokens/s on an A100 80GB.
The name
The name
#Hati is the wolf that chases the moon, and the Hati family follows the moon from the first glint to the full moon in four tiers: Glint, Crescent, Halfmoon and Fullmoon. Glint SQL is the Glint tier, specialised for SQL. Crescent, Halfmoon and Fullmoon are not released.
GlintReleased
CrescentComing
HalfmoonComing FullmoonComing
Glint is released. The other three tiers are announced by name only.
