Prompt Iteration and Follow-ups
Prompting isn’t so much a command-and-control process as much as it is a conversation. Throughout any conversation, you gauge if your conversation partner ‘gets’ what you’re saying. That’s the same here.
With that in mind, here are some important tips:
Start off small, then go deeper. – Consider how you would introduce a new topic to a class of beginners, but then also how you would go into detail. It should be a process without assuming the student understands everything right away.
Read into the LLM’s answer. – Evaluate the details of each LLM response. See if they are responding in a way that someone who understands your comments would.
Distill. – Refine what you mean in the feedback of your response.
Reference previous responses (“in your last response” / “in the code you just generated”)
“Can you try again but treat this as a Vue 3 project (Composition API) and update only the current component file?”
Ask for clarification. – Ask the model itself to reissue the response to be sure it understands you right:
“Can you rephrase that in layman’s terms?”
“That’s close—just take this in mind…”
“Please show me what you mean.” / “Add a test case for that example.”
Like a good manager, be specific about what you want to critique in each comment. With an agent, each follow-up prompt is a course correction: tell it what to inspect next, what to stop doing, and what new constraints now apply.
Tip:
Avoid vague corrections like “That’s not what I meant.” Instead, explicitly say what you want changed.
A. When to clarify or restart
Use clarification when the thread’s still salvageable. Use restart when history becomes baggage. In Tabnine, that means clicking “New Conversation” to ensure a clean context window.
---
Minor misunderstanding
Clarify
The model likely retained the correct context but misinterpreted or guessed incorrectly on a detail. A follow-up (e.g., “Use a hashmap instead”) typically corrects this without needing a reset.
Response is correct but incomplete
Clarify
The model is aligned with your goal—just nudge it further. Follow-ups like “Add edge case handling” work well here and preserve useful context.
Model keeps misunderstanding core intent
Restart
If several clarifications don’t resolve the confusion, context drift has likely occurred. Old messages may bias the model, so a fresh thread is cleaner and more efficient.
You introduced unrelated topics mid-thread
Restart
LLMs prioritize recency but can mix topics. Starting fresh ensures the new task isn’t contaminated by unrelated context.
You see weird or contradictory output
Restart
This often signals corrupted or conflicting memory—especially when the model contradicts itself or changes direction erratically.
Tabnine/LLM refers to outdated messages
Restart
When it hallucinates old input or can’t seem to "forget" a shift in scope, a restart ensures that only your new input is influencing the response.
B. Code Formatting for Accuracy
When prompting with or about code, format it cleanly and consistently—as if you were writing for a teammate doing code review.
Why It Matters:
Large Language Models (LLMs) like Tabnine rely heavily on token structure and formatting cues to interpret what your intent is. Sloppy or inconsistent formatting introduces ambiguity, which leads to vague, broken, or off-target responses.
Recommended Formatting Tactics
Use syntax-highlighted code blocks
python<br>```python<br>def get_user():<br> pass<br>```<br>
Ensures model parses it as code, not prose.
Label your code explicitly
“Here’s my User class”
Adds semantic clarity—models use these cues to match intent.
Show input/output clearly
Input: [1, 2, 3] → Output: 6
Enables better example matching and test generation.
Break long prompts into parts
“Here’s the class. Now write a test.”
Modular input improves comprehension and results.
Avoid inline code in long paragraphs
Don't bury def or var calls in walls of text
Makes parsing harder; model may ignore or mangle it.
Common Pitfalls
Missing indentation
LLM assumes malformed logic or syntax
Incomplete snippets
LLM guesses the rest—often incorrectly
Mixed languages or styles
Confuses intent; may switch languages mid-reply
Describing code in prose instead of pasting it
Increases hallucination risk; LLM has to infer too much
Prompt Examples
Less Effective:
Can you help fix my function that checks if a string is a palindrome?
More Effective:
python
CopyEdit
```python
def is_palindrome(s):
return s == s[::-1]
```
Can you help me fix the indentation and make sure it works for input with spaces and punctuation?
C. Be Concise but Complete
While prompts often need to grow gradually as you refine a task, it’s just as important to know when to scale back. This balance is what keeps prompts concise: specific and tight, without becoming overly descriptive.
Things to keep in mind when maintaining a concise prompt (most of which we’ve already discussed):
Start small, then expand only as misunderstanding appears.
Keep additions short and targeted.
Stay clear and focused on the goal.
!Note: Conciseness isn’t the same as avoiding redundancy. Redundancy can sometimes be necessary for clarity; conciseness is about keeping the prompt free of anything that doesn’t move the task forward.
Consider these examples:
Too Vague
Can you help me with reading my CSV in Python? I need it to have name, age, and email.
This is extremely vague. Even if you have attached the CSV file, this leaves the model to make interpretations on its own. It might infer that you have that data in the file already, or it might hallucinate 'filler' data to ensure there are some names, ages, and email addresses.
While models continue to get better at inference through context, this sort of thing should not be left to chance anymore than you would with giving instructions to a human.
Too Verbose
I have this CSV file I’m trying to read in Python, but I’m not sure how to handle it correctly. The file has some columns like name, age, and email. I think I should probably use the CSV module but I’m not positive. Also I need to print each row, but I don’t want the program to crash if the file is missing or the path is wrong. Could you maybe write a function for me? I’m using Python 3.11. I want it to gracefully handle errors and just read the file and print everything in a clean format. I’m not sure if I’m thinking about it the right way, so feel free to correct any assumptions.
With LLMs, you need to be more definitive.
“Could you maybe,” “should probably,” and “I’m not sure if I’m thinking about it the right way” signal a lot of wiggle room to the model.
It needs a clear task (and order of priority if covering multiple tasks). Otherwise, extra narrative, pleasantries, and words might confuse the LLM on the priorities of your request.
Just Right
Write a Python 3.11 function that reads a CSV file with the columns name, age, and email. Use the csv module, print each row, and raise a FileNotFoundError if the file does not exist. Keep the implementation simple and readable.
This gets the best of both worlds from the previous two examples:
Clear task (Write a Python 3.11 function that reads a CSV file with the columns name, age, and email.)
Clear parameters. (Use the csv module, print each row, and raise a FileNotFoundError if the file does not exist.)
Clear notes about style at the end (Keep the implementation simple and readable.)
Last updated
Was this helpful?
