Large language models — ChatGPT-like text-generating AIs — are unique in a way that makes it difficult to conceptualize what they’re doing. Strictly speaking, they’re predictive text generators, and nothing more. Their ability to recite facts is a side-effect of their having been trained on vast amounts of text that contains, among other things, those facts. They were not designed as “fact-retrieval engines.”
Nor were they designed as “software development engines,” despite their increasing use in this domain. Every tool or piece of software that uses LLMs for code generation feeds instructions to the LLM — invisibly to the user — that begin with the phrase: “You are an expert software engineer” (or something nearly identical to this).
With no more text to consume, and with fewer sources for their insatiable need for energy, LLMs are seeing the bulk of their improvements these days coming from the tools we’re building around them. This includes “prompt engineering” (knowing the secret grammar that will get them to do what you want), multi-agent workflows (LLMs using other LLMs, ad infinitum), etc.
LLMs’s proficiency with facts — yes, they screw up sometimes, and as such we shouldn’t rely on them for critical matters, but their fact-retrieval is astounding — has persuaded us that behind them is a general artificial intelligence, understanding our questions and rifling through its database of facts to give us answers.
As a result, first-time users of an LLM for code generation will often be perplexed at how poorly it understands their existing code, learning shortly thereafter that providing even a few bits of documentation dramatically improves the results — demonstrating just how helpless these things are for most tasks without our assistance.
Recently, Vercel, a cloud computing company, released an AGENTS.md file (a text file standard for coaching LLMs, written in plain English, with intermittent code examples) for writing code in React, a popular JavaScript framework for building complex web applications. This file is nearly 10,000 words, with an estimated reading time of half an hour.
If you take nothing else away from this blog post, remember this: for all the hype around AI, the state of the art in 2026 includes writing an entire book about React, and telling LLMs to read it before every interaction.
This has had me thinking about what an LLM is, exactly. What do we call something like this?
It may be easiest and most common to refer to it as a tool, but this isn’t quite right. A tool is designed, sometimes exquisitely, to achieve a specific purpose. LLMs aren’t that. Just about all their benefits to us are accidental.
Instead, a better metaphor might be to think of LLMs as a resource that we harness rather than a tool that we use. A resource in the sense that electricity, for instance, or the wind is a resource.
The wind is powerful and useful, but aimless and indifferent. We use the wind to power turbines, to fly kites, to sail. Sailing evolved and improved not because the wind got better at propelling our boats — it wasn’t designed to do that — but because we built better sails and developed better sailing techniques. And this is what we’re doing with LLMs today — building better sails, developing better techniques.
I’m reminded of Steve Jobs’ quip about Dropbox: that it’s a feature, not a product. I see echoes of this in Apple’s reluctance to turn Siri into a chat UI, perhaps because they’re seeing it in the same way.
