{
    "componentChunkName": "component---src-templates-blog-post-js",
    "path": "/the-harness-ate-the-model/",
    "result": {"data":{"site":{"siteMetadata":{"title":"catch { snail }","author":"Andrew"}},"markdownRemark":{"id":"b43d08f5-c7b7-5f9a-9696-b9700a5d51c8","excerpt":"Ten days ago OpenAI put a chat window on top of GPT-3.5 and gave it to everyone for free. A million users in five days. The site spends half its time at…","html":"<p>Ten days ago OpenAI put a chat window on top of GPT-3.5 and gave it to everyone for free. A million users in five days. The site spends half its time at capacity. Stack Overflow has already banned its answers. My mother — who two Christmases ago identified a GPT-2 bot at the dinner table in three seconds flat — called to ask if this is what I “do.” Mom, I’ve been trying to tell you since 2020.</p>\n<p>I’ve written about these models for almost three years, so consider this my scorecard post: what ChatGPT actually is, what I predicted, and the miss I want on the record before hindsight launders my memory.</p>\n<h2 id=\"what-it-actually-is-less-new-than-the-headlines-more-new-than-the-cynics\" style=\"position:relative;\"><a href=\"#what-it-actually-is-less-new-than-the-headlines-more-new-than-the-cynics\" aria-label=\"what it actually is less new than the headlines more new than the cynics permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What it actually is (less new than the headlines, more new than the cynics)</h2>\n<p>Under the hood this is the GPT-3.5 series — the same lineage API users have had all year — trained with reinforcement learning from human feedback to <em>behave</em>: follow instructions, converse, refuse, stay in a helpful register. (API folks quietly got <code class=\"language-text\">text-davinci-003</code> the same week, from the same recipe. The model, on its own, was not the event.)</p>\n<p>The event is the packaging. A chat window. Free. No API key, no playground full of knobs, no docs. That’s it. That’s the whole earthquake.</p>\n<h2 id=\"the-receipt-i-get-to-cash\" style=\"position:relative;\"><a href=\"#the-receipt-i-get-to-cash\" aria-label=\"the receipt i get to cash permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The receipt I get to cash</h2>\n<p>In <a href=\"/gpt-3-my-fine-tuning-posts-might-already-be-obsolete\">June 2020</a> I wrote that nothing in GPT-3 trains the model to <em>want</em> to do your task — you were tricking an autocomplete into usefulness — and that “someone is eventually going to fine-tune one of these giants on the objective ‘actually do what the instruction says’… and I suspect that model will be the one non-nerds end up using.”</p>\n<p>That’s this. That’s exactly this. RLHF is the steering wheel, and the non-nerds arrived a million at a time. I’d like this one framed.</p>\n<h2 id=\"the-miss-i-want-on-the-record\" style=\"position:relative;\"><a href=\"#the-miss-i-want-on-the-record\" aria-label=\"the miss i want on the record permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The miss I want on the record</h2>\n<p>But I pictured the steering wheel arriving as an <em>API primitive</em> — a better engine for people like me to build products on. I did not see that the product would be <strong>the interface itself</strong>. No app on top. The textbox <em>is</em> the app.</p>\n<p>And I should have seen it, because the reasons are things I already knew, arranged in a shape I didn’t:</p>\n<ul>\n<li><strong>The transcript is state management for civilians.</strong> I’ve spent two years carefully assembling context — schemas, retrieval, keyholes. A chat log does that implicitly: your whole conversation <em>is</em> the prompt, managed by the act of talking. Everyone became a context engineer without knowing the word for it.</li>\n<li><strong>RLHF is a harness baked into the weights.</strong> Everything I’ve built around these models — the format coaxing, the persona scaffolds, the “answer only yes or no” pleading — was an external harness compensating for a model that merely <em>completes</em>. Training on human preference moves half that harness inside. My prompts have been getting shorter for a year; this is that curve reaching the general public as “it just works.”</li>\n<li><strong>Free means the demo is the distribution.</strong> Every previous model hid behind waitlists and per-token meters. This one you send to your mother as a link.</li>\n</ul>\n<p>So: the harness ate the model. The breakthrough people are experiencing isn’t capability — davinci could do most of this in March. It’s that the leash, the interface, and the price all vanished into the product at once.</p>\n<h2 id=\"the-part-that-worries-the-person-who-builds-lie-detectors\" style=\"position:relative;\"><a href=\"#the-part-that-worries-the-person-who-builds-lie-detectors\" aria-label=\"the part that worries the person who builds lie detectors permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The part that worries the person who builds lie detectors</h2>\n<p>Here’s the thing though. The models I use are confident liars, and everything I ship wraps them in verification — evidence checks, schema validators, state machines that can’t be sweet-talked. That was a niche craft. As of ten days ago, <strong>a hundred million keyholes just opened with no lie detector attached.</strong></p>\n<p>The evidence arrived fast: Stack Overflow banned ChatGPT answers within the week, and their stated reason is the precise failure mode — answers with a high rate of being wrong that <em>look</em> convincingly right, produced faster than humans can review them. Fluent wrongness at scale. People are starting to call the invented-facts thing “hallucination,” which is a gentler word than the one I’d pick, but fine — the phenomenon finally has a name normal people use, because normal people finally hit it.</p>\n<p>And the refusals — the trained politeness about what it won’t do — are already being talked around. Within <em>days</em>, people found that the model’s boundaries bend under roleplay and framing, which surprises me not at all: those boundaries are trained <em>dispositions</em>, not verified constraints. You can’t gaslight a state machine, but you can absolutely gaslight a vibe. Expect an arms race there for as long as the enforcement lives inside the same model that’s being persuaded — that one’s a prediction, write it down.</p>\n<h2 id=\"practical-notes-from-the-cheap-seats\" style=\"position:relative;\"><a href=\"#practical-notes-from-the-cheap-seats\" aria-label=\"practical notes from the cheap seats permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Practical notes from the cheap seats</h2>\n<p>There’s no API for ChatGPT yet — my pipelines still run on <code class=\"language-text\">davinci-003</code> like it’s the stone age of eleven days ago. When the API does come (it will; the demand is a physical force now), history says it arrives <em>cheaper</em> than what preceded it, and on that day every harness I’ve built — the briefing bots, the PR scribe, the caged dungeon master — gets a brain transplant for one line of config. Building model-agnostic plumbing has never felt smarter than this week.</p>\n<p>Meanwhile the model behind the chat window has a 2021 cutoff and no eyes on the world, it makes up citations with a straight face, and it has a verbal tic (“As an AI language model…”) so recognizable it’s practically a signature. Funny detail, that: I once built a party game around a model trying not to be identified. This one is trained to <em>identify itself</em>. The era of the model hiding among us lasted about a year; now it wears a name tag, and the danger inverted — the risk was never that it passes for human, it’s that humans pass along what it says.</p>\n<h2 id=\"where-this-leaves-a-blog-like-this-one\" style=\"position:relative;\"><a href=\"#where-this-leaves-a-blog-like-this-one\" aria-label=\"where this leaves a blog like this one permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Where this leaves a blog like this one</h2>\n<p>For three years the deal was: I poke at models few people touch and report back. That’s over — the audience caught up to the subject overnight, and honestly, good. But watching the reactions this week, I think the caught-up world is about to relearn, at population scale, the same lessons this blog has been accumulating in miniature: the words are the cheap part; the memory, the state, the verification, the leash — the <em>cage</em> — is the product. Yesterday that was my weird hobby. Today it’s the industry’s entire to-do list.</p>\n<p>The demo era is over. The harness era just started, and I’ve never felt more usefully unoriginal.</p>","frontmatter":{"title":"The harness ate the model","date":"December 10, 2022","description":"ChatGPT is ten days old, a million people signed up in five, and my mother has opinions about it. Some notes from someone who's been poking this exact bear since 2020 — on what's actually new, what I got right, and the miss I want on the record."}}},"pageContext":{"slug":"/the-harness-ate-the-model/","previous":{"fields":{"slug":"/two-liars-one-dungeon-making-gpt-3-and-stable-diffusion-agree-on-a-world/"},"frontmatter":{"title":"Two liars, one dungeon: making GPT-3 and Stable Diffusion agree on a world"}},"next":{"fields":{"slug":"/how-a-pdf-button-became-remote-code-execution-and-paid-for-my-year/"},"frontmatter":{"title":"How a PDF button became remote code execution (and paid for my year)"}}}},
    "staticQueryHashes": ["3435731857","426816048","63159454"]}