How do you reliably override a model's internal temporal bias in production ?
I'm building an automated mail generation pipeline using Claude Haiku 4.5 OnPremise but the knowledge cutoff June 2025. This model needs to handle temporal expressions correctly like :
- next Monday
- end of the week
- this month
- 16 May
- 16 May 2026
- 25/05/2026
for deal with this cutoff I'm injecting a full temporal context block in the system prompt, covering today, yesterday, tomorow, ... I also added few-shot examples and a CoT reasoning step to reinforce the behavior.
<temporal_context_rules>
<!-- IMPORTANT Timing Information -->
<rule_1>**IMPORTANT**: Today is {today_formatted} of {year}. Any date without an explicit year refers to {year}, NEVER to 2025 or any other year.</rule_1>
<rule_2>You know the exact calendar: number of days per month, days of the week, valid dates</rule_2>
<rule_3>You correctly interpret relative dates (“this Monday,” “next Thursday,” “next week,” etc.)</rule_3>
<rule_4>You must CORRECTLY convert all relative dates to absolute dates (e.g., “tomorrow” -> “{tomorrow}”)</rule_4>
<rule_5>The day and date must ALWAYS match (e.g., do not write “Friday, July 15” if it is a “Tuesday”)</rule_5>
<temporal_references>
<today>Today is {today_formatted}</today>
<yesterday>Yesterday was {yesterday}</yesterday>
<tomorrow>Tomorrow will be {tomorrow}</tomorrow>
<next_monday>Next Monday will be {next_monday}</next_monday>
<next_tuesday>Next Tuesday will be {next_tuesday}</next_tuesday>
<next_wednesday>Next Wednesday will be {next_wednesday}</next_wednesday>
<next_thursday>Next Thursday will be {next_thursday}</next_thursday>
<next_friday>Next Friday will be {next_friday}</next_friday>
<next_saturday>Next Saturday will be {next_saturday}</next_saturday>
<next_sunday>Next Sunday will be {next_sunday}</next_sunday>
<end_of_week>The end of the current week is {end_of_week_formatted}</end_of_week>
<next_week>Next week begins on {next_week_start} and ends on {next_week_end}</next_week>
<end_of_month>The end of the month is {end_of_month_formatted} </end_of_month>
<next_month>Next month will be {next_month}, which begins on {next_month_start} and ends on {next_month_end}</next_month>
<year>This year is {year}. Any date without an explicit year belongs to {year} unless otherwise specified.</year>
</temporal_references>
</temporal_context_rules>
It works most of the time, but Haiku still occasionally falls back on its training time temporal bias defaulting to 2025, especially on ambiguous formart ike 18/05/2026 or dates that predate the current month (this one is not really a big deal).
e.g:
“mail_body”: “Hello, Following up on our conversation on Tuesday, April 28, I am confirming your appointment for 05/18/2026, at 10:30 a.m. with Ms. Chloe Berliat. Thank you in advance for your assistance. Best regards,”
“user_input”: “I'm confirming the 10:30 a.m. appointment with Ms. Chloe Berliat”
“suggested_response”: "Hello Mr.,
I am writing to confirm your appointment scheduled for Sunday, May 18, 2026, at 10:30 a.m. with Ms. Chloe Berliat.
Best regards,"
May 18 is a Monday in 2026, but a Sunday in 2025, even if I set the time context dynamically, about 70% of the time the system defaults to the 2025 calendar. The only way to work around this is to explicitly specify the day in the user_input.
What I've tried ?
- Applicative date normalization before injection as a partial mitigation but i find this britlle given the diversity of date formats users can input.
- Few-shot + CoT
- Explicit prohibition rules on internal temporal reasoning
So i want to know if there is a prompting pattern that more reliably forces the model to treat injected context as ground truth ?
Any feedbacks are welcome 😉