@startuml Sequence Diagram - Sprites

!define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/master/dist
!includeurl AWSPuml/AWSCommon.puml
!includeurl AWSPuml/Compute/all.puml
!includeurl AWSPuml/Mobile/APIGateway.puml
!includeurl AWSPuml/General/InternetGateway.puml
!includeurl AWSPuml/Database/Database.puml
!includeurl AWSPuml/Database/DynamoDB.puml
!includeurl AWSPuml/Database/ElastiCache.puml
!includeurl AWSPuml/Storage/SimpleStorageServiceS3.puml
!includeurl AWSPuml/NetworkingAndContentDelivery/CloudFront.puml
!includeurl AWSPuml/ApplicationIntegration/SNS.puml
!includeurl AWSPuml/MachineLearning/Rekognition.puml
!includeurl AWSPuml/MachineLearning/Polly.puml
!includeurl AWSPuml/ApplicationIntegration/SQS.puml
!includeurl AWSPuml/MachineLearning/SageMaker.puml

'Comment out to use default PlantUML sequence formatting
skinparam participant {
    BackgroundColor AWS_BG_COLOR
    BorderColor AWS_BORDER_COLOR
}
'Hide the bottom boxes
hide footbox

actor User as user
participant "<color:#magenta><$CloudFront></color>\nAmazon CloudFront" as cdn
participant "<color:#red><$APIGateway>\nAmazon API Gateway" as api
participant "<color:#D86613><$Lambda></color>\nAmazon Lambda\n(upload)" as lambdaUpload
participant "<color:#green><$SimpleStorageServiceS3></color>\nAmazon S3" as s3
participant "<color:#D86613><$Lambda></color>\nAmazon Lambda\n(chat)" as lambdaChat
participant "<color:#D86613><$Database></color>\nVector Store" as vectorstore
participant "<color:#green><$SageMaker></color>\nLLM" as llm




user -> cdn: POST /chat (type='text')

cdn -> api: POST /chat (type='text')

api -> lambdaChat ++ : Invokes lambda

lambdaChat -> lambdaUpload: Embedding

lambdaChat -> vectorstore ++: similarity search

vectorstore -> lambdaChat --: related docs

lambdaChat -> llm ++: question with related docs

llm -> lambdaChat --: 200OK (answer)

lambdaChat -> api --: 200OK (answer)

api -> cdn: 200OK (answer)

cdn -> user: 200OK (answer)

@enduml