๐ง The Evolution of LLMs
LLMs have evolved in stages based on the tasks they were trained to perform.
The progression looks like this:

๐ฆ Base Models โ Just Predicts Text
A Base Model is the most fundamental type of language model. A base model does one thing only:
Predict the most likely next word
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Base Model โ Next Word Prediction</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,600&family=Inter:wght@500;600;700&family=JetBrains+Mono:wght@500;600&display=swap" rel="stylesheet">
<style>
html, body { margin: 0; padding: 0; }
.infographic-nextword {
--ink: #1a1a1a;
--ink-soft: #5c5c5c;
--paper: #ffffff;
--paper-alt: #f0ece4;
--accent: #2563eb;
--accent-soft:#e3ebfd;
--line: #ddd6c9;
--radius: 10px;
--display-font: 'Newsreader', serif;
--body-font: 'Inter', system-ui, sans-serif;
--mono-font: 'JetBrains Mono', monospace;
box-sizing: border-box;
max-width: 640px;
margin: 0 auto;
padding: 2rem 1.5rem 2.25rem;
font-family: var(--body-font);
color: var(--ink);
background: var(--paper);
}
.infographic-nextword[data-theme="dark"] {
--ink: #e8e6e1;
--ink-soft: #9a968c;
--paper: #13171F;
--paper-alt: #1e1e26;
--accent: #5b8def;
--accent-soft:#202942;
--line: #2c313d;
}
.infographic-nextword * { box-sizing: border-box; }
.infographic-nextword .nw-title {
font-family: var(--display-font); font-weight: 600; font-size: 1.2rem; text-align: center; margin: 0 0 1.5rem;
}
.infographic-nextword .nw-controls { display: flex; justify-content: center; gap: 0.5rem; margin-bottom: 1.75rem; }
.infographic-nextword .nw-btn {
display: flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 50%;
border: 1px solid var(--line); background: var(--paper); color: var(--ink); cursor: pointer;
box-shadow: 0 2px 6px rgba(0,0,0,0.06);
}
.infographic-nextword .nw-btn:hover { border-color: var(--accent); color: var(--accent); }
.infographic-nextword .nw-btn svg { width: 16px; height: 16px; }
.infographic-nextword .nw-sentence {
display: flex; justify-content: center; align-items: center; gap: 0.5rem; flex-wrap: wrap;
font-family: var(--mono-font); font-size: 1.3rem; font-weight: 600; color: var(--ink);
padding: 1rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper-alt);
margin-bottom: 2.5rem; min-height: 3em;
}
.infographic-nextword .nw-user-bubble {
background: var(--accent); color: #fff; padding: 0.35rem 0.85rem; border-radius: 999px 999px 999px 4px;
font-size: 1.15rem;
}
.infographic-nextword .nw-slot { position: relative; display: inline-flex; align-items: center; min-width: 3ch; justify-content: center; }
.infographic-nextword .nw-blank {
display: inline-block; min-width: 2.6ch; border-bottom: 2px dashed var(--ink-soft); opacity: 0; text-align: center;
}
.infographic-nextword .nw-word {
position: absolute; left: 0; right: 0; text-align: center; color: var(--accent); opacity: 0;
}
.infographic-nextword.is-playing .nw-blank[data-slot="1"] { animation: nwBlank1 12s ease-in-out infinite; }
.infographic-nextword.is-playing .nw-blank[data-slot="2"] { animation: nwBlank2 12s ease-in-out infinite; }
.infographic-nextword.is-playing .nw-blank[data-slot="3"] { animation: nwBlank3 12s ease-in-out infinite; }
.infographic-nextword.is-playing .nw-word[data-slot="1"] { animation: nwWord1 12s ease-in-out infinite; }
.infographic-nextword.is-playing .nw-word[data-slot="2"] { animation: nwWord2 12s ease-in-out infinite; }
.infographic-nextword.is-playing .nw-word[data-slot="3"] { animation: nwWord3 12s ease-in-out infinite; }
@keyframes nwBlank1 { 0%{opacity:0;} 1%,24%{opacity:1;} 26%,100%{opacity:0;} }
@keyframes nwBlank2 { 0%,34%{opacity:0;} 35%,57%{opacity:1;} 59%,100%{opacity:0;} }
@keyframes nwBlank3 { 0%,67%{opacity:0;} 68%,90%{opacity:1;} 92%,100%{opacity:0;} }
@keyframes nwWord1 { 0%,25%{opacity:0; transform:translateY(4px);} 28%,96%{opacity:1; transform:translateY(0);} 99%,100%{opacity:0;} }
@keyframes nwWord2 { 0%,58%{opacity:0; transform:translateY(4px);} 61%,96%{opacity:1; transform:translateY(0);} 99%,100%{opacity:0;} }
@keyframes nwWord3 { 0%,91%{opacity:0; transform:translateY(4px);} 94%,96%{opacity:1; transform:translateY(0);} 99%,100%{opacity:0;} }
.infographic-nextword .nw-stage { position: relative; height: 300px; margin-bottom: 0.5rem; }
.infographic-nextword .nw-model {
position: absolute; left: 50%; bottom: 0; transform: translateX(-50%);
width: 70px; height: 70px; border-radius: 50%; background: var(--accent-soft); color: var(--accent);
display: flex; align-items: center; justify-content: center; box-shadow: 0 3px 10px rgba(37,99,235,0.15); z-index: 3;
}
.infographic-nextword[data-theme="dark"] .nw-model { box-shadow: 0 3px 10px rgba(0,0,0,0.35); }
.infographic-nextword .nw-model svg { width: 32px; height: 32px; }
.infographic-nextword.is-playing .nw-model { animation: nwModelPulse 12s ease-in-out infinite; }
@keyframes nwModelPulse {
0%,2% { box-shadow: 0 3px 10px rgba(37,99,235,0.15); }
4%,95% { box-shadow: 0 0 0 10px var(--accent-soft); }
97%,100% { box-shadow: 0 3px 10px rgba(37,99,235,0.15); }
}
.infographic-nextword .nw-inbit {
position: absolute; left: 50%; bottom: 270px; width: 8px; height: 8px; border-radius: 50%;
background: var(--ink-soft); transform: translateX(-50%); opacity: 0; z-index: 4;
}
.infographic-nextword.is-playing .nw-inbit { animation: nwInbit 12s ease-in-out infinite; }
@keyframes nwInbit {
0% { opacity: 0; bottom: 270px; }
2% { opacity: 1; }
10% { opacity: 1; bottom: 74px; }
12%,33% { opacity: 0; bottom: 74px; }
35% { opacity: 1; bottom: 270px; }
43% { opacity: 1; bottom: 74px; }
45%,66% { opacity: 0; bottom: 74px; }
68% { opacity: 1; bottom: 270px; }
76% { opacity: 1; bottom: 74px; }
78%,100% { opacity: 0; bottom: 74px; }
}
.infographic-nextword .nw-bars-area { position: absolute; left: 50%; bottom: 100px; transform: translateX(-50%); width: 280px; height: 170px; }
.infographic-nextword .nw-round { position: absolute; inset: 0; display: flex; align-items: flex-end; justify-content: center; gap: 12px; opacity: 0; }
.infographic-nextword.is-playing .nw-round[data-round="1"] { animation: nwRound1 12s ease-in-out infinite; }
.infographic-nextword.is-playing .nw-round[data-round="2"] { animation: nwRound2 12s ease-in-out infinite; }
.infographic-nextword.is-playing .nw-round[data-round="3"] { animation: nwRound3 12s ease-in-out infinite; }
@keyframes nwRound1 { 0%,7%{opacity:0;} 9%,29%{opacity:1;} 31%,100%{opacity:0;} }
@keyframes nwRound2 { 0%,40%{opacity:0;} 42%,62%{opacity:1;} 64%,100%{opacity:0;} }
@keyframes nwRound3 { 0%,73%{opacity:0;} 75%,95%{opacity:1;} 97%,100%{opacity:0;} }
.infographic-nextword .nw-bar-wrap { display: flex; flex-direction: column; align-items: center; gap: 0.4rem; width: 58px; }
.infographic-nextword .nw-bar-word {
font-family: var(--mono-font); font-size: 0.75rem; font-weight: 600; color: var(--ink-soft);
opacity: 0; transform: translateY(6px); white-space: nowrap;
}
.infographic-nextword .nw-bar {
width: 100%; border-radius: 5px 5px 0 0; background: var(--line); height: 0;
}
.infographic-nextword .nw-bar-wrap.nw-top .nw-bar { background: var(--accent); }
.infographic-nextword .nw-bar-wrap.nw-top .nw-bar-word { color: var(--accent); font-weight: 700; }
.infographic-nextword.is-playing [data-round="1"] .nw-bar-wrap[data-bar="1"] .nw-bar { animation: nwBarR1B1 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="1"] .nw-bar-wrap[data-bar="2"] .nw-bar { animation: nwBarR1B2 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="1"] .nw-bar-wrap[data-bar="3"] .nw-bar { animation: nwBarR1B3 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="1"] .nw-bar-wrap[data-bar="4"] .nw-bar { animation: nwBarR1B4 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="1"] .nw-bar-word { animation: nwBarWordR1 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="2"] .nw-bar-wrap[data-bar="1"] .nw-bar { animation: nwBarR2B1 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="2"] .nw-bar-wrap[data-bar="2"] .nw-bar { animation: nwBarR2B2 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="2"] .nw-bar-wrap[data-bar="3"] .nw-bar { animation: nwBarR2B3 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="2"] .nw-bar-wrap[data-bar="4"] .nw-bar { animation: nwBarR2B4 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="2"] .nw-bar-word { animation: nwBarWordR2 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="3"] .nw-bar-wrap[data-bar="1"] .nw-bar { animation: nwBarR3B1 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="3"] .nw-bar-wrap[data-bar="2"] .nw-bar { animation: nwBarR3B2 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="3"] .nw-bar-wrap[data-bar="3"] .nw-bar { animation: nwBarR3B3 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="3"] .nw-bar-wrap[data-bar="4"] .nw-bar { animation: nwBarR3B4 12s ease-in-out infinite; }
.infographic-nextword.is-playing [data-round="3"] .nw-bar-word { animation: nwBarWordR3 12s ease-in-out infinite; }
/* Round 1: bars grow 8%-20%(of full timeline), hold to 24%, shrink 25%-29% */
@keyframes nwBarR1B1 { 0%,8%{height:0;} 20%,24%{height:165px;} 29%,100%{height:0;} }
@keyframes nwBarR1B2 { 0%,10%{height:0;} 22%,24%{height:95px;} 29%,100%{height:0;} }
@keyframes nwBarR1B3 { 0%,9%{height:0;} 21%,24%{height:78px;} 29%,100%{height:0;} }
@keyframes nwBarR1B4 { 0%,11%{height:0;} 23%,24%{height:52px;} 29%,100%{height:0;} }
@keyframes nwBarWordR1 { 0%,9%{opacity:0; transform:translateY(6px);} 22%,24%{opacity:1; transform:translateY(0);} 29%,100%{opacity:0;} }
/* Round 2: shifted +33% */
@keyframes nwBarR2B1 { 0%,41%{height:0;} 53%,57%{height:165px;} 62%,100%{height:0;} }
@keyframes nwBarR2B2 { 0%,43%{height:0;} 55%,57%{height:95px;} 62%,100%{height:0;} }
@keyframes nwBarR2B3 { 0%,42%{height:0;} 54%,57%{height:78px;} 62%,100%{height:0;} }
@keyframes nwBarR2B4 { 0%,44%{height:0;} 56%,57%{height:52px;} 62%,100%{height:0;} }
@keyframes nwBarWordR2 { 0%,42%{opacity:0; transform:translateY(6px);} 55%,57%{opacity:1; transform:translateY(0);} 62%,100%{opacity:0;} }
/* Round 3: shifted +66% */
@keyframes nwBarR3B1 { 0%,74%{height:0;} 86%,90%{height:165px;} 95%,100%{height:0;} }
@keyframes nwBarR3B2 { 0%,76%{height:0;} 88%,90%{height:95px;} 95%,100%{height:0;} }
@keyframes nwBarR3B3 { 0%,75%{height:0;} 87%,90%{height:78px;} 95%,100%{height:0;} }
@keyframes nwBarR3B4 { 0%,77%{height:0;} 89%,90%{height:52px;} 95%,100%{height:0;} }
@keyframes nwBarWordR3 { 0%,75%{opacity:0; transform:translateY(6px);} 88%,90%{opacity:1; transform:translateY(0);} 95%,100%{opacity:0;} }
@media (prefers-reduced-motion: reduce) {
.infographic-nextword * { animation: none !important; }
}
</style>
</head>
<body>
<div class="infographic-nextword" id="nextwordRoot">
<h1 class="nw-title">How a Base Model Predicts</h1>
<div class="nw-controls">
<button class="nw-btn" id="nwPlayBtn" aria-label="Play">
<svg id="nwPlayIcon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="6 3 20 12 6 21 6 3"/></svg>
<svg id="nwPauseIcon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:none"><rect x="6" y="4" width="4" height="16" rx="1"/><rect x="14" y="4" width="4" height="16" rx="1"/></svg>
</button>
<button class="nw-btn" id="nwRestartBtn" aria-label="Restart">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/><path d="M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16"/><path d="M16 16h5v5"/></svg>
</button>
</div>
<div class="nw-sentence">
<span class="nw-user-bubble">Hello</span>
<span class="nw-slot">
<span class="nw-blank" data-slot="1">___</span>
<span class="nw-word" data-slot="1">how</span>
</span>
<span class="nw-slot">
<span class="nw-blank" data-slot="2">___</span>
<span class="nw-word" data-slot="2">are</span>
</span>
<span class="nw-slot">
<span class="nw-blank" data-slot="3">___</span>
<span class="nw-word" data-slot="3">you?</span>
</span>
</div>
<div class="nw-stage">
<div class="nw-inbit"></div>
<div class="nw-bars-area">
<div class="nw-round" data-round="1">
<div class="nw-bar-wrap nw-top" data-bar="1"><span class="nw-bar-word">how</span><div class="nw-bar"></div></div>
<div class="nw-bar-wrap" data-bar="2"><span class="nw-bar-word">there</span><div class="nw-bar"></div></div>
<div class="nw-bar-wrap" data-bar="3"><span class="nw-bar-word">I'm</span><div class="nw-bar"></div></div>
<div class="nw-bar-wrap" data-bar="4"><span class="nw-bar-word">friend</span><div class="nw-bar"></div></div>
</div>
<div class="nw-round" data-round="2">
<div class="nw-bar-wrap nw-top" data-bar="1"><span class="nw-bar-word">are</span><div class="nw-bar"></div></div>
<div class="nw-bar-wrap" data-bar="2"><span class="nw-bar-word">is</span><div class="nw-bar"></div></div>
<div class="nw-bar-wrap" data-bar="3"><span class="nw-bar-word">about</span><div class="nw-bar"></div></div>
<div class="nw-bar-wrap" data-bar="4"><span class="nw-bar-word">do</span><div class="nw-bar"></div></div>
</div>
<div class="nw-round" data-round="3">
<div class="nw-bar-wrap nw-top" data-bar="1"><span class="nw-bar-word">you?</span><div class="nw-bar"></div></div>
<div class="nw-bar-wrap" data-bar="2"><span class="nw-bar-word">things</span><div class="nw-bar"></div></div>
<div class="nw-bar-wrap" data-bar="3"><span class="nw-bar-word">your</span><div class="nw-bar"></div></div>
<div class="nw-bar-wrap" data-bar="4"><span class="nw-bar-word">doing</span><div class="nw-bar"></div></div>
</div>
</div>
<div class="nw-model">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20v2"/><path d="M12 2v2"/><path d="M17 20v2"/><path d="M17 2v2"/><path d="M2 12h2"/><path d="M2 17h2"/><path d="M2 7h2"/><path d="M20 12h2"/><path d="M20 17h2"/><path d="M20 7h2"/><path d="M7 20v2"/><path d="M7 2v2"/><rect x="4" y="4" width="16" height="16" rx="2"/><rect x="8" y="8" width="8" height="8" rx="1"/></svg>
</div>
</div>
</div>
<script>
(function () {
var wrapper = document.getElementById('nextwordRoot');
var bodyAttr = document.body.getAttribute('data-darkmode');
var dark;
if (bodyAttr === 'true') { dark = true; }
else if (bodyAttr === 'false') { dark = false; }
else {
var match = document.cookie.match(/(?:^|;\s*)darkMode=([^;]+)/);
dark = match ? match[1] === 'true' : false;
}
if (dark) wrapper.setAttribute('data-theme', 'dark');
var playBtn = document.getElementById('nwPlayBtn');
var restartBtn = document.getElementById('nwRestartBtn');
var playIcon = document.getElementById('nwPlayIcon');
var pauseIcon = document.getElementById('nwPauseIcon');
var playing = false;
function setPlaying(state) {
playing = state;
wrapper.classList.toggle('is-playing', playing);
playIcon.style.display = playing ? 'none' : '';
pauseIcon.style.display = playing ? '' : 'none';
}
playBtn.addEventListener('click', function () { setPlaying(!playing); });
restartBtn.addEventListener('click', function () {
wrapper.classList.remove('is-playing');
void wrapper.offsetWidth;
var animated = wrapper.querySelectorAll('.nw-word, .nw-blank, .nw-model, .nw-inbit, .nw-bar, .nw-bar-word, .nw-round');
animated.forEach(function (el) {
el.style.animation = 'none';
void el.offsetWidth;
el.style.animation = '';
});
setPlaying(true);
});
})();
</script>
</body>
</html>That's all it does. It doesn't:
โ Hold conversations naturally
โ Follow instructions
โ Think step-by-step
โ Reason deeply
Think of it like ๐ฑ phone keyboard suggestions โ just smarter.
Used for: โ
Fine-tuning โ
Research โ
Building custom models
Not great for normal conversations โ
๐ฌ Chat Models โ Talks Naturally
A chat model is a base model additionally trained to hold conversations, follow instructions, and maintain context.
Trained using conversation patterns:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>What Makes a Chat Model</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,600&family=Inter:wght@500;600;700;800&display=swap" rel="stylesheet">
<style>
html, body { margin: 0; padding: 0; }
.infographic-chatmodel {
--ink: #1a1a1a;
--ink-soft: #5c5c5c;
--paper: #ffffff;
--paper-alt: #f0ece4;
--accent: #2563eb;
--accent-soft:#e3ebfd;
--line: #ddd6c9;
--radius: 10px;
--blue: #1d4fa0;
--green: #1f8a3b;
--green-soft: #e2f5e6;
--display-font: 'Newsreader', serif;
--body-font: 'Inter', system-ui, sans-serif;
box-sizing: border-box;
max-width: 720px;
margin: 0 auto;
padding: 2rem 1.5rem 2.25rem;
font-family: var(--body-font);
color: var(--ink);
background: var(--paper);
}
.infographic-chatmodel[data-theme="dark"] {
--ink: #e8e6e1;
--ink-soft: #9a968c;
--paper: #13171F;
--paper-alt: #1e1e26;
--accent: #5b8def;
--accent-soft:#202942;
--line: #2c313d;
--blue: #6fa2e8;
--green: #5fcf7c;
--green-soft: #16301e;
}
.infographic-chatmodel * { box-sizing: border-box; }
.infographic-chatmodel .cm-title {
font-family: var(--display-font); font-weight: 600; font-size: 1.2rem; text-align: center; margin: 0 0 1.75rem;
}
.infographic-chatmodel .cm-equation {
display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 0.6rem; margin-bottom: 2rem;
}
.infographic-chatmodel .cm-op { font-size: 1.4rem; font-weight: 700; color: var(--ink-soft); flex-shrink: 0; }
.infographic-chatmodel .cm-badge-wrap { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; width: 108px; }
.infographic-chatmodel .cm-badge {
width: 68px; height: 68px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
box-shadow: 0 3px 10px rgba(0,0,0,0.08); background: var(--accent-soft);
}
.infographic-chatmodel .cm-badge svg { width: 32px; height: 32px; }
.infographic-chatmodel .cm-badge.cm-base { background: #e7edf7; }
.infographic-chatmodel .cm-badge.cm-chat { background: var(--green-soft); }
.infographic-chatmodel .cm-label { font-size: 0.78rem; font-weight: 700; text-align: center; }
.infographic-chatmodel .cm-ingredient { cursor: pointer; border: none; background: none; padding: 0; font: inherit; color: inherit; }
.infographic-chatmodel .cm-ingredient .cm-badge { border: 2px solid transparent; transition: border-color 0.15s, transform 0.15s; }
.infographic-chatmodel .cm-ingredient.is-active .cm-badge { border-color: var(--accent); transform: scale(1.05); }
.infographic-chatmodel .cm-ingredient .cm-label { opacity: 0.65; transition: opacity 0.15s; }
.infographic-chatmodel .cm-ingredient.is-active .cm-label { opacity: 1; color: var(--accent); }
.infographic-chatmodel .cm-panel {
border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper-alt);
padding: 1.75rem 1.25rem; min-height: 150px; display: flex; align-items: center; justify-content: center;
}
.infographic-chatmodel .cm-scene { display: none; align-items: center; justify-content: center; gap: 0.6rem; flex-wrap: wrap; width: 100%; }
.infographic-chatmodel .cm-scene.is-active { display: flex; }
/* Conversation scene */
.infographic-chatmodel .cm-turn { display: flex; flex-direction: column; align-items: center; gap: 0.4rem; }
.infographic-chatmodel .cm-turn-icon {
width: 46px; height: 46px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
}
.infographic-chatmodel .cm-turn-icon svg { width: 24px; height: 24px; }
.infographic-chatmodel .cm-turn-icon.cm-user { background: var(--accent-soft); color: var(--accent); }
.infographic-chatmodel .cm-turn-icon.cm-assistant { background: var(--ink); color: var(--paper); }
.infographic-chatmodel[data-theme="dark"] .cm-turn-icon.cm-assistant { background: var(--accent); }
.infographic-chatmodel .cm-turn-label { font-size: 0.7rem; font-weight: 600; color: var(--ink-soft); }
.infographic-chatmodel .cm-turn-arrow { color: var(--ink-soft); flex-shrink: 0; }
.infographic-chatmodel .cm-turn-arrow svg { width: 16px; height: 16px; }
/* RLHF scene */
.infographic-chatmodel .cm-response { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; width: 130px; }
.infographic-chatmodel .cm-response-bubble {
width: 100%; padding: 0.7rem 0.5rem; border-radius: 12px; border: 1px solid var(--line); background: var(--paper);
text-align: center; font-size: 0.72rem; color: var(--ink-soft); position: relative;
}
.infographic-chatmodel .cm-response.cm-winner .cm-response-bubble { border-color: var(--accent); background: var(--accent-soft); color: var(--ink); }
.infographic-chatmodel .cm-response.cm-loser .cm-response-bubble { opacity: 0.55; }
.infographic-chatmodel .cm-verdict { width: 26px; height: 26px; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.infographic-chatmodel .cm-verdict svg { width: 15px; height: 15px; }
.infographic-chatmodel .cm-response.cm-winner .cm-verdict { background: var(--accent); color: #fff; }
.infographic-chatmodel .cm-response.cm-loser .cm-verdict { background: var(--line); color: var(--ink-soft); }
</style>
</head>
<body>
<div class="infographic-chatmodel" id="chatmodelRoot">
<h1 class="cm-title">What Makes a Chat Model</h1>
<div class="cm-equation">
<div class="cm-badge-wrap">
<div class="cm-badge cm-base">
<svg viewBox="0 0 24 24" fill="none" stroke="var(--blue)" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 18V5" /><path d="M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4" />
<path d="M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5" />
<path d="M17.997 5.125a4 4 0 0 1 2.526 5.77" /><path d="M18 18a4 4 0 0 0 2-7.464" />
<path d="M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517" /><path d="M6 18a4 4 0 0 1-2-7.464" />
<path d="M6.003 5.125a4 4 0 0 0-2.526 5.77" />
</svg>
</div>
<span class="cm-label">Base Model</span>
</div>
<span class="cm-op">+</span>
<button class="cm-badge-wrap cm-ingredient is-active" id="cmBtnConvo" type="button">
<div class="cm-badge">
<svg viewBox="0 0 24 24" fill="none" stroke="var(--accent)" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"/><path d="M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1"/></svg>
</div>
<span class="cm-label">Conversation<br/>Patterns</span>
</button>
<span class="cm-op">+</span>
<button class="cm-badge-wrap cm-ingredient" id="cmBtnRlhf" type="button">
<div class="cm-badge">
<svg viewBox="0 0 24 24" fill="none" stroke="var(--accent)" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v18"/><path d="m19 8 3 8a5 5 0 0 1-6 0zV7"/><path d="M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1"/><path d="m5 8 3 8a5 5 0 0 1-6 0zV7"/><path d="M7 21h10"/></svg>
</div>
<span class="cm-label">RLHF</span>
</button>
<span class="cm-op">=</span>
<div class="cm-badge-wrap">
<div class="cm-badge cm-chat">
<svg viewBox="0 0 24 24" fill="none" stroke="var(--green)" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
<path d="M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z" fill="var(--green)" fill-opacity="0.9" stroke="var(--green)"/>
<circle cx="5.5" cy="6.5" r="0.7" fill="#fff" stroke="none"/><circle cx="9" cy="6.5" r="0.7" fill="#fff" stroke="none"/><circle cx="12.5" cy="6.5" r="0.7" fill="#fff" stroke="none"/>
<path d="M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1"/>
</svg>
</div>
<span class="cm-label">Chat Model</span>
</div>
</div>
<div class="cm-panel">
<div class="cm-scene is-active" id="cmSceneConvo">
<div class="cm-turn">
<div class="cm-turn-icon cm-user"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 20a6 6 0 0 0-12 0"/><circle cx="12" cy="10" r="4"/><circle cx="12" cy="12" r="10"/></svg></div>
<span class="cm-turn-label">User</span>
</div>
<span class="cm-turn-arrow"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M4 11h13.17l-4.58-4.59L14 5l7 7-7 7-1.41-1.41L17.17 13H4z"/></svg></span>
<div class="cm-turn">
<div class="cm-turn-icon cm-assistant"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 6V2H8"/><path d="M15 11v2"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="M20 16a2 2 0 0 1-2 2H8.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 4 20.286V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2z"/><path d="M9 11v2"/></svg></div>
<span class="cm-turn-label">Assistant</span>
</div>
<span class="cm-turn-arrow"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M4 11h13.17l-4.58-4.59L14 5l7 7-7 7-1.41-1.41L17.17 13H4z"/></svg></span>
<div class="cm-turn">
<div class="cm-turn-icon cm-user"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 20a6 6 0 0 0-12 0"/><circle cx="12" cy="10" r="4"/><circle cx="12" cy="12" r="10"/></svg></div>
<span class="cm-turn-label">User</span>
</div>
<span class="cm-turn-arrow"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M4 11h13.17l-4.58-4.59L14 5l7 7-7 7-1.41-1.41L17.17 13H4z"/></svg></span>
<div class="cm-turn">
<div class="cm-turn-icon cm-assistant"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 6V2H8"/><path d="M15 11v2"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="M20 16a2 2 0 0 1-2 2H8.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 4 20.286V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2z"/><path d="M9 11v2"/></svg></div>
<span class="cm-turn-label">Assistant</span>
</div>
</div>
<div class="cm-scene" id="cmSceneRlhf">
<div class="cm-response cm-winner">
<div class="cm-verdict"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z"/><path d="M7 10v12"/></svg></div>
<div class="cm-response-bubble">Response A</div>
</div>
<div class="cm-response cm-loser">
<div class="cm-verdict"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z"/><path d="M17 14V2"/></svg></div>
<div class="cm-response-bubble">Response B</div>
</div>
</div>
</div>
</div>
<script>
(function () {
var wrapper = document.getElementById('chatmodelRoot');
var bodyAttr = document.body.getAttribute('data-darkmode');
var dark;
if (bodyAttr === 'true') { dark = true; }
else if (bodyAttr === 'false') { dark = false; }
else {
var match = document.cookie.match(/(?:^|;\s*)darkMode=([^;]+)/);
dark = match ? match[1] === 'true' : false;
}
if (dark) wrapper.setAttribute('data-theme', 'dark');
var btnConvo = document.getElementById('cmBtnConvo');
var btnRlhf = document.getElementById('cmBtnRlhf');
var sceneConvo = document.getElementById('cmSceneConvo');
var sceneRlhf = document.getElementById('cmSceneRlhf');
function show(which) {
btnConvo.classList.toggle('is-active', which === 'convo');
btnRlhf.classList.toggle('is-active', which === 'rlhf');
sceneConvo.classList.toggle('is-active', which === 'convo');
sceneRlhf.classList.toggle('is-active', which === 'rlhf');
}
btnConvo.addEventListener('click', function () { show('convo'); });
btnRlhf.addEventListener('click', function () { show('rlhf'); });
})();
</script>
</body>
</html>Uses RLHF (Reinforcement Learning from Human Feedback) โ humans rank responses, better ones get rewarded.
Also introduced structured prompts:
๐ง System prompt โ defines behavior ("You are a helpful assistant")
๐ฌ User prompt โ the question
๐ค Assistant response โ the answer
Used for: โ
Chatbots โ
Writing โ
Customer support
Weakness: โ Struggles with deep reasoning
๐ง Reasoning Models โ Thinks Before Answering
Instead of jumping straight to an answer, reasoning models work through steps first:
Normal: Question โ Answer
Reasoning: Question โ Thinking โ Answer<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>How Reasoning Models Think</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,600&family=Inter:wght@500;600;700&display=swap" rel="stylesheet">
<style>
html, body { margin: 0; padding: 0; }
.infographic-reasoning {
--ink: #1a1a1a;
--ink-soft: #5c5c5c;
--paper: #ffffff;
--paper-alt: #f0ece4;
--accent: #2563eb;
--accent-soft:#e3ebfd;
--line: #ddd6c9;
--purple: #7c3aed;
--purple-soft:#efe6fd;
--radius: 10px;
--display-font: 'Newsreader', serif;
--body-font: 'Inter', system-ui, sans-serif;
box-sizing: border-box;
max-width: 720px;
margin: 0 auto;
padding: 2rem 1.5rem 2.25rem;
font-family: var(--body-font);
color: var(--ink);
background: var(--paper);
}
.infographic-reasoning[data-theme="dark"] {
--ink: #e8e6e1;
--ink-soft: #9a968c;
--paper: #13171F;
--paper-alt: #1e1e26;
--accent: #5b8def;
--accent-soft:#202942;
--line: #2c313d;
--purple: #b18cf5;
--purple-soft:#2a2140;
}
.infographic-reasoning * { box-sizing: border-box; }
.infographic-reasoning .rs-title {
font-family: var(--display-font); font-weight: 600; font-size: 1.2rem; text-align: center; margin: 0 0 1.5rem;
}
.infographic-reasoning .rs-controls { display: flex; justify-content: center; gap: 0.5rem; margin-bottom: 2rem; }
.infographic-reasoning .rs-btn {
display: flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 50%;
border: 1px solid var(--line); background: var(--paper); color: var(--ink); cursor: pointer;
box-shadow: 0 2px 6px rgba(0,0,0,0.06);
}
.infographic-reasoning .rs-btn:hover { border-color: var(--accent); color: var(--accent); }
.infographic-reasoning .rs-btn svg { width: 16px; height: 16px; }
.infographic-reasoning .rs-lane { margin-bottom: 2.25rem; }
.infographic-reasoning .rs-lane-label { text-align: center; font-weight: 700; font-size: 0.85rem; color: var(--ink-soft); margin-bottom: 1.1rem; }
.infographic-reasoning .rs-track { position: relative; display: flex; justify-content: space-between; align-items: center; padding: 0 6px; min-height: 74px; }
.infographic-reasoning .rs-line { position: absolute; left: 34px; right: 34px; top: 50%; height: 2px; background: var(--line); }
.infographic-reasoning .rs-arrowhead {
position: absolute; top: 50%; right: 30px; transform: translateY(-50%); width: 0; height: 0;
border-style: solid; border-width: 5px 0 5px 7px; border-color: transparent transparent transparent var(--line);
}
.infographic-reasoning .rs-dot {
position: absolute; top: 50%; width: 9px; height: 9px; border-radius: 50%; background: var(--accent);
box-shadow: 0 0 0 4px var(--accent-soft); margin-top: -4.5px; left: 34px; opacity: 0;
}
.infographic-reasoning .rs-node { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; gap: 0.5rem; background: var(--paper); }
.infographic-reasoning .rs-badge {
width: 56px; height: 56px; border-radius: 50%; background: var(--paper-alt); color: var(--ink-soft);
display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 8px rgba(0,0,0,0.06);
transition: none;
}
.infographic-reasoning .rs-badge svg { width: 26px; height: 26px; }
.infographic-reasoning .rs-node-label { font-size: 0.75rem; font-weight: 600; color: var(--ink-soft); text-align: center; }
.infographic-reasoning .rs-think-dots { display: flex; gap: 4px; margin-top: 2px; }
.infographic-reasoning .rs-think-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--line); }
/* ---- Normal lane timings ---- */
.infographic-reasoning.is-playing [data-lane="normal"] .rs-dot { animation: rsNormalDot 8s ease-in-out infinite; }
.infographic-reasoning.is-playing [data-lane="normal"] .rs-badge[data-node="q"] { animation: rsNormalQ 8s ease-in-out infinite; }
.infographic-reasoning.is-playing [data-lane="normal"] .rs-badge[data-node="a"] { animation: rsNormalA 8s ease-in-out infinite; }
@keyframes rsNormalDot { 0%{opacity:0;} 2%{opacity:1; left:34px;} 16%{opacity:1; left:calc(100% - 34px);} 20%,100%{opacity:0;} }
@keyframes rsNormalQ {
0%,2% { background: var(--paper-alt); color: var(--ink-soft); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
4%,14% { background: var(--accent-soft); color: var(--accent); box-shadow: 0 0 0 8px var(--accent-soft); }
90%,100% { background: var(--paper-alt); color: var(--ink-soft); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
}
@keyframes rsNormalA {
0%,16% { background: var(--paper-alt); color: var(--ink-soft); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
18%,88% { background: var(--accent); color: #fff; box-shadow: 0 0 0 8px var(--accent-soft); }
92%,100% { background: var(--paper-alt); color: var(--ink-soft); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
}
/* ---- Reasoning lane timings ---- */
.infographic-reasoning.is-playing [data-lane="reason"] .rs-dot[data-seg="1"] { animation: rsReasonDot1 8s ease-in-out infinite; }
.infographic-reasoning.is-playing [data-lane="reason"] .rs-dot[data-seg="2"] { animation: rsReasonDot2 8s ease-in-out infinite; }
.infographic-reasoning.is-playing [data-lane="reason"] .rs-badge[data-node="q"] { animation: rsReasonQ 8s ease-in-out infinite; }
.infographic-reasoning.is-playing [data-lane="reason"] .rs-badge[data-node="t"] { animation: rsReasonT 8s ease-in-out infinite; }
.infographic-reasoning.is-playing [data-lane="reason"] .rs-badge[data-node="a"] { animation: rsReasonA 8s ease-in-out infinite; }
.infographic-reasoning.is-playing [data-lane="reason"] .rs-think-dot[data-step="1"] { animation: rsStep1 8s ease-in-out infinite; }
.infographic-reasoning.is-playing [data-lane="reason"] .rs-think-dot[data-step="2"] { animation: rsStep2 8s ease-in-out infinite; }
.infographic-reasoning.is-playing [data-lane="reason"] .rs-think-dot[data-step="3"] { animation: rsStep3 8s ease-in-out infinite; }
@keyframes rsReasonDot1 { 0%{opacity:0;} 2%{opacity:1; left:34px;} 20%{opacity:1; left:calc(50% - 4px);} 23%,100%{opacity:0;} }
@keyframes rsReasonDot2 { 0%,70%{opacity:0; left:calc(50% - 4px);} 73%{opacity:1;} 88%{opacity:1; left:calc(100% - 34px);} 91%,100%{opacity:0;} }
@keyframes rsReasonQ {
0%,2% { background: var(--paper-alt); color: var(--ink-soft); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
4%,18% { background: var(--accent-soft); color: var(--accent); box-shadow: 0 0 0 8px var(--accent-soft); }
95%,100% { background: var(--paper-alt); color: var(--ink-soft); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
}
@keyframes rsReasonT {
0%,20% { background: var(--paper-alt); color: var(--ink-soft); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
23%,72% { background: var(--purple-soft); color: var(--purple); box-shadow: 0 0 0 8px var(--purple-soft); }
76%,100% { background: var(--paper-alt); color: var(--ink-soft); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
}
@keyframes rsReasonA {
0%,88% { background: var(--paper-alt); color: var(--ink-soft); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
91%,96% { background: var(--accent); color: #fff; box-shadow: 0 0 0 8px var(--accent-soft); }
99%,100% { background: var(--paper-alt); color: var(--ink-soft); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
}
@keyframes rsStep1 { 0%,28%{background:var(--line);} 32%,95%{background:var(--purple);} 98%,100%{background:var(--line);} }
@keyframes rsStep2 { 0%,44%{background:var(--line);} 48%,95%{background:var(--purple);} 98%,100%{background:var(--line);} }
@keyframes rsStep3 { 0%,60%{background:var(--line);} 64%,95%{background:var(--purple);} 98%,100%{background:var(--line);} }
@media (prefers-reduced-motion: reduce) {
.infographic-reasoning * { animation: none !important; }
}
</style>
</head>
<body>
<div class="infographic-reasoning" id="reasoningRoot">
<h1 class="rs-title">How Reasoning Models Think</h1>
<div class="rs-controls">
<button class="rs-btn" id="rsPlayBtn" aria-label="Play">
<svg id="rsPlayIcon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="6 3 20 12 6 21 6 3"/></svg>
<svg id="rsPauseIcon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:none"><rect x="6" y="4" width="4" height="16" rx="1"/><rect x="14" y="4" width="4" height="16" rx="1"/></svg>
</button>
<button class="rs-btn" id="rsRestartBtn" aria-label="Restart">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/><path d="M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16"/><path d="M16 16h5v5"/></svg>
</button>
</div>
<!-- Normal lane -->
<div class="rs-lane" data-lane="normal">
<div class="rs-lane-label">Normal</div>
<div class="rs-track">
<div class="rs-line"></div>
<div class="rs-arrowhead"></div>
<div class="rs-dot"></div>
<div class="rs-node">
<div class="rs-badge" data-node="q">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></svg>
</div>
<span class="rs-node-label">Question</span>
</div>
<div class="rs-node">
<div class="rs-badge" data-node="a">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>
</div>
<span class="rs-node-label">Answer</span>
</div>
</div>
</div>
<!-- Reasoning lane -->
<div class="rs-lane" data-lane="reason">
<div class="rs-lane-label">Reasoning</div>
<div class="rs-track">
<div class="rs-line"></div>
<div class="rs-arrowhead"></div>
<div class="rs-dot" data-seg="1"></div>
<div class="rs-dot" data-seg="2"></div>
<div class="rs-node">
<div class="rs-badge" data-node="q">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></svg>
</div>
<span class="rs-node-label">Question</span>
</div>
<div class="rs-node">
<div class="rs-badge" data-node="t">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 18V5"/><path d="M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4"/><path d="M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5"/><path d="M17.997 5.125a4 4 0 0 1 2.526 5.77"/><path d="M18 18a4 4 0 0 0 2-7.464"/><path d="M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517"/><path d="M6 18a4 4 0 0 1-2-7.464"/><path d="M6.003 5.125a4 4 0 0 0-2.526 5.77"/></svg>
</div>
<span class="rs-node-label">Thinking</span>
<div class="rs-think-dots">
<span class="rs-think-dot" data-step="1"></span>
<span class="rs-think-dot" data-step="2"></span>
<span class="rs-think-dot" data-step="3"></span>
</div>
</div>
<div class="rs-node">
<div class="rs-badge" data-node="a">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>
</div>
<span class="rs-node-label">Answer</span>
</div>
</div>
</div>
</div>
<script>
(function () {
var wrapper = document.getElementById('reasoningRoot');
var bodyAttr = document.body.getAttribute('data-darkmode');
var dark;
if (bodyAttr === 'true') { dark = true; }
else if (bodyAttr === 'false') { dark = false; }
else {
var match = document.cookie.match(/(?:^|;\s*)darkMode=([^;]+)/);
dark = match ? match[1] === 'true' : false;
}
if (dark) wrapper.setAttribute('data-theme', 'dark');
var playBtn = document.getElementById('rsPlayBtn');
var restartBtn = document.getElementById('rsRestartBtn');
var playIcon = document.getElementById('rsPlayIcon');
var pauseIcon = document.getElementById('rsPauseIcon');
var playing = false;
function setPlaying(state) {
playing = state;
wrapper.classList.toggle('is-playing', playing);
playIcon.style.display = playing ? 'none' : '';
pauseIcon.style.display = playing ? '' : 'none';
}
playBtn.addEventListener('click', function () { setPlaying(!playing); });
restartBtn.addEventListener('click', function () {
wrapper.classList.remove('is-playing');
void wrapper.offsetWidth;
var animated = wrapper.querySelectorAll('.rs-dot, .rs-badge, .rs-think-dot');
animated.forEach(function (el) {
el.style.animation = 'none';
void el.offsetWidth;
el.style.animation = '';
});
setPlaying(true);
});
})();
</script>
</body>
</html>Inspired by a simple trick โ adding "Think step by step" to prompts dramatically improved results. Researchers then trained models to reason this way by default.
Used for: โ
Math โ
Coding โ
Logic โ
Deep analysis
Weakness: โ Slower and more expensive
โก๏ธ Hybrid Models โ Best of Both Worlds
Hybrid models combine chat + reasoning and decide dynamically how much thinking a task needs.
"Hi!" โ Instant reply ๐ฌ
"Design a microservices arch" โ Deep reasoning ๐ง Examples: GPT-5, Gemini 2.5 Pro
๐ก Bonus: Budget Forcing
Researchers discovered that forcing a model to think longer improves accuracy. Even inserting the word "Wait" into reasoning makes the model reconsider its answer.
Sounds silly โ but it works! ๐
๐ Quick Comparison
Feature | Base | Chat | Reasoning | Hybrid |
|---|---|---|---|---|
๐ฌ Conversation | โ | โ | โ | โ |
๐ง Deep Reasoning | โ | Limited | โ | โ |
โก Speed | Fastest | Fast | Slow | Adaptive |
๐ฐ Cost | Low | Medium | High | Balanced |
๐ฏ Which Model Should You Use?
Task | Model |
|---|---|
๐ฌ Chatbots & writing | Chat Model |
๐งฎ Math & coding | Reasoning Model |
โ๏ธ Mixed workloads | Hybrid Model |
๐ฌ Custom training | Base Model |