The secret to better results with LLMs
I discovered a little secret for better results with LLMs.
But first, we need a little background to understand it:
A little background
In the past 20 years, software/code has automated a lot of manual repetitive stuff where the function remains the same, only the inputs/variable change.
However, real-world employees have to navigate the complexity of input and decide on a per-case basis what output would be suitable while considering all the parameters, goals, and constraints.
This was too complex for software/code to automate, until recently.
Today, LLMs can navigate through different constraints, parameters, and goals which were just too complex to write code/software for. But LLMs can only do this if they are told about those constraints, parameters, and goals.
The secret
The secret to getting better results with LLMs is a mindset shift where we start thinking about LLMs as employees working within well-defined constraints.
Deep down, most people still treat LLMs as something "smart." They give vague inputs and expect the model to figure it out, getting lazy with the details.
This is the root cause of inconsistent, unreliable LLM output.
LLMs are non-deterministic by nature. Every ambiguity in your instruction/skills is a point for a branch where the output can go in any direction. Your goal is to ensure that LLMs always work within a given set of constraints!
Think as if you are writing code, but only in English, and be very specific and detailed about every path, flow, and branch in your instruction.
If there are multiple paths/flows/branches based on constraints, then define them in detail.
Hence, the new-age programmers will be anyone who can instruct LLMs with constraints to do some work. I wrote about this a while back.
TL;DR: LLMs should be treated like employees operating within clearly defined constraints, parameters, and goals, allowing them to be creative within these limits.