💬 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.