Agora 9B (GGUF)
Agora is a 9B multilingual assistant for European languages with an opt-in thinking mode and tool calling. It is
the GGUF build of birgermoell/oellm-9b-256k-stage5-w2-rl-step160:
the OpenEuroLLM 9B base model after instruct, reasoning and tool-use SFT, DPO, a weight merge and two reinforcement
learning windows. The name comes from the agora, the square where people in ancient Greek cities met to talk and reason.
Research preview: good for trying European-language chat, step-by-step reasoning and tool use locally; not evaluated for deployment. See the full model card for lineage, training data, licences and every evaluation.
Run it
Ollama (the chat template, thinking switch, tool format and sampling settings come from this repo):
ollama run hf.co/birgermoell/agora-9b-GGUF:Q6_K # recommended
ollama run hf.co/birgermoell/agora-9b-GGUF:Q6_K --think # thinking mode: reason first, then answer
ollama run hf.co/birgermoell/agora-9b-GGUF:Q4_K_M # smaller
In the Ollama app, pick the model and use the thinking toggle. Ollama turns thinking on by default for models that support it; switch it off for short, direct answers.
llama.cpp:
llama-server -hf birgermoell/agora-9b-GGUF:Q6_K --jinja --chat-template-file chat_template.jinja \
--reasoning-format deepseek -c 32768
# thinking mode per request: "chat_template_kwargs": {"enable_thinking": true}
Use the chat_template.jinja from this repo (the training template without its training-only generation markers).
| File | Quantization | Size | Notes |
|---|---|---|---|
agora-9b-Q4_K_M.gguf |
Q4_K_M | 5.7 GB | fits 8 GB of memory |
agora-9b-Q6_K.gguf |
Q6_K | 7.5 GB | recommended, close to full quality |
agora-9b-Q8_0.gguf |
Q8_0 | 9.7 GB | near-lossless |
Converted with llama.cpp (convert_hf_to_gguf.py, commit a7af149) from the bf16 checkpoint. The tokenizer was
checked token by token against the training tokenizer on rendered chat prompts (direct and thinking mode, tools,
Swedish, Greek, Polish and Finnish text): 7/7 identical. Two settings differ from llama.cpp's defaults for this
tokenizer type and are set in the files: no <bos> token (training sequences start with <|im_start|>) and no
leading-space prefix.
What it is good at
| Agora 9B | for comparison | |
|---|---|---|
| Math word problems, thinking mode (quick reasoning eval, 570 items) | 0.63 | before RL 0.44 |
| Chat capabilities in 36 European languages (EUROPA Eval) | 0.73 | Apertus-8B-Instruct 0.57 |
| Safety and behaviour (EUROPA Alignment) | 0.72 | tool-use SFT 0.64 |
| Tool calling: right call or no call / valid arguments (361 held-out conversations) | 0.89 / 0.97 | |
| Code, HumanEval+ / MBPP+ (direct mode) | 0.39 / 0.37 | |
| Facts about European people, places and works (EU factual QA) | 0.28 | Qwen3-8B 0.16 |
Scores are from the full-precision model, greedy decoding (details and all other numbers in the full model card).
Known weaknesses: it rarely says "I don't know" (check names, dates and places); multi-step arithmetic over documents and tables is weak; refusal calibration is low; reasoning traces are mostly in English even when the answer is in another language.
Prompt format
ChatML with Qwen3/Hermes-style tools: <|im_start|>{role}\n{content}<|im_end|>\n. Thinking mode opens <think>\n at
the start of the assistant turn and the model closes it with </think> before the answer. Tools are listed in the
system turn inside <tools>…</tools>; the model calls them as
<tool_call>\n{"name": …, "arguments": {…}}\n</tool_call>, and results come back as <tool_response> blocks in a
user turn.
Licence and credits
Apache-2.0, like the base model. Built on the OpenEuroLLM 9B base model; post-training data licences and credits are listed in the full model card. Compute: EuroHPC JU / CINECA Leonardo. Code: qwen35-posttrain, oellm-rlvr.