When to Use Which

Decision Guide

Your needBest first choice
Answer from policy docs that change every monthRAG
Always reply in a fixed JSON formatprompting + structured outputs
Use live data (order status, stock)tools / function calling
Classify 5 million tickets a day at very low costfine-tune (or distil into) a small model
Speak in your brand voice consistentlyprompting with examples first; fine-tune if still inconsistent
Domain language the base model does not know (rare Indic dialects, internal codes)fine-tuning, plus RAG for facts

How to Reason About It

The table is easier to remember if you ask four questions about the requirement, in this order:

  1. Is the problem missing knowledge or wrong behaviour? Missing or changing facts point to RAG or tools. Wrong format, tone or task skill points to prompting, then fine-tuning.
  2. How often does the information change? Order status changes every minute (tools), policies every month (RAG), brand voice almost never (prompt or fine-tune).
  3. What is the volume and latency budget? At millions of calls a day, a small specialised model can be 10-40× cheaper than a large general one. At a few thousand calls a day, the engineering cost of training is rarely worth it.
  4. Do you have the data? Fine-tuning needs hundreds to thousands of high-quality, consistent examples, plus an eval set. Without them, any fine-tune is guesswork.

An analogy: if a new cashier keeps quoting old prices, you give them the updated price list (RAG), not a six-week training course (fine-tuning). If they are rude to customers, a price list will not help; that is a behaviour problem.

Example

Example

A small rule-based helper that encodes the guide. Interviewers like this kind of structured reasoning.

def recommend(need):
    picks = []
    if need.get("private_or_changing_data"):
        picks.append("RAG")
    if need.get("live_actions_or_data"):
        picks.append("tools")
    if need.get("strict_format"):
        picks.append("structured outputs")
    if need.get("requests_per_day", 0) > 1_000_000 and need.get("narrow_task"):
        picks.append("fine-tune a small model")
    if need.get("examples", 0) < 500 and "fine-tune a small model" in picks:
        picks.append("(first collect more labelled examples)")
    return picks or ["prompting with few-shot examples"]

cases = {
    "policy Q&A bot":        {"private_or_changing_data": True},
    "order tracking":        {"live_actions_or_data": True, "strict_format": True},
    "ticket intent tagging": {"requests_per_day": 3_000_000, "narrow_task": True, "examples": 200},
    "product title rewrite": {},
}
for name, need in cases.items():
    print(f"{name:22} -> {', '.join(recommend(need))}")

Output

policy Q&A bot         -> RAG
order tracking         -> tools, structured outputs
ticket intent tagging  -> fine-tune a small model, (first collect more labelled examples)
product title rewrite  -> prompting with few-shot examples

The intent-tagging case shows the important nuance: the volume justifies a fine-tuned small model, but 200 examples is not enough, so the helper says to collect data first. The product title case has no special need, so plain prompting wins.

Note: Common mistake: choosing fine-tuning first because it sounds more advanced in an interview or a pitch. Interviewers are usually checking whether you would start with the cheapest approach that meets the eval target and justify each step up with numbers.

Exercise

Exercise: Duolingo-style app: the bot must explain grammar mistakes in Hinglish, in a friendly fixed tone, for 2 lakh learners a day. Which approach would you start with, and what would make you switch?

Show answer
Start with prompting: a system prompt describing the tone + 5-10 few-shot examples in Hinglish,
plus an eval set of ~100 learner sentences graded by teachers.
Switch to fine-tuning (or distillation into a smaller model) only if
  - the tone stays inconsistent on the eval set, or
  - cost/latency at 2 lakh users/day is too high with a large model.
Grammar rules themselves can come from RAG over a curated grammar guide.

Summary

  • First ask: missing knowledge or wrong behaviour?
  • Change frequency decides between tools (live), RAG (changing) and weights (stable).
  • Volume and latency can justify a small fine-tuned or distilled model.
  • No good dataset, no fine-tuning.