본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 28. 00:01

AI에게 내 휴가 계획을 맡겨보았다 (그 결과물)

요약

Strands SDK와 Amazon Bedrock을 활용하여 항공권, 호텔, 날씨, 예산을 관리하는 AI 여행 에이전트를 구축하는 과정을 소개합니다. AWS Lambda와 S3 등 클라우드 서비스를 결합한 프로덕션 수준의 아키텍처를 제안합니다.

핵심 포인트

  • Strands SDK를 통한 에이전트 프레임워크 구축
  • Amazon Bedrock(Claude 3.5 Sonnet) 기반의 추론 엔진 활용
  • AWS Lambda를 이용한 도구(Tool) 실행 구조
  • S3 및 Secrets Manager를 활용한 데이터 및 보안 관리

브라우저 탭을 47개나 열어두고 있었습니다. 그래서 Strands SDKAmazon Bedrock으로 AI 여행 에이전트를 직접 만들었습니다 ✈️

자, 솔직히 말씀드릴게요.

저는 브라우저 탭을 47개나 열어두고 있었습니다.

47개라니.....

항공권 예약 앱의 항공편, 예약 사이트의 호텔, 광고가 40%나 섞인 수상한 웹사이트의 날씨 정보. 그리고 밤 11시에 제가 만든 스프레드시트에는 **

당신의 에이전트 (Agent) = 똑똑한 인턴
당신의 도구 (Tools) = 인턴이 할 수 있는 일
당신의 프롬프트 (Prompt) = 지침 (Instructions)
...

하지만 이 인턴은 다음과 같습니다:

  • 마감 기한을 절대 어기지 않습니다.

10/10점, 다시 고용할 의사가 있습니다.

우리가 만들고 있는 것

우리의 AI 여행 플래너는 다음과 같은 일을 해야 합니다:

  • ✈️ 항공편 찾기
  • 🏨 호텔 찾기
  • 🌦️ 날씨 확인
  • 📋 예산 확인 및 전체 일정 (Itinerary) 구축

에이전트 하나.
도구 네 개.
프롬프트 하나.

끝.

아키텍처 개요 (Architecture Overview)

사용된 스택 (Stack Used)

네, 이것은 프로덕션 환경에 적합한(production-friendly) 구성입니다.

곧 그렇게 만들 것입니다.

단계 0 — 설정 (Setup)

의존성(Dependencies) 설치:

pip install strands-agents strands-agents-tools boto3

Amazon Bedrock 내에서 Claude 3.5 Sonnet을 활성화하세요.

약 2분 정도 소요됩니다.

🚨 API 키를 하드코딩하지 마세요

알고 있습니다.

당신은 "그저 테스트 중일 뿐"이라는 것을요.

하지만 그 API 키는 결국 공개된 GitHub 리포지토리(repo)에 올라가게 될 것입니다.

그러면 결국 지갑을 태워버릴 정도의 청구서를 받게 될 것입니다.

대신 AWS Secrets Manager를 사용하세요.

import boto3
import json

...

함수 호출 한 번이면 됩니다.
그 후 평온하게 잠드세요.

도구 #1 — 항공편 검색 ✈️

Strands에 대해 저를 놀라게 했던 한 가지는:

당신의 docstring(docstring)은 프롬프트(prompt)의 일부입니다.

개발자를 위한 것이 아닙니다. 모델을 위한 것입니다.

LLM(대규모 언어 모델)은 도구 설명을 읽고 다음을 결정합니다:

  • 언제 호출할지
  • 어떻게 호출할지
  • 어떤 인자(arguments)를 전달할지

좋은 docstring = 똑똑한 에이전트 (agents).
나쁜 docstring = 혼돈.

from strands import tool

@tool
...

네, 저는 "vibe" 필드를 추가했습니다.

아니요, 모델에게는 그것이 필요하지 않습니다.

네, 그것은 저를 행복하게 만들었고, 저의 의사결정을 더 빠르게 만들었습니다....

도구 #2 — 호스텔이 아닌 진짜 호텔 🏨

제가 무엇을 싫어하는지 아시나요?

다음과 같이 적힌 호텔 목록 말입니다:

"박당 $89!"

그러고 나서 어떻게든 다음과 같이 변합니다:

  • $89 기본 가격
  • 세금
  • 리조트 요금 (resort fee)
  • "서비스 요금 (service charge)"
  • "편의 수수료 (convenience fee)"
  • 정신적 피해

제 도구는 그렇게 작동하지 않습니다.

