Strands Python SDK
모델→프롬프트→@tool→MCP→Structured Output
Agent 구성
모델→프롬프트→@tool→MCP→Structured Output
에이전트를 만드는 가장 빠른 방법
3줄 코드로 시작하는 프로덕션 에이전트 SDK
Agent 구성
Model + Tools + System Prompt · 3줄 코드
Agent = Model + Tools + System Prompt
이 세 가지 조합이 에이전트의 전부 — 3줄 코드의 정체
세 가지면 충분하다
Model이 판단하고, Tools가 행동하고, System Prompt가 방향을 잡습니다 — agent("질문") 하나로 에이전틱 루프가 시작됩니다.
- Model — 필수
- Tools — 선택
- System Prompt — 선택
발표자 노트
에이전트라고 하면 뭔가 복잡한 구조물을 상상하기 쉬운데, Strands에서는 이 세 가지가 전부입니다. 비유하자면 Model은 두뇌, Tools는 손발, System Prompt는 업무 지침서예요. 새로 온 팀원에게 지침서를 주고 필요한 도구를 쥐여주는 것과 같은 구조입니다. 이 그림 하나만 머리에 넣어두시면, 이후 파트들이 전부 이 세 요소를 하나씩 깊이 파는 심화라는 걸 아시게 됩니다.
구성요소의 역할
Model만 필수 — 나머지는 없어도 동작하는 선택 요소
Model
추론 엔진 — 도구 선택과 완료 여부를 판단
- LLM 프로바이더 — BedrockModel 등 공식 15종
- 필수 — 에이전트의 두뇌
- 심화 → PART 5 · 모델 프로바이더
Tools
행동 능력 — 외부 세계와 상호작용
- @tool 함수 또는 MCPClient
- 선택 — 없으면 그냥 채팅봇
- 심화 → PART 4 · 도구 생태계
System Prompt
페르소나 — 역할·규칙·응답 형식 정의
- LLM의 system 메시지로 전달
- 선택 — 없으면 범용 응답
- 작성법 → 이 파트에서 이어서
필수는 Model 하나 — 이미 있는 채팅봇에 도구만 더하면 그대로 에이전트가 됩니다.
발표자 노트
세 요소 중에 필수가 Model 하나뿐이라는 게 재미있는 부분입니다. Tools 없이 만들면 그냥 채팅봇이 되고, System Prompt가 없으면 범용 응답을 하는 비서가 됩니다. 거꾸로 말하면, 이미 갖고 계신 채팅봇에 도구만 더하면 에이전트가 된다는 뜻이기도 하죠. 각 요소는 뒤 파트에서 깊이 다루니까, 여기서는 역할 구분만 잡고 넘어가시면 됩니다.
Model — 추론 엔진
어떤 LLM이 판단을 맡을지 지정 — 에이전트의 두뇌
from strands import Agent
from strands.models import BedrockModel
# ① 프로덕션 — Bedrock (IAM 인증, 권장)
model = BedrockModel(model_id="us.anthropic.claude-sonnet-4-6")
agent = Agent(model=model)
# ② 로컬 개발로 전환 — 아래 2줄만 교체, 나머지 코드는 그대로
# from strands.models.ollama import OllamaModel
# agent = Agent(model=OllamaModel(model_id="llama3"))
- BedrockModel — IAM 인증, 프로덕션 권장. 도구 선택·반복·완료를 판단하는 추론 엔진
- 모델 교체는 2줄 — tools·system_prompt 코드는 그대로
- 공식 15종 프로바이더 지원 — 상세는 PART 5
발표자 노트
코드에서 주목하실 부분은 교체 비용입니다. 프로덕션에서는 IAM 인증을 쓰는 BedrockModel을 권장하고, 로컬 개발로 전환할 때는 주석 처리된 두 줄처럼 Ollama로 바꾸면 끝이에요. 모델을 바꿔도 tools와 system_prompt 쪽 코드는 한 글자도 안 바뀝니다. 회사의 모델 정책이 바뀌어도 에이전트 로직을 다시 짤 필요가 없다는 건 실무에서 꽤 큰 장점입니다.
Tools — 행동 능력
모델이 호출할 수 있는 함수 목록 — 외부 세계와의 접점
핵심 포인트
- @tool
- Python 함수를 그대로 도구로 등록하는 데코레이터
- docstring
- 모델에게 전달되는 사용 설명서 — 구체적일수록 선택이 정확
- tools=[...]
- 모델의 결정을 실제 행동으로 옮기는 접점
- 확장
- 카테고리별 빌트인 + MCP 연결 — 상세는 PART 4
코드
from strands import Agent, tool
# 함수에 @tool만 붙이면 모델이 호출 가능한 도구가 됨
@tool
def get_weather(city: str) -> str:
"""도시의 현재 날씨를 조회합니다."""
return f"{city}: 맑음, 24°C"
# 등록 — 모델이 선택할 수 있는 행동 목록
agent = Agent(model=model, tools=[get_weather])
발표자 노트
여기서 많은 분들이 놀라시는데, 도구를 만드는 데 별도의 클래스나 스키마 정의가 없습니다. 평범한 Python 함수에 @tool 하나 붙이면 끝이에요. 대신 docstring이 모델에게 그대로 전달되기 때문에, 함수 설명을 사람 동료에게 인수인계하듯 구체적으로 쓰는 습관이 중요합니다. tools 리스트에 담는 순간 모델의 선택지가 되는 거고요. 도구 이야기는 PART 4에서 본격적으로 이어가겠습니다.
System Prompt — 페르소나
역할·규칙·응답 형식을 텍스트로 정의 — 가장 강력한 행동 제어 수단
agent = Agent(
model="us.anthropic.claude-sonnet-4-6",
# ① 페르소나 — 정체성·행동 규칙을 system 메시지로 전달
system_prompt="""당신은 AWS 비용 분석 전문가입니다.
규칙:
- 항상 get_cost_data 도구로 실제 데이터를 확인한 뒤 답변
- 추측 금지 — 데이터 없으면 "확인 불가"로 답변
- 금액은 USD 기준, 소수점 2자리까지
출력 형식:
- 서비스별 비용을 테이블로 정리
- 전월 대비 증감률 포함""",
# ② 위 '규칙' 문장이 도구 사용 조건을 통제
tools=[get_cost_data, get_recommendations],
)
- 정체성·행동 규칙 정의 — LLM의 system 메시지로 전달
- 도구 사용 조건·금지 사항을 문장으로 통제
- 구체적일수록 행동이 일관됨 — 규칙·출력 형식 명시 권장
발표자 노트
시스템 프롬프트는 셋 중에 가장 저평가되는 요소인데, 사실 가장 강력한 행동 제어 수단입니다. 예시의 규칙 섹션을 보시면 도구 사용 조건을 문장으로 통제하고 있죠. 추측 금지, 데이터가 없으면 확인 불가로 답하라 — 이런 문장 하나가 근거 없는 답변을 실질적으로 줄여줍니다. 에이전트가 이상하게 동작할 때는 코드보다 시스템 프롬프트를 먼저 의심해 보시길 권합니다.
3줄 에이전트
Model·Tools·System Prompt를 코드로 옮기면 — 그대로 동작하는 에이전트
핵심 포인트
- model
- 추론 엔진 — 도구 선택·반복·완료를 판단 (심화는 PART 5)
- tools
- 모델이 선택할 수 있는 행동 목록 (심화는 PART 4)
- system_prompt
- 역할·규칙·응답 형식 — 페르소나
- agent("질문")
- 에이전틱 루프 시작 — 다음 파트의 주제
코드
from strands import Agent
from strands.models import BedrockModel
from strands_tools import http_request
# 에이전트 조립 — 모델 + 도구 + 시스템 프롬프트
agent = Agent(
model=BedrockModel(model_id="us.anthropic.claude-sonnet-4-6"),
tools=[http_request],
system_prompt="GitHub API 도우미입니다. 한국어로 답변합니다.",
)
# 실행 — 질문 한 줄로 에이전틱 루프 시작
result = agent("strands-agents/harness-sdk 저장소의 star 수는?")
발표자 노트
앞서 본 세 구성요소를 실제로 조립하면 이 코드가 됩니다. 임포트를 빼면 실질적인 코드는 Agent 생성과 호출뿐이에요. 그런데 마지막 줄에서 질문을 넘기는 순간 무슨 일이 벌어질까요? 모델이 http_request 도구로 GitHub API를 부르고, 결과를 관찰하고, 답할지 더 조회할지 스스로 판단합니다. 이 반복 과정이 바로 다음 파트의 주제, 에이전틱 루프입니다.
Agent · Tool · Model — 세 가지로 시작하는 프로덕션 에이전트