Language Models
Language Models
Beyond prompt engineering.
Language models become more powerful when used inside systems that transform representations, detect failures, and learn about the environment through error signals.
Language models are often introduced as systems that answer questions.
question → model → answer
That framing is useful at first, but it quickly creates a bottleneck.
If better results depend mainly on better prompts, then progress becomes tied to a single skill: manually discovering the right way to ask.
That works for some problems. It does not scale well for harder ones.
A difficult problem creates a strange ceiling: if you do not already know how to reason about it well, it becomes hard to design the prompt that would make the model reason well either.
This section explores a different view.
Language models are not only answer generators. They can also act as operators inside larger systems: transforming between domains, discovering missing context, using error as signal, and producing representations that other parts of software can reliably use.
The goal is not only to get an answer. The goal is to build better paths to answers.
The First Roadblock: Prompt Engineering
Prompt engineering is the first optimization most people reach for. That makes sense. Language models already produce meaningful outputs across many domains, so improving the prompt appears to be the natural way to improve the result.
But prompt engineering has a built-in ceiling. It assumes the main path to improvement is still:
better wording → better output
That can work for formatting, style, small constraint changes, and lightweight task shaping.
It becomes weaker when the problem requires missing context, interaction with an environment, structured recovery from failure, domain-specific acceptance rules, or iterative discovery of what the system actually needs.
At that point, the problem is no longer just “how do I ask better?”
It becomes:
what system should exist around the model so better answers become possible?
A Different Way to Use Language Models
A more useful mental model is:
representation A → model → representation B
Instead of treating the model only as a direct answer engine, the model can be used as an operator that transforms one domain into another.
- web page → login field specification
- document text → structured business object
- support email → routing state
- natural language → code changes
- trace output → failure classification
In this framing, the model is not solving the whole problem. It is helping the system move from one representation to another. That is often a much smaller and more reliable problem.
Why This Matters
When a receiving system has a defined representation, the model no longer needs to produce an open-ended answer. It only needs to produce something that the receiver can use.
That changes the engineering surface. Instead of trying to make the model “perfect,” the system can:
- define the representation it accepts
- verify whether the output satisfies it
- recover when it does not
- use errors to improve the next step
This creates forward paths that do not depend only on manual prompt iteration.
Prompting as a Starting Point
Prompt engineering is a useful skill because it quickly shows how much language models can already do.
But the bigger opportunity is not just getting better at prompts. It is learning how to use AI to solve more kinds of problems.
For simple tasks, better prompting may be enough. For harder ones, progress usually depends on something larger: how the system finds context, shapes representations, validates results, and learns from failure.
In that sense, prompt engineering is best seen as a starting point. It gets you into the system, but the deeper value comes from building ways for AI to help solve problems beyond what prompt wording alone can unlock.
The Broader System View
Language models become much more useful when they are embedded inside systems that can:
- find missing context
- transform environments into useful representations
- classify failures
- apply deterministic constraints
- retry with new information
- accumulate system knowledge over time
That is a different use of language models than simple question answering. It treats them as part of a larger architecture for finding usable answers.
Summary
Prompt engineering is often the first roadblock because it is the first available lever. But it is not always the best long-term abstraction.
A better path is often to ask:
What representation does the system need? What context is missing? What should be verified? What can be learned from failure?
Language models are strongest when they are not forced to carry the entire system alone. They become much more useful when they operate inside architectures that help find, shape, and verify answers.
Topics
LLMs in Software Systems
What kind of component language models actually are, and why the surrounding architecture matters more than the model.
Domain Operators
Using language models to transform between domains rather than only generate final answers.
Representation Mapping
How systems move from messy environments into receiver-defined representations.
Error Signals
How failures can become structured inputs for the next step instead of dead ends.
Environment Discovery
How error signals reveal the structure of unknown environments, turning failures into a mechanism for discovering system constraints.