핵심 요약
기업들은 제어권 확보와 비용 최적화를 위해 SageMaker AI 엔드포인트에 SGLang이나 vLLM 같은 프레임워크를 사용하여 커스텀 LLM을 배포한다. 하지만 이러한 프레임워크는 주로 OpenAI 호환 형식을 반환하는 반면, Strands 에이전트는 Bedrock Messages API 형식을 요구하여 호환성 문제가 발생한다. 이를 해결하기 위해 SageMakerAIModel 클래스를 확장하여 응답 형식을 변환하는 커스텀 모델 파서를 구현하는 방법을 제시한다. 결과적으로 개발자는 선호하는 추론 엔진을 유지하면서도 Strands 에이전트 SDK의 기능을 온전히 활용할 수 있다.
배경
AWS 계정 및 SageMaker 권한, Python 및 Docker 기본 지식, Strands 에이전트 SDK에 대한 이해, Node.js 및 Yeoman (ml-container-creator 사용 시)
대상 독자
SageMaker에 커스텀 LLM을 배포하고 Strands 에이전트 SDK로 AI 에이전트를 구축하려는 개발자
의미 / 영향
이 방법론은 특정 클라우드 제공업체의 표준 API에 종속되지 않고도 고성능 추론 엔진(SGLang 등)을 자유롭게 선택할 수 있게 한다. 이는 기업이 최신 오픈소스 모델과 최적화 기술을 에이전트 시스템에 즉각적으로 도입할 수 있는 기술적 유연성을 제공한다.
섹션별 상세
# Install Yeoman globally
npm install -g yo
# Clone and install ml-container-creator
git clone https://github.com/awslabs/ml-container-creator
cd ml-container-creator
npm install && npm link
# Run the generator
yo ml-container-creator
# Configuration: Framework=transformers, Model Server=sglang, Model=meta-llama/Llama-3.1-8B-Instructml-container-creator를 설치하고 SGLang 기반의 Llama 3.1 배포 프로젝트를 생성하는 과정
def stream(self, messages: List[Dict[str, Any]], tool_specs: list, system_prompt: Optional[str], **kwargs):
# ... (중략)
payload = {
"messages": payload_messages,
"stream": True
}
response = self.runtime_client.invoke_endpoint_with_response_stream(
EndpointName=self.endpoint_name,
Body=json.dumps(payload)
)
for event in response['Body']:
chunk = event['PayloadPart']['Bytes'].decode('utf-8')
# SSE 포맷 파싱 및 Strands 포맷으로 yield
if 'content' in delta:
yield {
"type": "contentBlockDelta",
"delta": {"text": delta['content']},
"contentBlockIndex": 0
}SageMakerAIModel을 확장하여 OpenAI 호환 스트리밍 응답을 Strands 포맷으로 변환하는 핵심 로직

from strands.agent import Agent
provider = LlamaModelProvider(
endpoint_name="llama-31-deployment-endpoint",
region_name="us-east-1"
)
agent = Agent(
name="llama-assistant",
model=provider,
system_prompt="You are a helpful AI assistant powered by Llama 3.1."
)
response = agent("What are the key benefits of deploying LLMs on SageMaker?")구현된 커스텀 공급자를 사용하여 Strands 에이전트를 초기화하고 실행하는 예시
실무 Takeaway
- ml-container-creator를 사용하면 복잡한 SageMaker BYOC 배포 인프라 코드를 자동화하여 프로덕션급 환경 구축 시간을 단축할 수 있다.
- Strands 에이전트 SDK의 stream() 메서드를 커스텀 구현함으로써 표준 API를 따르지 않는 특수한 LLM 엔드포인트도 에이전트 워크플로우에 통합 가능하다.
- OpenAI 호환 형식을 Bedrock Messages API 형식으로 변환하는 파서 레이어를 두어 모델 서빙의 유연성과 에이전트 프레임워크의 편의성을 동시에 확보한다.
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.