12. 학습의 단계_AWS Bedrock_ 두번째 강의 -8일차 -

  2025년 4월 29일

- Bedrock 두번째 강의 수강 시작.


-------

1단계. 학습의 단계

1. AWS Bedrock


첫번째 강의) Building Multi-Agentic AI Workflows on AWS Bedrock: 수강완료 (2025/4/13~04/16)
두번째 강의) Learn Agentic AI Basics, Amazon Bedrock Multi-Agent Framework, Build 2 Use Cases- Hotel Booking & Multi-Agent Travel App: 수강시작 (2025/4/29~)

I. 수강 전 기대
첫번째 강의에서 아쉬웠던 Hands-on을 조금 더 해볼 수 있을 것으로 기대함. 커리큘럼을 보니 간단하지만 Bedrock에서 만든 multi agent를 프론트로 배포하는 것도 배울 수 있는 것으로 보임.

II. 수업내용

1일차(4/29): 앞으로 배울 내용 개괄 + AI Agent 5가지 요소 (Planning, Tools & Actions, Memory, Guardrails, Agent Communication)
2일차(4/30): 어제 배운 AI Agent의 기능 중 첫번째 Planning에 관한 Demo ~ Agent Communication
3일차(5/1): Deep dive - Amazon Bedrock Agents (Agent creation 및 setting)
4일차(5/6): How do Agents work? ~ Use Case 1 - Hotel Booking Agent
5일차(5/7): Use Case 1 - Hotel Booking Agent ~ Agent Creation
6일차(5/14): Agent Integration with Knowledge Bases for Room Information ~ Hotel Room Availability
7일차(5/19): Hotel Room Booking - DynamoDB ~ Hotel Room Booking - Agent & Lambda & Action Group Integration
8일차(5/20): Hotel Room Booking - Agent & Lambda & Action Group Integration ~ Final Demo 

Agent에서 호텔 예약에 필요한 정보를 채팅 형태로 제공하면, Agent는 이를 user input으로 필요한 값들을 받아들이고 첫번째 Tool (Action Group - Lambda Function)로서 사용자가 원하는 방의 Availability를 확인한다. 두번째 Tool (Action Group - Lambda Function)로서 해당 방에 예약을 진행한다. 별도의 DB table 상에 새로운 Booking ID를 생성하고 사용자의 이름과 방 타입, 며칠 간 머무는지, 체크인 날짜는 언제인지 등의 예약 정보를 저장하게 된다.


위 두번째 Lambda를 구현하는 과정에서 무수히 많은 실수와 오류를 겪었다.
apiPath 로 적었어야 하는 곳에 api_Path로 적는 오류가 있었고, POST 방식으로만 작성해야하는데 코드 템플릿에 남아있는 GET을 삭제하지 않아 오류가 발생하기도 했다. 그럼에도 몇 차례 코드를 수정하고 Grok 등을 통해 오류가 발생된 부분의 수정을 거치면서 결과적으로는 모든 문제를 해결하고 Agent가 두번째 Tool을 정상적으로 call 하여 예약정보를 DB에 저장하도록 했다.

이러한 수정 과정을 거듭 거치면서, 내가 과연 Bedrock을 지속적으로 사용할 수 있을 것인지에 대한 자신감이 떨어진다. 왜냐하면 나는 기본적으로 Lambda를 작성하고 있는 파이썬에 대한 이해도가 매우 낮기 때문이다. 이러한 상황에서 현재 Bedrock을 계속 배우는 것이 좋은 접근인가 싶기도 하다. 그러나 남은 두번째 강의를 잘 이수하게 되면 (설령 내가 직접 Lambda 코드를 작성하진 못할지라도) Bedrock의 전체적인 동작 방식에 대해 훨씬 더 잘 이해할 수 있으리라 기대한다. 그리고 이후 어느 시점에 더 정교하게 동작하는 Multi agent를 도입하기 위해서 Bedrock을 다시 켜게 될 시점도 있으리라 기대한다. (그때도 나 스스로 Lambda 코드를 작성하지 못한다 하더라도 동작방식을 이해하고 있고 Bedrock을 통해 기대하는 부분이 명확하기 때문에 Lambda 코드를 작성할 수 있는 개발자를 일시 고용하여 문제를 해결할 수도 있을 것이다.)

이렇게 Use Case 1 - 호텔 방 예약을 위한 Single Agent 구축의 전반적인 강의가 종료되었다. 마지막 부분으로 Agent Guardrails 와 Memory Setup 부분을 배우고 Use case 1을 마무리하고자 한다.

Guardrails 설정의 목적은 다른 사용자의 booking ID, 예약자 이름과 같은 개인정보가 유출되지 않도록 하기 위함이다. (HotelBookingGuardrails)

AWS Guardrails을 생성하게 되면, 다음과 같이 Harmful categories를 설정할 수 있다.

일반적인 프리셋 사용 외에도 특정한 Topic에 대해 거절하도록 가드레일을 설정할 수 있다.


또한 욕설(profanity)과 특정 단어나 구문에 대해서도 block을 설정할 수 있다.


세팅한 가드레일은 아래와 같이 Test해볼 수 있다. View Trace를 클릭하면 사용자의 인풋이 가드레일의 어떤 정책으로 인해 blocked 되었는지 볼 수 있다.


마지막으로 Agent를 배포하는 것과 Version 관리, 별칭 관리에 대해 배웠다. (매우 심플)

이제 Use Case 1로 구성한 Agent를 간단한 UI로 구현하여 웹 서버에 띄워보려 한다.
VS Code, Python을 설치하고, AWS CLI를 설치했다. Anaconda-Navigator 설치하고 이를 통해 VS Code를 런치할 수 있도록 세팅했다. (처음엔 VS Code가 보이지 않았는데, VS Code의 커맨드 팔레트에서 Shell Command: Install 'code' command in PATH 를 클릭했더니 보임. thanks to 다비의 작업실)

이후에 다시 아나콘다 네비게이터를 실행시키니 또 다시 VS Code가 뜨지 않는 문제가 있었고, 이번에는 커맨드 팔레트에 명령어를 쳐도 EACCES: permission denied가 뜨면서 작업이 수행되지 않았다. 이에 관해 오류 해결을 하고자 서칭을 해보니 bin 디렉토리에 접근해서 PATH 코드를 지우고 다시 설치하면 된다고 하여, 조언대로 실행하였더니 정상 동작하였다. (thanks to @Leejaelll 님)

AWS credential 정보와 Agend ID 등을 추가하고 나서 python을 실행시킨 결과, 아래와 같이 화면이 정상적으로 출력되고 앞서 만들어 둔 Bedrock Agent 또한 정상적으로 동작하는 것을 확인할 수 있다. 



앗.. 그런데 Hotel 예약을 진행해야하는데, 해당 정보들을 개인정보라고 인식해서 Guardrails가 동작했다. 너무 예민하게 가드레일이 적용되어 Agent가 사용자의 원하는 행동을 수행하지 못하게 되었으므로 가드레일 부분을 다시 접속해서 어떤 문제가 있는지 다시 살펴봐야겠다. (내일..!) 




2. N8N
3. Claude MCP
(4. LangChain?)
(5. A2A?)


댓글

이 블로그의 인기 게시물

20. 학습의 단계_n8n -1일차 (시작) -

01. 1억~10억 비즈니스 매매의 시대: 실력이 승부를 가른다

31. 서비스 구축단계_세컨브레인 -2,3일차: 구현 (2. 채널연결 완료) -