【要約】AWS LambdaでAI先輩を作った — 毎朝5時に話しかけてくれて、@メンションで相談にも乗るSenpai Agent [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者は、AI上司(Boss Agent)のみを使用する場合、心理的な距離が近くなりすぎる問題に直面した。タスクの停滞を報告する前に、感情を吐き出せる相手が必要であった。具体的には以下の課題があった。
- ・心理的ハードル:管理・目標重視のAIには、詰まっている状況を話しにくい。
- ・会話のマンネリ化:LLMの出力が定型化し、ユーザーが飽きてしまうリスク。
- ・システム制約:Slackの3秒タイムアウトによる、重い処理の中断。
// Approach
開発者は、役割を「管理」と「感情サポート」に分離し、用途に応じたモデルとツールを割り当てる設計を採用した。具体的には以下の手法を用いた。
- ・マルチエージェント設計:管理型のBoss Agentと、相談型のSenpai Agentを使い分ける。
- ・コンテキスト注入:Slackの過去履歴を取得し、Claudeに渡すことで会話の重複を回避する。
- ・コスト最適化:朝の挨拶にはClaude Haiku、複雑な相談にはClaude Sonnetを使い分ける。
- ・非同期処理:API GatewayからLambdaをself-invokeさせ、Slackのタイムアウトを回避する。
- ・外部連携:Tavily APIでニュースを取得し、Notion APIのtool_useでタスクを更新する。
// Result
キャラクターの使い分けにより、タスク管理と心理的サポートを両立するワークフローを実現した。具体的な成果は以下の通りである。
- ・自然な対話:過去の履歴や最新ニュースを反映した、マンネリ化しない朝の挨拶を実現。
- ・業務連携:メンションを通じてNotionのタスクステータスを自動更新可能にした。
- ・運用効率:モデルの使い分けにより、精度を維持しつつ実行コストを最適化した。
Senior Engineer Insight
> マルチエージェント設計における「役割の分離」と「コスト・性能のトレードオフ」が極めて実践的だ。特に、Slackのタイムアウト対策として非同期self-invokeを採用している点は、実運用を意識した堅実な設計である。また、履歴をコンテキストとして注入し、LLMの出力のマンネリ化を防ぐ手法は、UX向上において非常に有効なアプローチと言える。スケーラビリティよりも、ユーザーの心理的安全性と継続的な利用体験に重きを置いた、優れたプロトタイプである。