지금까지 작성한 코드는 Claude와의 매우 간단한 교환을 시뮬레이션합니다. 하지만 대화를 계속하고 싶을 때는 어떻게 될까요? "1+1은 얼마인가요?"라고 질문한 후 "3을 더 더하면?"과 같은 후속 질문을 하면, Claude가 이전 결과인 2에 3을 더하는 것을 이해할 것이라고 예상할 수 있습니다.

하지만 Bedrock API와 Claude 자체에 대해 이해해야 할 중요한 사항이 있습니다.
메시지 저장 없음
Bedrock과 Claude는 어떤 메시지도 저장하지 않습니다. 보낸 메시지는 저장되지 않으며, 받은 응답도 저장되지 않습니다. 각 API 호출은 완전히 독립적입니다.

컨텍스트를 유지하는 여러 메시지로 대화를 나누려면 다음을 수행해야 합니다:
- 코드에서 모든 메시지 목록을 수동으로 유지 관리
- 각 후속 요청과 함께 전체 메시지 목록 제공
컨텍스트가 중요한 이유
적절한 컨텍스트 없이 어떤 일이 일어나는지 살펴보겠습니다. "3을 더 더하면?"을 단독 메시지로 보내면, Claude는 당신이 무엇을 말하는지 전혀 알 수 없습니다. Claude는 최선을 다해 응답하겠지만, 이전 대화의 컨텍스트가 없기 때문에 답변이 말이 되지 않을 것입니다.

후속 질문만 보내면, Claude는 그 고립된 메시지만 보고 이전의 "1+1은 얼마인가요?" 교환에 대해 알지 못한 채 응답하려고 합니다.

대화 컨텍스트 구축
컨텍스트를 유지하려면 각 요청에 전체 대화 기록을 포함해야 합니다. 작동 방식은 다음과 같습니다:

메시지 목록에는 사용자 메시지와 어시스턴트 응답을 포함한 이전의 모든 교환이 포함되어야 합니다. 이 전체 컨텍스트를 보내면, Claude는 "3을 더 더하면?"이 이전 결과인 2에 3을 더하는 것을 의미한다는 것을 이해할 수 있습니다.
메시지 관리를 위한 헬퍼 함수
대화 관리를 더 쉽게 하기 위해 헬퍼 함수를 만들 수 있습니다:
멀티턴 대화 구현하기
대화를 단계별로 구축하는 방법은 다음과 같습니다:
이 접근 방식은 Claude가 전체 컨텍스트를 가지고 적절하게 응답할 수 있도록 보장합니다: "1+1 = 2의 결과로 시작해서, 여기에 3을 더 더하면: 2 + 3 = 5가 됩니다"
메시지 역할 교대
메시지 목록을 구축할 때, 항상 메시지 역할이 올바르게 교대되도록 해야 합니다:

대화는 사용자 → 어시스턴트 → 사용자 → 어시스턴트 패턴을 따라야 합니다. 연속으로 두 개의 사용자 메시지나 두 개의 어시스턴트 메시지를 두지 마세요. 이 교대 패턴은 API에서 요구되며 자연스러운 대화 흐름을 반영합니다.
이 수동 메시지 관리가 처음에는 번거롭게 느껴질 수 있지만, 곧 익숙해질 것입니다. 이 패턴은 Claude와 대화 컨텍스트를 유지해야 하는 모든 애플리케이션을 구축하는 데 기본이 됩니다.