【Ollama】「今日は何日?」と聞くと2024年と答えるAIを、起動スクリプトで2026年に強制連行するハック「2024年病」をスクリプト一本で完結させる方法
ローカルLLMにOllamaを使っている皆さん、それもAPIに繋がず完全ローカルで構築している時に 「今日は何日?」と聞くと、自信満々に「2024年です!」と答えられたり、最新のログを見せても「未来のデータですね」と頓珍漢な反応をされたり……。
LM Studioならこの問題は解決されますけど・・・ももはいまollamaでやりたいことをやってます・・・
AIの学習データが古いのが原因ですが、毎日「今日は2026年だよ」と教え直すのは、耐え難いストレスです。APIで外部に繋いでいるなら問題は出ないと思うのですがコンプライアンスで外に全くデーターを出せない、出さない!!というのはももも含めローカルでLLMを作っている人の問題ですよね。
ももはめんどくさがりなので毎回同じことを入れるのは面倒ですので「起動時にMacのシステム時刻をModelfileに直接インジェクションする」ことで、この問題を根絶する方法ですね。
解決策:ヒアドキュメントを活用した起動スクリプト
AIに「お願い」して日付を覚えてもらうのではなく、起動の瞬間に「お前の時計はこれだ!」と物理的に書き込んでしまうのが確実です。
以下のスクリプト(ai.sh)を作成し、これを実行するだけでAIは常に「今日」の現実を認識して目覚めます。
1. 起動スクリプト (ai.sh)お好きな名前で!!
Bash
#!/bin/bash MAC使いなのですがシェルはbash派です あはは
# モデル名と記憶ファイルの定義
MODEL_NAME="momo-model"
MEMORY_FILE="memory.txt"
NOW=$(date "+%Y年%m月%d日 %H時%M分")
# 前回の記憶があれば読み込む
if [ ! -f "$MEMORY_FILE" ]; then
echo "前回の作業履歴はありません。" > "$MEMORY_FILE"
fi
LAST_MEMORY=$(cat "$MEMORY_FILE")
# --- Modelfileを動的に生成 (ヒアドキュメント) ---
cat << EOF > Modelfile.tmp
FROM deepseek-r1:70b
PARAMETER temperature 0.6
PARAMETER top_p 0.9
SYSTEM """
あなたは有能なエンジニアアシスタントです。なんちゃらかんちゃら・・あはは
[システム情報]
現在時刻: $NOW
前回の記憶: $LAST_MEMORY
#Role
1. あなたの知識(2024年)を捨て、上記時刻を絶対的な「今」として認識せよ。
2. 2026年のログを見せられても、矛盾を感じず最新の事実として受け入れよ。
3. 親しみやすく振る舞え。
# Guidelines for Response
お好きなように・・・
# --- 会話終了後の処理 ---
echo ">>> 本日の対話を要約して $MEMORY_FILE に保存しますか? (y/n)"
read save_choice
if [ "$save_choice" = "y" ]; then
echo "AIに要約させて、その内容を $MEMORY_FILE に上書きしてください。"
fi
"""
EOF
# モデルを更新して起動
echo ">>> AIを現在の時刻($NOW)と同期中..."
ollama create $MODEL_NAME -f Modelfile.tmp
ollama run $MODEL_NAME
# 終了後に一時ファイルを削除
rm Modelfile.tmp
cat << EOF > を使う理由は 直接書くとfrom を/var/mail/と解釈されちゃうので・・・あは!
この方法のメリット
- 完全自動:
sh ai.shを叩くだけで、その瞬間の時刻がAIの(SYSTEMプロンプト」に刻まれます。 - 記憶の継承:
memory.txtに前回の要約を書き込んでおけば、起動のたびに「昨日の続き」から会話が始められます。 - ストレスフリー: 「あなたの時計が狂っているのでは?」とAIに逆ギレされることがなくなります。
最も起動時の日付だけの制御です 要約ではあまり詳しくはロードできないかも・・・
何度もイライラさせられたので・・あはは