 colcaroliandClaude Opus 5
|
ae997914c2
|
Make Discord reminder failures diagnosable
リマインドが「⚠️ 応答の生成に失敗しました」だけを返して原因が追えなかった
ため、失敗経路を個別に捕まえてログにも残るようにする。
ロギング: uvicorn は自分のロガーしか設定しないため、アプリ側の
logging.getLogger(__name__) は logging.lastResort 送りになっていた。
WARNING 未満が全て消え、出力にレベルもタイムスタンプもロガー名も付かず、
logger.info("Reminder created: ...") すら残らない状態だった。
main.py で basicConfig を呼び、LOG_LEVEL(既定 INFO)で制御する。
reminders.py:
- choices[0].message の取り出しを個別に捕捉する。tool calling 非対応の
エンドポイントは例外を投げずに choices が空の応答を返すことがあり、
ここで落ちると on_message の汎用ハンドラに流れて原因が消える
- ツール実行を _run_tool() に切り出し、DBエラーを専用の文言で返す。
併せてDBセッションをツール1回分だけ開くようにした。LLMとの往復のあいだ
握り続けると SQLite のロックを長時間保持し、同時に走るAPIリクエストと
競合して "database is locked" を起こしうるため
- tool_choice="auto" を渡すのをやめた。Bedrock はこの引数に非対応で、
今まで通っていたのは app.core.llm が litellm.drop_params=True を
立てている副作用に過ぎず、import 順が変われば壊れる。tools を渡した
ときの既定が "auto" なので省いても挙動は変わらない
- どのモデルで何を処理したかを INFO で残す
CLAUDE.md には Lightsail への接続方法(作業ツリーにあった未コミット分)も
含む。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-24 00:08:44 +09:00 |
|