🌲 Sarv-Reasoning
The always-reasoning member of the Sarv family, built on Strawberry-1 and specialized entirely around visible chain-of-thought for Persian poem generation.
Model Description
Sarv-Reasoning always populates the Harmony analysis channel before producing a poem in final. Unlike sarv-hybrid/sarv-hybrid-pro, reasoning is not learned as an optional behavior — every generation is expected to reason first, making this the model to use when you specifically want to inspect, log, or steer the model's thought process about meter (vazn), rhyme (qafiyeh), refrain (radif), imagery, and emotional arc before the poem itself is written.
- Base model: artindnr/strawberry-1 (
gpt_oss21B, MXFP4) - Fine-tuning method: LoRA, merged into base weights for release
- Reasoning behavior: always-on —
analysischannel is populated on every generation - Specialization: reasoning-driven Persian poem generation and poem analysis
- Language: Persian (fa)
All training examples retain the analysis channel; no non-reasoning examples were included, in contrast to sarv-hybrid/sarv-hybrid-pro.
Training Procedure
Single-stage SFT of Strawberry-1 exclusively on reasoning-annotated data, reinforcing consistent analysis-then-final output structure. Adapters were merged into base weights and exported in BF16 and MXFP4.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "artindnr/sarv-reasoning"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
messages = [
{"role": "user", "content": "غزلی حافظانه دربارهی امید بنویس و دلیل انتخاب وزن و قافیه را هم بگو"}
]
inputs = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt"
).to(model.device)
outputs = model.generate(inputs, max_new_tokens=1536)
full = tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=False)
# Split Harmony channels
analysis, final = full.split("<|channel|>final<|message|>", 1) if "<|channel|>final<|message|>" in full else (None, full)
Because reasoning is always present, expect longer generations and higher latency than sarv-non-reasoning; budget max_new_tokens accordingly.
Intended Use
- Poem generation where the reasoning behind structural/stylistic choices should be inspectable or logged
- Poem analysis and critique tasks (explaining meter, rhyme scheme, imagery of a given poem), leveraging the same reasoning capability
- Research/interpretability work on Persian reasoning traces
- Not recommended where latency is critical — use
sarv-non-reasoningor letsarv-hybrid/sarv-hybrid-prodecide
Limitations
- Always reasons, even for trivial requests, increasing latency and token cost
- Reasoning trace reflects the model's learned justification pattern, not a guaranteed accurate account of its internal computation
- Inherits Strawberry-1/
gpt_ossbase limitations
License
Apache 2.0, consistent with the base gpt_oss license chain.
Citation
If you use this model, please cite the Sarv and Strawberry-1 model cards on Hugging Face (artindnr).
- Downloads last month
- -
