Route reminders by tool availability, not keyword matching #11

Merged
colcaroli merged 1 commits from feature/tool-based-reminder-routing into main 2026-08-23 16:35:10 +00:00
Owner

「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

「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>
colcaroli added 1 commit 2026-08-23 16:35:05 +00:00
「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>
colcaroli merged commit 1cd18c4bc5 into main 2026-08-23 16:35:10 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: colcaroli/playchat#11