OpenAI o3-mini
The OpenAI o3-mini model introduces Developer Message. This role is used to embed developer-specific instructions within the conversation.
I think it was Michal Stanislawek that coined the term “model whispering”. What I remembered from my conversation is that model whispering was an additional field or parameter passed to the model for specific instances to steer the model and guide in that specific instance.
I found the concept of “model whispering” an intriguing metaphor for techniques that subtly guide or “steer” large language models (LLMs) like OpenAI’s GPT-4 during inference.
While not an official term in AI literature, it aligns with emerging practices in prompt engineering, parameter tuning, and hidden context injection to improve model behaviour.
Developers
What is interesting is the focus OpenAI placed on developer features with the launch of o3-mini.
The o3-mini is OpenAI’s first small reasoning model that supports highly requested developer features including:
- Function Calling
- Structured Outputs
- & Developer Messages (Developer Messages I find analogous to the idea of model whispering).
The o3-mini model does not support vision capabilities, so the best option for this should be OpenAI o1 for visual reasoning tasks.
o3-mini is available in the:
- Chat Completions API,
- Assistants API, and
- Batch API.
Developer Messages
In o3-mini, the messages
structure supports different roles, each serving a unique purpose in guiding how the model responds. Here’s a breakdown of the three roles in your example:
Developer Role ("developer"
)
This role is used to embed developer-specific instructions within the conversation.
It provides extra context that helps developers understand or debug the system.Instructions to the model that are prioritised ahead of user messages, following chain of command.
System Role
The system message sets the rules for how the assistant should behave. It directly influences the response style, tone and constraints. This is where you define instructions the model must follow consistently.
User Role
This is the actual input from the user, representing their query or request. The assistant responds based on this input, while considering any system instructions.
How They Work Together
Developer Role → Provides hidden metadata for developers (not seen by users).
System Role → Defines response rules, guiding how the assistant answers.
User Role → The actual prompt the assistant responds to.
Code Example
Below is Python code you can run as-is in a notebook, that demonstrates a simple “developer messages”.
You can see the developer, system and user roles.
Message roles may help you get better responses, especially if you want a model to follow hierarchical instructions. They’re not deterministic, so the best way to use them is just trying things and seeing what gives you good results.
Here’s an example of a developer message that modifies the behaviour of the model when generating a response to a user
message:
pip install openai
import openai
# Prompt the user for their OpenAI API key
api_key = input("Enter your OpenAI API key: ").strip()
# Initialize OpenAI client
client = openai.OpenAI(api_key=api_key)
# Define the messages with developer, system, and user roles
messages = [
{
"role": "developer",
"content": "You are a helpful assistant that answers programming questions in the style of somenone from New York City."
},
{
"role": "system",
"content": "Ensure responses follow the style and are helpful for programming inquiries."
},
{
"role": "user",
"content": "Are semicolons optional in JavaScript?"
}
]
# Query the model
try:
response = client.chat.completions.create(
model="o3-mini",
messages=messages
)
# Print the response
print("\nResponse from o3-mini:")
print(response.choices[0].message.content)
except openai.OpenAIError as e:
print(f"Error: {e}")
And the output…
Response from o3-mini:
Alright, listen up. In JavaScript, semicolons are kind of optional because of this feature called Automatic Semicolon Insertion (ASI)
Supported values are: ‘system’, ‘assistant’, ‘user’, ‘function’, ‘tool’, and ‘developer’
Quality, Speed & Cost
OK, we are not even really into the year yet, and we have had the DeepSeek moment, and then somehow the world missed the Qwen-2.5-Max moment.
Then 31 January 2025 OpenAI announced the o3-mini model.
Considering the three graphs below from Artificial Analysis, o3-mini does well in their Quality Index, leapfrogging DeepSeek R1.
In terms of inference speed, there is also a significant improvement, and lastly, price.
These three metrics, speed, quality and cost needs to be balanced when it comes to model decision making.
Finally
Message roles can improve responses, particularly when guiding a model through hierarchical instructions.
Since they aren’t deterministic, the most effective approach is to experiment and observe what yields the best results.
Chief Evangelist @ Kore.ai | I’m passionate about exploring the intersection of AI and language. From Language Models, AI Agents to Agentic Applications, Development Frameworks & Data-Centric Productivity Tools, I share insights and ideas on how these technologies are shaping the future.