LLMは今日が何日か知らない?

学習に利用したデータかグラウンディングした情報しか知りえないという制約上当たり前なのだけど実際に検証してみることにした。

Gemini-1.5-proのAPIを直接実行してみたところ次のような結果だった。

プロンプト:今日は何日?
-----------------------------
結果1:2023年11月8日水曜日です。何か予定はありますか?
結果2:2023年11月までの情報しか知りませんが、今日は何年何月何日ですか?

最近リリースされたにしてはいささか古いが、2023年の11月とハルシネーションを起こすか、知らないと正直にいう結果になった。

Geminiの画面から聞いてみるとどうなるか。

こちらは正しい日付を把握していた。
内部時計を持っているならAPIの時も使えるような気がするので、画面から何かシステムプロンプトのようなものを渡していると想定される。

ちなみにGTP-4でも試したがAPIとGUIで同じような結果となった。


正しい日付を認識させるにはどうすればよいか。
これはプロンプトに埋め込んでやるのが一番早そうだ。

プロンプト:
今日は2024年4月14日、日曜日です。

今日は何日?
-----------------------------
結果:
2024年4月14日、日曜日です。

初歩的なプロンプトエンジニアリングのテクニックで正解をGeminiに認識させることができた。

相対的な日付はどうだろう。

プロンプト:
今日は2024年4月14日、日曜日です。

そのうえで以下の問いに対し、年月日と曜日を答えてください。

今日は何日?:2024年4月14日、日曜日
明日は何日?:
1週間後は何日?:
1か月前は何日?:
1年前は何日?:
3年後は何日?:
-----------------------------
結果:
今日は2024年4月14日、日曜日ですね。

明日は何日?: 2024年4月15日、月曜日
1週間後は何日?: 2024年4月21日、日曜日
1か月前は何日?: 2024年3月14日、木曜日
1年前は何日?: 2023年4月14日、金曜日
3年後は何日?: 2027年4月14日、水曜日

曜日までしっかり当ててきた。


まとめ
日付の概念が入った質問がユーザープロンプトに含まれそうなときはシステムプロンプトとして日付を渡しておく。


おまけ
最近プレビュー発表されたGrounding for Google Searchを使うと日付をグラウンディングして取ってきてくれた。