@tool
def search_hotels(
    destination: str,
...

도구 #3 — 날씨 확인 🌧️

오로라를 보려고 고글을 챙겼던 것이 다시는 겪고 싶지 않은 인격 수양의 경험이었기 때문입니다.

@tool
def get_weather(
    destination: str,
...

작은 도구. 거대한 유용성.

도구 #4 — 일정 생성 📋

이곳에서 모든 것이 하나로 합쳐집니다.

항공편 ✅
호텔 ✅
날씨 ✅

이제 에이전트(agent)는 마침내 현실적인 일정을 짤 수 있습니다.

그리고 네 — 우리는 그것을 S3에 저장합니다.

제 메모(Notes) 앱은 믿을 수가 없거든요.

from datetime import datetime

@tool
...

에이전트 조립하기

이제 재미있는 부분입니다.

from strands import Agent
from strands.models import BedrockModel

...

터미널 출력

[Tool Call] search_flights
✓ Thai Airways selected

...

✅ 예산 내 완료 (Under budget) 문구는 느낌이 남달랐습니다.

프로덕션 교훈 (어렵게 배운 것들)

솔직한 진실을 말씀드리겠습니다:

당신의 로컬 데모(local demo)는 프로덕션 시스템(production system)이 아닙니다.

결국 당신을 힘들게 할 요소들:

문제해결책
하드코딩된 키 (Hardcoded keys)Secrets Manager
...

CloudWatch로 로깅 추가하기

import logging
from strands.handlers import CallbackHandler

...

이것이 다음의 차이입니다:

  • "멋진 데모"
  • 그리고 "실제 소프트웨어"

나의 가장 큰 핵심 요약

1. Docstring(독스트링)은 생각보다 훨씬 중요합니다

모델은 이를 지침 (Instructions)으로 사용합니다.

진지하게 다루세요.

2. 도구 호출 순서가 중요합니다

순서 규칙이 없으면, 제 에이전트는 호텔 비용을 알기도 전에 여행 일정을 짜버렸습니다.

계획은 멋졌지만, 예산은 완전히 틀렸습니다.

3. 낮은 Temperature(온도) = 더 나은 계획

높은 Temperature는 창의성에는 좋지만,

예산 책정에는 적합하지 않습니다.

4. 모든 것을 지속시키세요 (Persist Everything)

S3, DynamoDB, 데이터베이스.

대화 메모리 (Conversation memory)는 결국 사라집니다.

여러분의 데이터는 사라져서는 안 됩니다.

5. 데모와 프로덕션 사이의 간극은 실재합니다

프로토타입과 데모는 마법 같습니다.

프로덕션 (Production) 시스템은 현실이 야구 방망이를 들고 나타나는 곳입니다.

책임감 있게 구축하세요.

FAQ

Strands 인증이 필요한가요?

아니요.

그저 다음만 있으면 됩니다:

  • Python
  • Bedrock 접근 권한
  • 함수 (Functions)

시작하기에는 그것으로 충분합니다.

다른 모델을 사용할 수 있나요?

물론입니다.

Claude를 다음 모델들로 교체할 수 있습니다:

  • Llama
  • Mistral
  • Titan
  • Bedrock에서 사용 가능한 모든 모델

제 에이전트가 도구를 이상한 순서로 호출합니다

시스템 프롬프트 (System prompt)를 수정하세요.

명시적으로 작성하세요.

LLM은 명시적인 지침을 좋아합니다.

다음 단계는?

다음과 같이 확장할 수 있습니다:

  • 🧠 DynamoDB를 활용한 메모리
  • 💬 Slack 봇
  • 🤖 멀티 에이전트 오케스트레이션 (Multi-agent orchestration)
  • 🏭 Bedrock AgentCore 배포

그 지점부터 정말 흥미로워집니다.

저는 다음과 같은 상태로 이 여정을 시작했습니다:

  • 47개의 브라우저 탭
  • 망가진 스프레드시트 하나
  • 그리고 여행 계획을 짜며 느끼는 분노

그리고 다음과 같은 상태로 끝냈습니다:

  • 작동하는 AI 여행 에이전트
  • 태국 여행 일정
  • 그리고 영구적으로 닫아버린 스프레드시트

솔직히 말해도 될까요?

그럴 만한 가치가 있었습니다.

이 포스트가 즐거우셨다면:

  • ❤️ 반응을 남겨주세요
  • 🔁 다른 개발자에게 공유해 주세요
  • 👀 더 많은 AI 에이전트 튜토리얼을 위해 팔로우해 주세요

그리고 만약 여러분이 Strands SDK를 사용하여 멋진 것을 만드신다면 — 저는 진심으로 그것을 보고 싶습니다. 댓글창에 남겨주시거나 LinkedIn을 통해 연락해 주세요. 저는 AWS에서 근무하고 있으며, AI에 대해 구축하고 의견을 나누는 것을 매우 좋아합니다!

즐거운 빌딩(Building) 되시길 바랍니다. ✈️

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0