사용자가 자신만의 AI 캐릭터를 만들어 다양한 주제로 대화할 수 있는 애플리케이션입니다.
사용자는 AI의 외형, 성격, 특징 등을 자유롭게 설정할 수 있으며, AI는 사용자의 관심사와 선호도를 반영하여 개인화된 대화를 제공합니다. 또한 다양한 AI 캐릭터를 생성하고 설정을 변경할 수 있어 창의적인 상호작용이 가능합니다.
사용자는 Amazon API Gateway를 통해 Amazon S3에서 호스팅되는 웹사이트에 접근할 수 있습니다.
- Amazon API Gateway: 사용자의 요청을 받아서 S3 에 있는 정적 웹 파일들을 전달합니다.
- Amazon S3 정적 웹 호스팅: HTML, CSS, JavaScript 파일과 같은 정적 콘텐츠를 사용자에게 빠르고 안정적으로 전달합니다.
서버리스 아키텍처를 사용하여 확장성과 유연성을 높혔습니다.
주요 구성 요소는 다음과 같습니다:
- Amazon API Gateway: 사용자의 요청을 받아 AWS Lambda 함수로 라우팅합니다.
- AWS Lambda: 애플리케이션 구동에 필요한 API 비지니스 로직을 실행합니다.
- Amazon S3: 사용자 정보, AI 정보, 채팅 히스토리 등의 데이터를 저장합니다.
애플리케이션의 로직은 크게 4가지 Lambda 함수로 구성됩니다:
- Chat 함수: 사용자의 채팅 요청을 처리하여 실시간 응답을 제공합니다. S3에서 사용자 정보와 AI 정보, 채팅 히스토리를 읽어와 실시간 대화를 가능하게 합니다.
- Image Generate 함수: 사용자의 이미지 생성 요청을 처리하여 이미지를 생성하고 결과를 반환합니다.
- Summary 함수: 사용자 정보를 기반으로 파운데이션 모델이 사용자에 대한 요약 정보를 제공합니다.
- Update Info 함수: 사용자가 정보를 업데이트하면 이를 처리하여 최신 정보를 S3에 저장합니다.
Amazon Bedrock와 AI 모델을 활용하여 다양한 기능을 제공합니다.
- AI 이미지 생성: Stability AI의 Stable Diffusion XL 모델을 사용하여 사용자 입력 텍스트에 맞는 이미지를 생성합니다.
- 자연어 처리: Claude 3.5 Sonnet 모델 기반으로 채팅, 요약 등의 기능을 제공하여 사용자와 자연스러운 대화가 가능합니다.
사용자와 AI 의 정보를 업데이트합니다.
AI 의 이미지를 생성합니다.
사용자와 AI 정보 요약하기. 요약정보는 AI의 첫 대화 인사말로 사용됩니다.
AI 와 대화를 합니다.
Amazon Bedrock 콘솔로 이동하세요. 화면 왼쪽에서 아래로 스크롤하여 Model access를 선택합니다. 오른쪽에서 주황색 Manage model access 버튼을 선택후 사용 하려는 모델을 모두 Enabled 로 변경합니다.
- Claude 3 Sonnet
- Claude 3.5 Sonnet (Claude 3 Sonnet 과 둘 중 하나 선택)
- Claude 3.5 Sonnet 모델 사용시 cdk-my-ai-friend-stack.ts 에서 modelId 를 변경해주시면 됩니다.
- Stable Diffusion XL
Getting started with the AWS CDK
npm -g install typescript
npm install -g aws-cdk
cdk --version
cdk bootstrap aws://123456789012/us-east-1
cd cdk-my-ai-friend
npm i aws-cdk-lib
cdk deploy
애플리케이션 코드에 포함되어 있기 때문에 필수로 수행해야 하는 단계는 아닙니다. 참고: Working with layers for Python Lambda functions
cd package-layer
rm -rf layer_venv
rm -rf python
rm package-layer.zip
python3.11 -m venv layer_venv
source layer_venv/bin/activate
pip install -r requirements.txt
pip install --platform manylinux2014_x86_64 --target=layer_venv/lib/python3.11/site-packages --no-deps --upgrade -r requirements.txt
mkdir python
cp -r layer_venv/lib python/
zip -r package-layer.zip python
김기철 (Kichul Kim)
- E-mail: [email protected] ([email protected])
- LinkedIn: https://www.linkedin.com/in/kichul-kim-4bb293135/
최지선 (Jisun Choi)
- E-mail: [email protected] ([email protected])
- LinkedIn: https://www.linkedin.com/in/지선-최-5a8666a6/