[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】AWS Lambda + Claude APIで「AI上司」を作った — NotionタスクをSlackに届けるBoss Agent [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

筆者が個人のタスク管理を自動化しようとした際、単なる通知機能ではタスクの形骸化を招くという課題に直面した。また、実装過程で以下の技術的な制約にも直面した。


  • 通知の形骸化:単純なBot通知ではユーザーが無視しやすく、能動的な働きかけが必要であった。
  • Slackの3秒制限:Slack Webhookは3秒以内に応答を返さないとリトライが発生する。LLMの推論時間をこの制限内に収めることは困難であった。
  • リトライによる重複:タイムアウトに伴うSlackからのリトライ要求により、メッセージの重複送信が発生する懸念があった。

// Approach

筆者は、LLMの出力制御と非同期アーキテクチャを採用することで、これらの課題を解決した。具体的な手法は以下の通りである。


  • 出力の制御:System Promptでキャラクターを定義し、max_tokensを300に制限することで、簡潔な応答を技術的に担保した。
  • 非同期処理の実装:API Gatewayからのリクエストに対し、Lambdaが即座に200を返却した後、自分自身を非同期(InvocationType='Event')で呼び出すself-invokeパターンを採用した。
  • 自然言語による操作:Claudeのtool_use機能を定義し、LLMがユーザーの意図を解釈してNotion APIを直接呼び出す仕組みを構築した。

// Result

本システムの構築により、タスク管理の能動化と、Slack上での直感的な操作の両立を実現した。具体的な成果は以下の通りである。


  • 能動的なタスク管理:毎朝の自動通知に加え、停滞しているタスクに対してAIが自発的に問いかける環境を構築した。
  • 自然言語による更新:Slackでの会話を通じて、Notion上のタスクステータスや優先度を直接更新することが可能となった。
  • 運用の継続性:キャラクター性を持たせることで、タスク管理に対する心理的なプレッシャーとモチベーションの維持を図った。

Senior Engineer Insight

> Slackの3秒制限に対するself-invokeによる回避策は、実務における非同期設計の定石であり、非常に実戦的である。また、max_tokensによる出力制御は、コスト管理とUXの両面で理にかなっている。ただし、本番環境への投入を検討する場合、tool_useのループ回数制限(本記事では5回)に加え、API呼び出し失敗時のリトライ戦略や、LLMの誤操作を防ぐための人間による承認フロー(Human-in-the-loop)の検討が不可欠である。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。