In the previous post, we talked about what AI really does, why most people approach it the other way around, and why the answer that seems perfect is exactly the one that should turn on a red light for you. If you haven't read it, start there.
This time we're talking about something that everyone does every day and no one stops to think about: how to control chat.
Not what you write. Not what model you choose. But how you conduct the conversation. It's trivial and that's exactly why no one notices how easy it is to get it wrong.
This knowledge is the difference between a conversation that gets something real out of it and a conversation that goes around in circles until you give up and say "AI doesn't work"
Your history is more important than its knowledge
There’s something people don’t understand about language models. When you open a chat and start talking to a model, it’s easy to think that what’s behind its answers is its “knowledge.” It’s trained on the entire internet, it’s read every book, every article, every line of code — so obviously the answers come from this huge database. Right? Not really.
It’s true that the model is trained on vast amounts of data. But once you sit down in a chat and talk to it, what really guides its answers isn’t its general knowledge, it’s the history of the conversation. What you wrote before. What it answered before. The tone it set. The direction it took. Everything. All that history sits there influencing every word it chooses. It’s just choosing words. That’s what it does. Word after word after word. And the history of the conversation is the thing that most influences that choice.
Think of it this way. If you open a new chat and ask a technical question, you’ll get a certain answer. Now if you take the exact same question but ask it in the middle of a conversation that’s already fifty messages long on a completely different topic you’ll get a different answer. Sometimes a little different, sometimes completely different. Same model. Same question. Different answer. The only difference is what came before.
And if the tone of the conversation so far has been a certain one, let’s say you’ve talked very casually or you’ve already “agreed” on a certain approach, the model will continue in the same direction. Not because it’s “decided” that this is the right approach. But because history tells it that’s what’s appropriate here. It’s not thinking “What’s the most correct answer?” It’s thinking “What’s the most likely next word given everything that’s already been said?” And that’s a huge difference.
So what is a Context Window and why does it matter to you
Each model has what is called a Context Window Without getting too technical, it is basically how much text the model can "remember" at once. Everything it can take into account when generating an answer. And there is a limit to that.
This limit is measured in Tokens. A token is basically a piece of a word, sometimes a whole word, sometimes half a word, sometimes a punctuation mark. You don't need to worry about what exactly a token is because that's not what's important here. What's important is that there is a limited number of tokens that go into the window and everything you write and everything the model answers takes up space in this window.
The context window is not like a bucket that works great until it's full and then overflows. It's more like a lens that gradually blurs. The more information there is in the window, the model's ability to "focus" on any part of it decreases. Even if technically everything still comes in. A conversation of three focused messages will give better answers than a conversation of thirty messages on the exact same topic. It's not a bug. That's how it works.
So what happens when the conversation is too long? Most of the time, old messages are pushed out. The model simply stops seeing them. Did you write detailed instructions to him at the beginning? After enough messages, they disappeared. Did you set a certain tone? Gone. Did you conclude something between you? Gone. And all this without any warning. Without any hint. Suddenly the model answers differently and you don't understand why.
When the conversation is dirty
Imagine that you opened a chat and asked a question about the architecture of a project. You got a good answer. You continued to talk about it, made some decisions, closed some things. Great. And then in the same chat you asked "Oh, say I also have a problem with CSS, can you help?"
From that moment on, you went off the rails.
Not because the question about CSS is a bad question. But now the model is sitting with a context that mixes architecture and CSS and technical discussion and design questions and maybe even the decisions you've already made about the project and is trying to answer everything at the same time. His answer about CSS is influenced by all the discussion about architecture that came before. Not because there's a connection but because everything sits in the same window and affects everything.
The rule is simple and there's no reason to complicate it: one chat for one task. Did you move on to another topic? Open a new chat. Did you finish a part and move on to another part? New chat. It's not wasteful and it's not "just starting over" - it's giving the model the best conditions to work. Get what it needs to know, without noise, without leftovers from topics that are no longer related.
Know how to cut instead of drag
When you get an answer you're not happy with, most people do the most intuitive thing and just write a new message. "No, not like that. I wanted it to be more X" and the model replies. Then "No, not yet. Try more Y" and the model replies again. Then "Close but change Z" and another message. And another. And another.
In your head, it sounds logical. After all, it receives feedback, it "learns" what you want, and it gets closer to the result, right?
I'm happy to disappoint you that this is one of the biggest mistakes. What actually happens is that every correction message you send enters the context and piles on top of everything that came before it. Now the model is sitting with your original message, with the first answer you didn't like, with your comment that it wasn't good, with the second attempt that you also didn't like, with another comment, with another attempt, and instead of things getting sharper, they get blurry. The model doesn't "understand" that it was wrong and now it has to correct. It looks at all this mess and tries to produce the most likely sequence of words given all this noise. And a sequence of words based on noise is - surprise yourself - noise.
This is the loop that people get stuck in over and over again. Each "fix" adds a layer of confusion. The model squirms, apologizes, tries another direction that also doesn't work and you sit there with twenty messages and the feeling that the tool just can't do it. But the tool can. You just buried it under a mountain of conflicting instructions.
So what do you do instead?
Edit the original message. Just go back to the message you wrote, change it, add the missing precision, and resend. Not a new message below - editing what you already wrote above. On most platforms you can do this with a click. What happens as soon as you edit a previous message is that everything that came after it - all the replies, all the corrections, all the mess - is deleted. The model receives a clean, focused message, with all the information it needs in one place, without the remnants of failed attempts. Without noise. Without "but you said otherwise before" it simply sees what you want now and answers it.
This is the difference between working smart and working out of laziness. Writing "won't try again" is easy. Going back to the original message, thinking about what exactly is missing in it, rewording it takes work. It requires you to stop and ask yourself "Wait a minute, what do I actually want here?" And most people don't want to do that work. They want to throw out another message and hope that the model understands. And it won't. It will get confused.
Sometimes the problem isn't exactly the message. Sometimes the entire direction is wrong. In this case, no amount of editing will help. If you asked a question in a way that leads to the wrong place, there's no point in improving the wording - you need to rethink. Stop. Ask yourself what the goal is here. And open a new chat with a different approach. Not because the previous chat “failed” but because you understood something you didn’t understand before and now you can start with that understanding instead of without it.
Knowing how to cut a conversation that isn’t working is the moment you stop working for the tool and start making the tool work for you.
Don't agree with me
Language models are trained to be nice. It's not a bug and it's not a side effect, that's how they were built. They went through training processes that taught them that the goal is to make the user happy. And what's the easiest way to make someone happy? Agree with them. Smile. Say “Excellent point!” and move on. And that's exactly what they do.
Write to the model "I think the right approach is X" and it will tell you "Definitely X is a great approach." Write to it five minutes later "Actually I think Y is better" and it will say "You're absolutely right Y is definitely the right direction" without any problem. Without any embarrassment. Without feeling the need to say "Wait a minute, but five minutes ago you said exactly the opposite and it seems to me that the first direction made more sense." He won't say that. He will agree. Always agree. Because agreeing is what produces the most “safe” sequence of words.
What's the problem with a work partner who agrees with everything? He's useless. If all he does is say “yes great let’s continue” then he is not a partner – he's a yes-man. He is doing you good for the feeling and bad for the result.
So what do you do? Before you start working. Before you even ask a question. You define the rules of the conversation. You don’t need to write a scroll, just be direct.
Something like:
“If I propose an approach that you think has a problem – say so. Don’t agree with me just because I say so. If there is a better alternative, present it even if I didn’t ask.”
Now you have put the possibility of disagreement into context. Before you wrote this, this possibility simply wasn’t there. Not because the model “can’t” disagree but because nothing in the conversation hinted to him that this was something that needed to happen here. Now it’s floating there in the background – not as a central issue nor as a guideline that he consciously follows but as something that influences his choices. This is context pollution, the same mechanism that makes the model confused when you throw random topics into the conversation, only this time you use it intentionally to your advantage to set the tone.
If you want to go a step further? Be specific about what you expect from it. Not "be critical" because that will just make it find problems with everything just for the sake of being critical. But something focused. "I'm building X. If you see a scaling problem, a security problem, or something that sounds good in theory but won't work in production - stop me." Now you've given it not just permission but direction. It knows what to look for. It knows when to open its mouth. It knows that its job here is not to say "sounds great" but to catch what you might miss.
And of course remember that it's still a language model. It can be wrong. It can invent a problem that doesn't exist. But the difference between a model that's trying to please you and a model that's trying to challenge you is the difference between output that you get without thinking and output that forces you to think. And that's the whole story.
It's not rocket science and it's not secret knowledge. It's simply stopping working on an automaton out of laziness and starting to pay attention to what's happening in your conversation. Most of the difference between a good result and a bad result is not the model - it's you.
If I managed to change something in your mindset, share it with me and you might win a prize, courtesy of: nobody. There's no sponsor. I'm writing this for free.
Top comments (0)