프롬프트 캐싱으로 반복 토큰 비용 90% 절감. 시스템 프롬프트·도구 정의처럼 매 호출 동일한 prefix를 캐시하여 입력 토큰 과금 최소화.
2
속도 최적화
스트리밍으로 TTFT(Time To First Token)를 최소화. 전체 응답 완료를 기다리지 않고 토큰 단위로 즉시 전달하여 체감 지연 제거.
3
인프라 최적화
워크로드 특성에 맞는 배포 타겟 선택. Lambda·Fargate·AgentCore Runtime 중 콜드스타트·비용·확장성 균형점을 찾아 운영 부담 최소화.
takeaway
캐싱은 반복 prefix의 재처리를 없애고, 스트리밍은 첫 토큰을 앞당기며, 배포 타겟은 워크로드에 맞는 균형점을 찾습니다.
PART 1 · 프로덕션 전환
프로덕션 핵심 지표
캐싱·스트리밍·멀티 프로바이더가 만드는 정량적 개선 효과
90%캐싱 비용 절감 — cache hit 시 입력 토큰
TTFT ↓스트리밍 — 첫 토큰 즉시 전달
15종공식 프로바이더 — Bedrock · Anthropic · OpenAI 등
PART 1 · 프로덕션 전환
최적화 축별 도구 매핑
각 축에서 Strands SDK가 제공하는 구체적 메커니즘과 적용 대상
최적화 축
메커니즘
적용 대상
효과
비용
Prompt Caching (cachePoint)
시스템 프롬프트 · 도구 정의
입력 토큰 90% 절감
비용
cache_tools="default"
도구 스키마 전체
도구 많을수록 절감 폭 증가
속도
AsyncIterator 스트리밍
모든 모델 응답
첫 토큰 지연 최소화
속도
Callback Handler
UI 업데이트 · 로깅
이벤트 기반 실시간 처리
인프라
Lambda 배포
이벤트 기반 단발 호출
제로 유휴 비용
인프라
Fargate / AgentCore
장시간 세션 · 멀티턴
안정 연결 · 오토스케일
takeaway
비용 축은 캐싱 옵션 두 가지, 속도 축은 스트리밍 인터페이스 두 가지로 대응합니다 — 인프라 축만 코드 밖의 배포 결정입니다.
PART 1 · 프로덕션 전환
호출 단위 모델 라우팅
같은 에이전트에서 요청별로 다른 모델 지정 — 경량 작업은 싼 모델, 복잡한 작업만 비싼 모델
핵심 포인트
agent(prompt, model=)
호출 시점에 모델 오버라이드 — 에이전트 재생성 없이 요청별 지정 (v1.50 이후 사용 가능)
기본 모델 유지
model= 없는 호출은 Agent 생성 시 지정한 모델 그대로
맥락 공유
같은 에이전트의 messages[]를 이어 씀 — 모델만 바뀌고 대화는 유지
비용 최적화
분류·요약 같은 경량 요청을 저가 모델로 라우팅 — 캐싱과 겹쳐 쓰는 별개의 절감 축
코드
python
from strands import Agent
from strands.models import BedrockModel
cheap = BedrockModel(model_id="us.anthropic.claude-haiku-4-5")
smart = BedrockModel(model_id="us.anthropic.claude-sonnet-4-6")
# 기본 모델은 smart — tools·system_prompt는 하나로 유지
agent = Agent(model=smart, tools=[search_docs])
# 경량 작업 — 이 호출만 싼 모델로 라우팅
agent("이 문의를 카테고리로 분류해줘", model=cheap)
# 복잡한 작업 — 기본 모델 그대로 (같은 대화 맥락 공유)
agent("분류 결과를 바탕으로 대응 방안을 설계해줘")