---
title: "The Biggest Misconception About LLMs"
description: "The simplest way to understand a large language model is this - it works like an extremely smart printer"
date: 2026-02-17
tags: [ai, how-llms-work]
url: https://nem035.com/thoughts/the-biggest-misconception-about-llms
---

Most people imagine an AI like ChatGPT as a thinking machine. It is not.

The simplest way to understand a large language model is this: **It works like an extremely smart printer.** You give it text. It prints text back.

That is the entire job. It does not think. It does not plan. It does not sit there doing anything when idle. When nobody is using it, it is effectively off.

So how does it seem to "do things"? Because normal software sits around it.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 820 520" style="max-width:100%;height:auto;margin:2rem auto;display:block;font-family:system-ui,sans-serif;">
  {/* Background */}
  <rect width="820" height="520" rx="16" fill="#fafafa" stroke="#e0e0e0" stroke-width="1.5"/>

  {/* Title */}
  <text x="410" y="40" text-anchor="middle" font-size="18" font-weight="700" fill="#1a1a1a">How a Typical AI System Actually Works</text>

  {/* Step 1: Trigger */}
  <rect x="30" y="80" width="160" height="160" rx="12" fill="#fff3e0" stroke="#fb8c00" stroke-width="2"/>
  <text x="110" y="108" text-anchor="middle" font-size="14" font-weight="700" fill="#e65100">① Trigger</text>
  <line x1="50" y1="118" x2="170" y2="118" stroke="#ffcc80" stroke-width="1"/>
  <text x="110" y="142" text-anchor="middle" font-size="12" fill="#555">📧 New email</text>
  <text x="110" y="164" text-anchor="middle" font-size="12" fill="#555">💬 Chat message</text>
  <text x="110" y="186" text-anchor="middle" font-size="12" fill="#555">⏰ Scheduled task</text>
  <text x="110" y="208" text-anchor="middle" font-size="12" fill="#555">📱 App event</text>

  {/* Arrow 1 → 2 */}
  <line x1="190" y1="160" x2="240" y2="160" stroke="#999" stroke-width="2" marker-end="url(#arrowhead)"/>
  <text x="215" y="150" text-anchor="middle" font-size="10" fill="#999">data</text>

  {/* Step 2: Program (pre) */}
  <rect x="240" y="95" width="140" height="130" rx="12" fill="#e3f2fd" stroke="#1e88e5" stroke-width="2"/>
  <text x="310" y="123" text-anchor="middle" font-size="14" font-weight="700" fill="#0d47a1">② Program</text>
  <line x1="260" y1="133" x2="360" y2="133" stroke="#90caf9" stroke-width="1"/>
  <text x="310" y="155" text-anchor="middle" font-size="11" fill="#555">Regular software</text>
  <text x="310" y="172" text-anchor="middle" font-size="11" fill="#555">formats the data</text>
  <text x="310" y="189" text-anchor="middle" font-size="11" fill="#555">into a prompt</text>

  {/* Arrow 2 → 3 */}
  <line x1="380" y1="145" x2="430" y2="145" stroke="#999" stroke-width="2" marker-end="url(#arrowhead)"/>
  <text x="405" y="135" text-anchor="middle" font-size="10" fill="#999">prompt</text>

  {/* Step 3: LLM (the star) */}
  <rect x="430" y="70" width="170" height="180" rx="16" fill="#f3e5f5" stroke="#8e24aa" stroke-width="2.5"/>
  <text x="515" y="100" text-anchor="middle" font-size="15" font-weight="700" fill="#4a148c">③ LLM</text>
  <text x="515" y="118" text-anchor="middle" font-size="11" fill="#7b1fa2" font-style="italic">"The Smart Printer"</text>
  <line x1="450" y1="128" x2="580" y2="128" stroke="#ce93d8" stroke-width="1"/>
  <text x="515" y="150" text-anchor="middle" font-size="12" fill="#555">Text goes in</text>
  <text x="515" y="170" text-anchor="middle" font-size="20" fill="#8e24aa">→ 🖨️ →</text>
  <text x="515" y="195" text-anchor="middle" font-size="12" fill="#555">Text comes out</text>
  <text x="515" y="228" text-anchor="middle" font-size="10" fill="#999" font-style="italic">That's it. Nothing else.</text>

  {/* Arrow 3 → 4 */}
  <line x1="600" y1="145" x2="630" y2="145" stroke="#999" stroke-width="2" marker-end="url(#arrowhead)"/>
  <text x="615" y="135" text-anchor="middle" font-size="10" fill="#999">text</text>

  {/* Step 4: Program (post) */}
  <rect x="630" y="95" width="160" height="130" rx="12" fill="#e3f2fd" stroke="#1e88e5" stroke-width="2"/>
  <text x="710" y="123" text-anchor="middle" font-size="14" font-weight="700" fill="#0d47a1">④ Program</text>
  <line x1="650" y1="133" x2="770" y2="133" stroke="#90caf9" stroke-width="1"/>
  <text x="710" y="155" text-anchor="middle" font-size="11" fill="#555">Reads the LLM's</text>
  <text x="710" y="172" text-anchor="middle" font-size="11" fill="#555">output and decides</text>
  <text x="710" y="189" text-anchor="middle" font-size="11" fill="#555">what to do next</text>

  {/* Arrow 4 → 5 */}
  <line x1="710" y1="225" x2="710" y2="290" stroke="#999" stroke-width="2" marker-end="url(#arrowhead)"/>

  {/* Step 5: Actions */}
  <rect x="540" y="290" width="250" height="160" rx="12" fill="#e8f5e9" stroke="#43a047" stroke-width="2"/>
  <text x="665" y="318" text-anchor="middle" font-size="14" font-weight="700" fill="#1b5e20">⑤ Actions</text>
  <line x1="560" y1="328" x2="770" y2="328" stroke="#a5d6a7" stroke-width="1"/>
  <text x="665" y="352" text-anchor="middle" font-size="12" fill="#555">🔍 Search the web</text>
  <text x="665" y="374" text-anchor="middle" font-size="12" fill="#555">🗄️ Update a database</text>
  <text x="665" y="396" text-anchor="middle" font-size="12" fill="#555">✉️ Send a message</text>
  <text x="665" y="418" text-anchor="middle" font-size="12" fill="#555">⚡ Run code</text>

  {/* Key insight box */}
  <rect x="30" y="310" width="470" height="120" rx="12" fill="#fff8e1" stroke="#ffc107" stroke-width="1.5" stroke-dasharray="6,3"/>
  <text x="265" y="340" text-anchor="middle" font-size="13" font-weight="700" fill="#f57f17">Key Insight</text>
  <text x="265" y="365" text-anchor="middle" font-size="12" fill="#555">The LLM itself does none of the actions.</text>
  <text x="265" y="385" text-anchor="middle" font-size="12" fill="#555">It only produces text. Other systems read</text>
  <text x="265" y="405" text-anchor="middle" font-size="12" fill="#555">what the LLM said and carry it out.</text>

  {/* Arrowhead marker */}
  <defs>
    <marker id="arrowhead" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
      <polygon points="0 0, 10 3.5, 0 7" fill="#999"/>
    </marker>
  </defs>
</svg>

Here is what actually happens in a typical AI system:

1. **Something triggers the system.** This could be a new email, a chat message, a scheduled task, or an app event.
2. **A regular program takes that data and sends it to the LLM as a prompt.**
3. **The LLM produces text in response.**
4. **Then the program reads what the LLM said and decides what to do next.** It might search the web, update a database, send a message, or run code.

The LLM itself does none of those actions. It only produces text.

Think of it like a very smart advisor who can only communicate by writing notes. The advisor can write: _"Search for this." "Reply with this." "Schedule this."_ But [the advisor never does the work](/thoughts/how-does-llm-perform-actions). Other systems read the note and carry it out.

That is how modern AI actually works. It is not a mind. It is a very powerful text component inside a larger piece of software.