Route reminders by tool availability, not keyword matching
「7時にモーニングコールをお願い。」のような、REMINDER_KEYWORDS のどれとも 一致しない言い回しがリマインド機能を素通りし、ただの雑談として処理されて いた(本番の api_logs で実例を確認)。「モーニングコール」「起こして」を キーワードに追加しても、次の言い回しでまた同じことが起きるだけなので、 キーワード判定そのものをやめる。 discord_bot.on_message は雑談・天気のキーワード分岐はそのまま残し、それ以外の 全メンションで create_reminder / list_reminders / cancel_reminder の3ツールを 常に同席させる(reminders.build_tool_hint() が現在時刻の文脈を添える)。 使うかどうかはLLM自身の判断に委ねるため、キーワード一覧を事前に尽くす必要が なくなる。本番のBedrock Nova 2 Liteで、実際に失敗していた文言が create_reminder を正しく呼ぶことを確認済み。 reminders.handle_reminder_request() は resolve_reminder_tools(messages, ctx, model) に一般化し、discord_bot 側で組み立てたmessages(人格プロンプト+天気 コンテキスト+ツール文脈)をそのまま受け取れるようにした。tool calling 非対応のモデルが設定されていた場合は、1ラウンド目の例外を検知してツール なしの通常応答にフォールバックする。ツール呼び出しが一般会話の呼び出しに 統合された以上、それだけ別モデルを割り当てる余地がなくなったため REMINDER_MODEL は廃止する。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -74,14 +74,13 @@ USELESS_TIPS_MODEL=
|
||||
DISCORD_WEBHOOK_URL_TIPS=
|
||||
|
||||
# Discord Bot のリマインド機能(メンションで登録し、同じチャンネルへ通知する)
|
||||
# 全メンションでツールを常に同席させ、使うかどうかはLLMが判断する(キーワード判定なし)ため、
|
||||
# WEATHER_NOTIFY_MODEL(未設定ならDEFAULT_MODEL)は tool calling 対応モデルである必要がある
|
||||
# 期限切れのリマインドを探しにいく間隔(秒)
|
||||
REMINDER_CHECK_INTERVAL_SECONDS=30
|
||||
# これより先の日時は登録を拒否する(日数)
|
||||
REMINDER_MAX_AHEAD_DAYS=365
|
||||
REMINDER_LIST_LIMIT=20
|
||||
# 日時の解釈に使うモデル。tool calling 対応モデルを指定すること
|
||||
# (未設定なら WEATHER_NOTIFY_MODEL → DEFAULT_MODEL の順にフォールバック)
|
||||
REMINDER_MODEL=
|
||||
|
||||
# アプリ設定
|
||||
DATABASE_URL=sqlite:///./playchat.db
|
||||
|
||||
Reference in New Issue
Block a user