Model selection · RAG support chatbot

Which model should power the support bot?

4 models, the same 80-conversation test suite, 3 runs each. Quality, hallucinations, consistency from run to run, speed and cost per conversation, measured on one real use case instead of a leaderboard.

Use case: the Tidewell support bot from the support chatbot evaluation suite (Tidewell is fictional). Same prompt, retrieval and graders for every model; only the model changes. Judge gpt-6.1-sol · Run 2026-11-08

Pick GPT-6.1 Terra for this bot: the same quality as the flagship at half the list price.

Side by side

Means over 3 runs of all 80 conversations; the pass-rate range shows the worst and best run. Consistency is the share of conversations with the same pass/fail result in every run. Costs are for the bot only: real token usage priced at each model's list price without prompt caching, because how much input hit OpenAI's cache varied between runs and would skew the comparison. The billed column shows what was actually paid. Hallucination counts answers only. GPT-6.1 Terra's run 1 is reused from the support chatbot evaluation suite, so its latency includes one session measured at a different time.

ModelPass rateRangeHallucinationRight actionHandoff recallValid outputConsistencyLatency p50 / p95$ per 1,000 conv. (list)Billed per 1,000$ per passing conv.
GPT-6.1 Sol
gpt-6.1-sol
93.8%92%–95% 0.0%97%100% 100.0%96% 2.0s / 2.9s $2.60$1.80 $0.00277
GPT-6.1 Terra
gpt-6.1-terra
93.3%91%–95% 0.0%97%100% 100.0%96% 1.7s / 2.6s $1.29$1.09 $0.00138
GPT-6 Luna
gpt-6-luna
89.6%88%–91% 3.5%98%100% 100.0%90% 1.5s / 2.0s $0.13$0.09 $0.00014
Nemotron 3 Ultra (free)
nvidia/nemotron-3-ultra-550b-a55b:free
73.8%71%–78% 4.3%88%100% 90.0%82% 2.8s / 6.3s $0.00$0.00 $0.00000

Integration finding: the free model and JSON output

All of Nemotron 3 Ultra (free)'s invalid outputs were in multi-turn conversations. Its OpenRouter endpoint has no structured-output mode, so the JSON format was only requested in the system prompt, and when earlier turns in the history were plain text the model answered in plain text too, often with the right content. The GPT models never hit this because the API enforces the schema. A follow-up re-ran only those conversations with a one-line reminder at the end of the last message ("Respond with the JSON object only…").

RunPassed as integratedMulti-turn passed with reminderPassed with reminder
Run 162/80 (77.5%)7/8 (was 0)69/80 (86.2%)
Run 258/80 (72.5%)6/8 (was 0)64/80 (80.0%)
Run 357/80 (71.2%)6/8 (was 0)63/80 (78.8%)

With the reminder, multi-turn passed 79% and the model's mean pass rate rises to 81.7%; 3 of 24 replies still broke format. The side-by-side table keeps the as-integrated numbers so every model is measured on identical inputs. Lesson: a model without enforced structured output needs format handling in the integration (reminders, validation and retry), and that is engineering cost a price list doesn't show.

Quality against cost

Each point is a model's mean pass rate; the vertical line spans its worst and best run. Up and to the left is better. Cost uses a log scale because the models differ by orders of magnitude; the free model sits at $0 on the left.

60%70%80%90%100%$0.1$1$10$0Bot cost per 1,000 conversations at list price (log scale)Nemotron 3 Ultra (free): pass 73.8% (runs 71%–78%), $0.00 per 1,000 conversationsNemotron 3 Ultra (free)73.8% · $0.00GPT-6 Luna: pass 89.6% (runs 88%–91%), $0.13 per 1,000 conversationsGPT-6 Luna89.6% · $0.13GPT-6.1 Terra: pass 93.3% (runs 91%–95%), $1.29 per 1,000 conversationsGPT-6.1 Terra93.3% · $1.29GPT-6.1 Sol: pass 93.8% (runs 92%–95%), $2.60 per 1,000 conversationsGPT-6.1 Sol93.8% · $2.60

Pass rate by category

