Home / Strands 프로덕션 / 프롬프트 캐싱
Note

프롬프트 캐싱

SystemContentBlock, cache_tools — 비용 90% 절감

⏱ 35분 98 / 189

프롬프트 캐싱

SystemContentBlock, cache_tools — 비용 90% 절감

에이전트를 프로덕션에 올린다

프롬프트 캐싱·스트리밍·배포 타겟 — 비용과 속도 최적화

프로덕션 전환

비용 · 속도 · 인프라 3축 최적화

PART 1 · 프로덕션 전환

프로덕션 전환

PoC를 프로덕션으로 올릴 때 마주하는 세 가지 최적화 과제

비용 · 속도 · 인프라

PoC에서 프로덕션으로 전환할 때 비용·속도·인프라 세 축을 함께 최적화합니다.

  • 프롬프트 캐싱 — cache hit 시 입력 토큰 90% 절감
  • 스트리밍 — TTFT(Time To First Token) 최소화
  • 배포 타겟 — Lambda · Fargate · AgentCore Runtime
  • 공식 15종 프로바이더 — 벤더 종속 없는 배포 전략
takeaway

캐싱이 비용을, 스트리밍이 속도를, 배포 타겟이 인프라를 담당합니다 — 파트 2 · 3 · 4가 축 하나씩 다룹니다.

PART 1 · 프로덕션 전환

프로덕션 최적화 3축

PoC에서 프로덕션으로 전환할 때 반드시 해결해야 하는 비용·속도·인프라 과제

  1. 1
    비용 최적화

    프롬프트 캐싱으로 반복 토큰 비용 90% 절감. 시스템 프롬프트·도구 정의처럼 매 호출 동일한 prefix를 캐시하여 입력 토큰 과금 최소화.

  2. 2
    속도 최적화

    스트리밍으로 TTFT(Time To First Token)를 최소화. 전체 응답 완료를 기다리지 않고 토큰 단위로 즉시 전달하여 체감 지연 제거.

  3. 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 HandlerUI 업데이트 · 로깅이벤트 기반 실시간 처리
인프라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("분류 결과를 바탕으로 대응 방안을 설계해줘")
좋은 에이전트는 빠르고 저렴해야 합니다.

캐싱 · 스트리밍 · 배포 — 프로덕션 에이전트의 3대 요소