View a markdown version of this page

대화 중 시스템 메시지 - Amazon Bedrock

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

대화 중 시스템 메시지

messages 배열에 {"role": "system", ...} 메시지를 추가할 수 있습니다. 이렇게 하면 캐시된 접두사를 무효화하지 않고 대화를 통해 시스템 지침이 추가되거나 업데이트됩니다.

이전에는 최상위 system 파라미터를 통해서만 시스템 지침을 제공할 수 있었습니다. 이렇게 하면 이전 컨텍스트를 재설정하지 않고도 지침을 업데이트할 수 있습니다.

이는 작업이 진행됨에 따라 모델을 조정해야 하는 에이전트 워크플로에 유용합니다. 예를 들어 작업 중간에 새로운 제약 조건 도입, 신뢰할 수 있는 컨텍스트 새로 고침 또는 나중에 교체하기 위한 도구 지침 변경 등이 있습니다.

지원되는 모델

이 기능은 Claude Opus 4.8에서만 사용할 수 있습니다. 베타 헤더는 필요하지 않습니다. 지원되지 않는 모델의 role: "system"messages[]에를 포함하는 요청은를 반환합니다400 invalid_request_error.

메시지 필드

필드 유형 설명
role 문자열 필수입니다. system이어야 합니다.
content 문자열 또는 텍스트 블록 목록 필수 사항입니다. 사용자 또는 어시스턴트 메시지와 동일한 일반 문자열 또는 콘텐츠 블록을 사용합니다.
cache_control 객체 선택 사항. 최상위 시스템 파라미터와 동일한 의미 체계입니다.

배치 규칙

{"role": "system"} 메시지messages에는 다음과 같은 배치 제약 조건이 있습니다.

  • 의 첫 번째 항목은 될 수 없습니다messages. 처음부터 적용되는 지침은 최상위 system 필드를 사용합니다.

  • 서버 도구 사용으로 끝나는 사용자 메시지 또는 어시스턴트 메시지를 즉시 따라야 합니다.

  • 의 마지막 항목messages이거나 어시스턴트 턴 뒤에 와야 합니다.

  • 다른 시스템 메시지에 인접할 수 없습니다. 연속 시스템 메시지는 허용되지 않습니다.

이러한 배치 규칙을 위반하는 요청은를 반환합니다400 invalid_request_error.

콘텐츠 규칙

시스템 역할 메시지 콘텐츠는 텍스트 블록만 지원합니다. 이미지, 문서, 도구 블록 및 인용은 지원되지 않습니다.

content를 일반 문자열 또는 콘텐츠 블록으로 설정합니다. 지침은 대화의 해당 시점부터 적용됩니다. 전체 대화에 적용해야 하는 지침은 최상위 system 필드를 사용하고 나중에 관련성이 있는 지침은 중간 대화 시스템 메시지를 사용합니다.

프롬프트 캐싱

중간 대화 시스템 메시지는 프롬프트 캐싱과 함께 작동하도록 설계되었습니다. 요청 간에 변경되지 않은 상태로 유지되는 마지막 블록cache_control에를 배치하여 안정적인 접두사를 평소와 같이 캐시합니다. 그런 다음 해당 중단점 뒤에 시스템 메시지를 추가합니다. 새 명령은 캐시된 접두사 뒤에 표시되므로 접두사 해시를 변경하지 않으며 캐시가 여전히 적중될 수 있습니다.

중간 대화 시스템 메시지가 안정적인 기록의 일부가 되면 후속 턴에서 캐시에서 읽을 수 있습니다. 이전 메시지를 변경하면 해당 시점부터 캐시가 무효화되므로 이전에 전송된 중간 대화 시스템 메시지를 편집하거나 제거하지 마세요.

프롬프트 캐싱에 대한 자세한 내용은 더 빠른 모델 추론을 위한 프롬프트 캐싱을 참조하세요.

응답 동작

응답 셰이프는 변경되지 않습니다. 시스템 역할 메시지는 응답 콘텐츠 배열에 표시되지 않습니다. 모델은 시스템 지침을 처리하지만 응답에서 다시 에코하지 않습니다.

코드 예제

다음 Python 예제에서는 Amazon Bedrock에서 중간 대화 시스템 프롬프트를 사용하는 방법을 보여줍니다.

import boto3 import json client = boto3.client("bedrock-runtime", region_name="us-east-1") response = client.invoke_model( modelId="us.anthropic.claude-opus-4-8", body=json.dumps({ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "system": "You are a helpful travel planning assistant.", "messages": [ {"role": "user", "content": "Help me plan a week in Paris."}, {"role": "assistant", "content": "I'd love to help! What kind of experience are you looking for?"}, {"role": "user", "content": "I want to see the major sights. What should I do on day one?"}, {"role": "system", "content": "The user has a budget of $150/day. Only suggest options that fit within this budget. Prioritize free attractions and affordable dining."} ] }) ) result = json.loads(response["body"].read()) print(result["content"][0]["text"])