LLM으로 Anthropic의 Claude3을 사용하기 위하여, Amazon Bedrock의 us-west-2 리전을 사용합니다. Model access에 접속해서 [Edit]를 선택하여 Anthropic Claude의 Sonnet과 "Titan Embeddings G1 - Text"은 LLM 및 Vector Embedding을 위해 enable 합니다.
여기서는 AWS Cloud9에서 AWS CDK를 이용하여 인프라를 설치합니다. 또한 편의상 서울 리전을 통해 실습합니다.
- Cloud9 Console에 접속하여 [Create environment]-[Name]에서 “chatbot”으로 이름을 입력하고, EC2 instance는 “m5.large”를 선택합니다. 나머지는 기본값을 유지하고, 하단으로 스크롤하여 [Create]를 선택합니다.
- Environment에서 “chatbot”를 [Open]한 후에 아래와 같이 터미널을 실행합니다.
- EBS 크기 변경
아래와 같이 스크립트를 다운로드 합니다.
curl https://github.com/raw/kyopark2014/technical-summary/main/resize.sh -o resize.sh
이후 아래 명령어로 용량을 80G로 변경합니다.
chmod a+rx resize.sh && ./resize.sh 80
- 소스를 다운로드합니다.
git clone https://github.com/kyopark2014/llm-agent
- cdk 폴더로 이동하여 필요한 라이브러리를 설치합니다.
cd llm-agent/cdk-llm-agent/ && npm install
- CDK 사용을 위해 Boostraping을 수행합니다.
아래 명령어로 Account ID를 확인합니다.
aws sts get-caller-identity --query Account --output text
아래와 같이 bootstrap을 수행합니다. 여기서 "account-id"는 상기 명령어로 확인한 12자리의 Account ID입니다. bootstrap 1회만 수행하면 되므로, 기존에 cdk를 사용하고 있었다면 bootstrap은 건너뛰어도 됩니다.
cdk bootstrap aws://[account-id]/us-west-2
- 아래 명령어로 인프라를 설치합니다.
cdk deploy --all
인프라가 설치가 되면 아래와 같은 Output을 확인할 수 있습니다.
- Hybrid 검색을 위한 Nori Plug-in 설치
OpenSearch Console에서 "llm-agent"로 들어가서 [Packages] - [Associate package]을 선택한 후에, 아래와 같이 "analysis-nori"을 설치합니다.
- API에 대한 Credential을 획득하고 입력합니다.
- 일반 검색을 위하여 Tavily Search에 접속하여 가입 후 API Key를 발급합니다. 이것은 tvly-로 시작합니다.
- 날씨 검색을 위하여 openweathermap에 접속하여 API Key를 발급합니다.
- langsmith.md를 참조하여 LangSmith에 가입후 API Key를 발급 받습니다.
Secret manger에 접속하여, openweathermap-llm-agent, tavilyapikey-llm-agent, langsmithapikey-llm-agent에 접속하여, [Retrieve secret value]를 선택 후, api key를 입력합니다.
- Output의 WebUrlforstreamchatbot의 URL로 접속합니다. 만약 Credential을 입력 전에 URL을 접속을 했다면, Lambda를 재배포하거나 일정 시간후에 Lamba가 내려갈때까지 기다렸다가 재접속하여야 하므로, Credential들을 입력 후에 URL로 접속하는것이 좋습니다.