Demo Architecture

- slack 사용자는 slack app을 통해 궁금한 사항을 질문합니다.
- Slack app의 특성상 3초 안에 response를 받아야 합니다. langchain 특성상 3초 만에 답변을 생성하는 것은 불가능하기에, Slack App에게 우선 200 response를 전달하고 사용자의 질문은 SQS에 등록합니다.
- Langchain을 구현하는 Lambda에서 SQS에서 메세지를 가져옵니다.
- 해당 메세지를 Langchain AmazonKendraReteriver를 활용하여 Kendra에 질문과 관련한 문서가 있는지 검색합니다.
- 검색한 결과를 기반으로 Prompt Engineering 기반으로 Bedrock을 통해 답변을 생성합니다. 답변이 불가능 할 시 모른다고 답변하도록 설정합니다.
- Bedrock을 통해 생성한 답변을 REST 기반으로 Slack 채널로 전달합니다.
Demo Output

Demo Environment
- Region : us-east-1
- Kendra
- Bedrock
- Model :anthropic.claude-v2
- Token : 2000
Lesson Learned
1. Lambda 호출이 여러번되어 답변이 여러번 발생하는 문제
- 문제 : Slack을 통해서 질문을 했을때, 아래와 같이 답변이 여러번 오는 문제가 발생함.

- 원인 : Slack App에서 사용자가 던진 질문을 Lambda로 전달하는데, Slack App에서 3초 안에 답변을 받지 못하면 여러번 재시도 하는 로직이 있었음.(관련 링크)