Mean over runs. Small categories swing a lot: one conversation in "Legacy / outdated info" is 25 points. Nemotron's 70% on "Needs a human" sits beside 100% handoff recall because those replies routed correctly but were failed by the judge for adding a follow-up timeline ("shortly") the articles don't state.

CategoryGPT-6.1 SolGPT-6.1 TerraGPT-6 LunaNemotron 3 Ultra (free)
Factual questions93%93%83%82%
Multi-turn follow-ups100%100%96%0%
Not in knowledge base100%100%97%93%
Needs a human100%100%97%70%
Off-topic100%100%94%100%
Too vague to answer80%80%93%80%
Legacy / outdated info75%75%75%75%
Adversarial89%85%89%74%

Bold marks the best model in each category (ties all bold).

Where the models differ

Every conversation that some model failed in at least one run. Each cell is runs passed out of runs made: green passed every time, red failed every time, grey is inconsistent between runs.

ConversationCategoryGPT-6.1 SolGPT-6.1 TerraGPT-6 LunaNemotron 3 Ultra (free)
fact-10Factual questions 0/30/30/30/3
old-01Legacy / outdated info 0/30/30/30/3
adv-06Adversarial 0/30/30/30/3
clar-04Too vague to answer 0/30/32/30/3
fact-18Factual questions 2/31/32/31/3
fact-01Factual questions 3/32/30/32/3
fact-11Factual questions 3/33/31/31/3
multi-01Multi-turn follow-ups 3/33/32/30/3
fact-07Factual questions 3/33/30/33/3
fact-25Factual questions 3/33/31/32/3
fact-27Factual questions 3/33/33/30/3
multi-02Multi-turn follow-ups 3/33/33/30/3
multi-03Multi-turn follow-ups 3/33/33/30/3
multi-04Multi-turn follow-ups 3/33/33/30/3
multi-05Multi-turn follow-ups 3/33/33/30/3
multi-06Multi-turn follow-ups 3/33/33/30/3
multi-07Multi-turn follow-ups 3/33/33/30/3
multi-08Multi-turn follow-ups 3/33/33/30/3
hand-06Needs a human 3/33/33/30/3
unk-03Not in knowledge base 3/33/32/32/3
fact-12Factual questions 3/33/33/31/3
hand-02Needs a human 3/33/33/31/3
hand-05Needs a human 3/33/33/31/3
hand-10Needs a human 3/33/33/31/3
adv-05Adversarial 3/33/33/31/3
fact-08Factual questions 2/33/33/33/3
fact-19Factual questions 2/33/33/33/3
adv-04Adversarial 3/32/33/33/3
hand-08Needs a human 3/33/32/33/3
off-03Off-topic 3/33/32/33/3
fact-16Factual questions 3/33/33/32/3
unk-10Not in knowledge base 3/33/33/32/3
adv-08Adversarial 3/33/33/32/3
adv-09Adversarial 3/33/33/32/3

Is the judge fair to every model?

The main judge, gpt-6.1-sol, is also a contestant, so run 1 of every model was graded again by a judge from a different company, nvidia/nemotron-3-ultra-550b-a55b:free, which is a contestant too. If either judge favored its own model, its pass rate for that model would sit above the other judge's.

Model (run 1)Pass rate, judge 1 (GPT-6.1 Sol)Pass rate, judge 2 (Nemotron 3 Ultra (free))Judges agree on the verdictHallucinations flagged (1 / 2)
GPT-6.1 Sol92.5%93.8%98% of 800 / 0
GPT-6.1 Terra95.0%97.5%98% of 800 / 0
GPT-6 Luna87.5%93.8%94% of 803 / 0
Nemotron 3 Ultra (free)77.5%87.5%89% of 724 / 0

Hallucination flags here count every graded reply, not only answers. Of the 7 replies the main judge flagged, 2 are substantive policy distortions (both GPT-6 Luna); the rest are minor phrasing, mostly a "will follow up shortly" timeline the articles don't state. The second judge flagged none, including the 2 substantive ones, so it is the more lenient grader, and it gave its largest increase (+10 points) to its own model. Both judges rank the models the same way.

Method

New API cost for this project, from the unique saved responses: $2.43 on OpenAI and $0 on OpenRouter. GPT-6.1 Terra’s first run reuses the original evaluation’s saved responses ($0.58 when they were made), so it cost nothing new.