【要約】グループLINEの流れを拾うため要約BotをLambdaで作った [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者は、LINEグループに溜まる大量の未読メッセージを追う手間を解消したいと考えた。しかし、実装にあたっては以下の技術的課題に直面した。
- ・トリガーの脆弱性:単純な文字列一致では、メンションの形式変化に対応できない。
- ・リソースの競合:Lambdaの同時実行による、Gemini呼び出しの連打を防ぐ必要がある。
- ・データ管理:会話履歴の保存期間管理と、プライバシー保護の両立が求められた。
// Approach
開発者は、運用コストを抑えつつ、堅牢な要約機能を実現するためにサーバーレス構成を採用した。具体的には以下の手法を組み合わせた。
- ・サーバーレス構成:AWS Lambdaを用い、Webhook受信時のみリソースを消費する。
- ・データ管理:DynamoDBのTTL機能を利用し、メッセージを30日間自動保持する。
- ・排他制御:DynamoDBの条件付き更新により、グループ単位のロックを取得する。
- ・柔軟な検知:LINE APIのmentionオブジェクトを解析し、検知精度を高めた。
// Result
本Botの導入により、ユーザーはメンション一つで会話の要約を得られるようになった。
- ・要約の利便性:直近100件から最大500件のメッセージを即座に要約できる。
- ・運用の効率化:SAMによるIaC化により、インフラ管理をコードで完結させている。
- ・今後の展望:画像解析や、LINEの制約に合わせた出力形式の改善が課題である。
Senior Engineer Insight
> 個人開発として、サーバーレスの特性を活かした極めて合理的な設計である。特に、DynamoDBの条件付き更新を用いた排他制御により、Lambdaの同時実行によるLLMコストの暴走を防ぐ手法は、実戦的な知見に基づいている。一方で、LINEの仕様(Markdown非対応や画像非対応)が、UXのボトルネックとなっている。エンタープライズ用途に転用する場合、メッセージのマルチモーダル解析や、より厳密な状態管理の検討が必要だろう。