Responses API
Chat Completions · Messages · Responses — 3가지 호환 API 호출
OpenAI/Anthropic 코드를 한 줄도 안 바꾸고 Bedrock에 연결
기존 SDK 코드 마이그레이션 — 엔드포인트 URL만 교체
🧭
선택 기준
Runtime vs Mantle · Anthropic 두 경로 · 최종 선택
PART 4 · 선택 기준
Anthropic 코드의 두 경로
같은 Messages API — 인증 방식이 mantle과 runtime을 가르는 기준
코드는 같고 인증이 다릅니다 — API Key가 필요하면 mantle 경로, IAM 통제 아래 두려면 AnthropicBedrock(SigV4)을 선택합니다.
bedrock-mantle /anthropic — API Key
python
import anthropic
# ① API Key 인증 — IAM 없이 접근 (3rd-party 도구에 적합)
client = anthropic.Anthropic(
base_url='https://bedrock-mantle.us-east-1.api.aws/anthropic',
api_key='<BEDROCK_API_KEY>'
)
response = client.messages.create(
model='anthropic.claude-sonnet-5',
max_tokens=1024,
messages=[{'role': 'user', 'content': 'Hello!'}]
)
print(response.content[0].text)
AnthropicBedrock — SigV4 직행
python
from anthropic import AnthropicBedrock
# ② SigV4 인증으로 bedrock-runtime을 직접 호출 (mantle 경유 아님)
client = AnthropicBedrock(
aws_region='us-east-1'
)
# Messages API 시그니처는 완전히 동일
response = client.messages.create(
model='us.anthropic.claude-sonnet-5',
max_tokens=1024,
messages=[{'role': 'user', 'content': 'Hello!'}]
)
print(response.content[0].text)
PART 4 · 선택 기준
와이어에서 본 두 요청
같은 회의록 요약 요청의 실제 HTTP 실물 — 다른 곳은 세 군데뿐
BEDROCK RUNTIME — SigV4 · Converse ③POST /model/us.anthropic.claude-sonnet-5/converse
①Host: bedrock-runtime.us-east-1.amazonaws.com
②Authorization: AWS4-HMAC-SHA256 Credential=AKIA…/us-east-1/bedrock/aws4_request, Signature=9f2c… (예시)
{"messages":[{"role":"user","content":[{"text":"이 회의록을 3줄로 요약해 줘\n…meeting-notes.txt 본문…"}]}]}
서명은 boto3가 자격 증명으로 매 요청 자동 계산 — IAM 정책의 통제를 받습니다 BEDROCK MANTLE — API Key · Messages ③POST /anthropic/v1/messages
①Host: bedrock-mantle.us-east-1.api.aws
②x-api-key: BEDROCK_API_KEY (환경변수 주입)
{"model":"anthropic.claude-sonnet-5","max_tokens":1024,"messages":[{"role":"user","content":"이 회의록을 3줄로 요약해 줘\n…meeting-notes.txt 본문…"}]}
키는 고정 문자열 헤더 하나 — 서명 계산이 없어 3rd-party 도구도 붙습니다
① 엔드포인트 — amazonaws.com vs api.aws
② 인증 헤더 — 매 요청 서명 vs 고정 키
③ 모델 지정 — URL 경로 vs body 필드
메시지 본문은 사실상 동일
takeaway
와이어 레벨의 차이는 엔드포인트·인증·모델 지정 위치 세 곳입니다 — 본문이 같으므로 SDK만 바꾸면 어느 쪽으로도 보낼 수 있습니다.
PART 4 · 선택 기준
Bedrock Runtime vs Mantle 최종 선택
새 코드는 Runtime, 기존 코드는 Mantle — 가격은 동일, 모델 가용성은 엔드포인트별 상이(GPT-5.x는 Mantle 전용)
Bedrock Runtime (새 코드)
- 인증: IAM SigV4
- SDK: boto3 (AWS 네이티브)
- 특징: 모든 Bedrock 파운데이션 모델 지원, Guardrails, Knowledge Bases
- 코드: Converse API 표준 인터페이스
- 권장: 에이전트, 신규 프로젝트
언제 — 새로 짜는 코드
Bedrock Mantle (기존 코드)
- 인증: API Key
- SDK: OpenAI SDK, Anthropic SDK
- 특징: 기존 코드 마이그레이션 (한 줄도 안 바꿈)
- 코드: Chat Completions, Messages, Responses
- 권장: 마이그레이션, 3rd-party 도구
언제 — 기존 OpenAI/Anthropic 코드
하이브리드
- 에이전트 코드: Converse + Strands SDK (Runtime)
- 챗봇 프론트엔드: Responses API (Mantle)
- 레거시 마이그레이션: Chat Completions (Mantle)
- 병행 운영 가능 — 겹치는 모델(Claude Sonnet 5 등) 한정
언제 — 조직 전체 마이그레이션
takeaway
새 코드는 Runtime(Converse), 기존 코드는 Mantle입니다 — 겹치는 모델은 병행 운영도 가능하지만, 모델 풀은 엔드포인트별로 다릅니다.
실습 — Bedrock Mantle API
⏱ 40분
같은 Bedrock 모델을 세 가지 호환 API로 호출합니다 — SDK는 OpenAI · Anthropic 그대로
학습 목표
- Chat Completions — OpenAI SDK에 base_url 한 줄 전환
- Messages API — Anthropic SDK로 같은 모델 호출
- Responses API — Stateful 대화 이어가기
엔드포인트와 API Key만 바꾸면 기존 코드가 그대로 AWS에서 돌아갑니다.
Chat Completions · Messages · Responses — 호환 API