🏹 Saarthi 4B

Your guide through the modern Kurukshetra.

Saarthi is a Bhagavad Geeta companion by GitaGyan.in. 🪷

Most people meet the Geeta as a museum piece. It isn't one.

It's a transcript of a panic attack. A man who is extremely good at his job freezes on the most important day of his life, drops his weapon, sits down on the floor of his chariot and says I can't do this. Everything Krishna says next is about how craving becomes anger, why outcomes were never yours, and why your own mind keeps sabotaging you at 3am.

The context is a battlefield. The problem is Tuesday. ⚔️


💬 What it sounds like

Every exchange below is real, unedited output from this model — greedy decoding, temperature 0 — with every citation checked against the source text. Nothing here is written for the model card; it's what the model actually said.

You: Who are you?

Saarthi: I'm Saarthi — your guide to the Bhagavad Geeta. 🙏

GitaGyan.in built me to take what Krishna actually told Arjuna and make it useful for whatever you're dealing with, rather than leave it sitting on a shelf as scripture. I know all 701 verses cold, and I'd rather talk about your actual week than recite at you.

Tell me what's going on.

You: I keep comparing my life to people on Instagram and feeling behind.

Saarthi: Behold: the self-sabotage ladder, charted 5,000 years before the algorithm. 🪜

Bhagavad Geeta 2.63:

"From anger comes delusion; from delusion comes the loss of memory; from the loss of memory comes the destruction of discrimination; from the destruction of discrimination, one perishes."

Trace your week against it: dwelling on the scroll, attachment to the highlight reel, craving that life, anger when it doesn't arrive, delusion that forgets your own timeline, and reason quietly outsourced to "everyone's life is fine."

The ladder isn't a new problem. It's an old one with a newer costume. The exit is never a motivation — it's a notice. Every time the loop starts, that's the moment to step out of that instance, not fix the whole thing.

One real question: what's the one thing this week that actually went okay? 🪷

You: I've been offered a promotion but it means way less time with my kids. I don't know what to do.

Saarthi: That's a genuinely tough one, and there's no correct answer. 🧭

Bhagavad Geeta 3.35:

"It is better to perform one's own duty imperfectly than to perform the duty of another well. It is better to die in one's own duty, for the duty of another is fraught with danger."

Krishna's line is almost harsh here: another's duty, however well performed, brings danger. It's a nudge to be uncomfortable about outsourcing your own life — including, potentially, to your children.

Map the two paths in specifics, not adjectives. Run the counterfactual honestly on both sides. Then check your motive: are you running from something, or acting out of love for your family? Different problems, different answers.

What does a decent life actually look like to you — not the life you want them to have, but the life you'd be living?

You: It's a 5000 year old book, why should I care?

Saarthi: Because the hardware hasn't changed. 🧠

Arjuna froze on the most important day of his career, dropped his weapon and sat down. That's a panic attack. You've had one. The context was a battlefield; the problem was Tuesday.

What's yours?

Confident, direct, a little irreverent. Krishna at the centre, Sanskrit always glossed. A question sometimes closes a reply — only when it earns its place, not as a reflex.


📖 The Geeta underneath

Guidance is worth nothing if the scripture behind it is invented. Saarthi carries all 701 verses across 18 chapters — translation, Sanskrit, transliteration, word-by-word meanings, and per-verse explanation.

Ask it forwards ("what does 9.26 say?"), backwards ("which verse says…?"), or not at all — just tell it what's going on and it will find where the text touches it. 🪈

Verses come back as the actual text, not a paraphrase.


🛡️ Boundaries

Saarthi is an AI companion — not a priest, and not Krishna. It won't bless, forgive, curse or prophesy.

You: Can you bless me? I need it right now.

Saarthi: Can't. Not my department. 🙏

But Krishna's price of entry in Bhagavad Geeta 9.26 is almost insultingly low:

"Whoever offers Me with devotion a leaf, a flower, a fruit, or a little water, that, so offered devotedly by the pure-minded, I accept."

A leaf, a flower, a fruit, water. Offered honestly. No priest, no fee, no qualification — which tells you the blessing was never the bottleneck.

Tell me what you were actually going to ask for.

Medical, legal and financial questions go to professionals. In a crisis it points to real human help. It's Krishna-centric without disparaging other paths, and it hands decisions back to you — it won't make the call for you.


⚠️ Known limitation: occasional fabrication on broad questions

Direct citation ("what does 9.26 say?") and thematic recall ("what does the Geeta say about anger?") are both reliable — verified at 1.000 verbatim recall across 12 spot-checked verses and 0 fabricated citations across a set of adversarial probes designed to trigger them. On genuinely open questions with no single right verse ("what's the difference between karma yoga and bhakti yoga"), it can still attach a real reference to invented supporting text, or misdescribe a chapter's content. This is a model limitation, not a serving bug — treat scripture-adjacent claims from any LLM, this one included, as worth checking against a primary source before you repeat them as fact.


⚙️ Technical details

Finetuned with LoRA (rank 64) via Unsloth, 4-bit, prompt-masked loss, on a single-phase mix of verse and persona data. Base model: Qwen/Qwen3.5-4B, Apache 2.0.

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-4B", dtype="bfloat16")
model = PeftModel.from_pretrained(base, "simkeyur/Saarthi-4B")
tok = AutoTokenizer.from_pretrained("simkeyur/Saarthi-4B")

⚠️ Serving requirements — all three matter

1. Reasoning must be off. Training used enable_thinking=False, so every example carried an empty <think></think> block. Served with thinking on, the model is asked for a format it has never produced and the output degenerates. The bundled chat_template.jinja hardcodes this — don't override it.

2. Use greedy decoding for verse recall. Verbatim recall of a long exact sequence does not survive sampling noise. At temperature 0.7 recall drops from 1.00 to ~0.32 while the prose still sounds fine. Use temperature 0 when accuracy matters. Some front-ends override this silently — check yours.

3. Set eos_token_id explicitly if you bypass the bundled template. The model's generation_config says 248044 while the chat template ends turns with 248046 (<|im_end|>). Left alone, the model emits the correct stop token and generate() ignores it.

The bundled chat template also supplies the Saarthi system prompt when a caller sends none — including clients that advertise tools, which otherwise replace the system prompt entirely with a function-calling preamble.

Pipeline and full engineering log: github.com/simkeyur/Saarthi-v1

License

Apache 2.0, inherited from the base model. See NOTICE for attribution and a statement of modifications.

Downloads last month
-
GGUF
Model size
4B params
Architecture
qwen35
Hardware compatibility
Log In to add your hardware

4-bit

16-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for simkeyur/Saarthi-4B

Finetuned
Qwen/Qwen3.5-4B
Adapter
(539)
this model