【要約】AWS Step Functions × DynamoDBでSlack承認フローを作った — waitForTaskTokenパターンの実装 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
LLMを用いた自動投稿エージェントの運用において、生成物の品質管理が大きな課題となっている。AIが生成したコンテンツをそのまま公開することは、事実誤認や不適切な表現のリスクを伴うためである。具体的には以下の問題に直面する。
- ・LLM生成物の事実確認やトーンの調整が困難。
- ・自律的なエージェント運用と、人間による最終承認の共存が必要。
- ・承認待ちの間、ワークフローを効率的に停止・管理する必要がある。
// Approach
Step FunctionsのwaitForTaskTokenを利用し、外部からのコールバックを待機するアーキテクチャを採用している。これにより、人間がSlack上で操作を行うまでワークフローを安全に一時停止できる。実装のステップは以下の通りである。
- ・Step Functionsが発行したTaskTokenをDynamoDBに保存。
- ・Slack Block Kitを用いて、承認・再生成・スキップのボタンを配置。
- ・API Gateway経由でLambdaを起動し、send_task_successでワークフローを再開。
- ・DynamoDBのTTLを活用し、期限切れデータの自動クリーンアップを実施。
// Result
Slack上の直感的な操作により、LLMエージェントの品質管理フローを低コストかつセキュアに実装できる。具体的な成果は以下の通りである。
- ・Slackのボタンクリックのみで、承認や再生成の指示が完結。
- ・TaskTokenをUUIDで間接的に管理し、URLの安全性と可読性を向上。
- ・Step FunctionsのタイムアウトとDynamoDBのTTLを同期させ、不整合を防止。
Senior Engineer Insight
> 実戦的なHITLの設計パターンである。TaskTokenを直接URLに含めず、DynamoDBを介してUUIDで管理する手法は、セキュリティとURL長制限の観点から極めて妥当だ。運用面では、Step FunctionsのタイムアウトとDynamoDBのTTLの同期が、エラー回避の鍵となる。スケーラビリティについては、承認リクエストの急増に備え、DynamoDBのキャパシティ設計に留意すべきである。