

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

# 대화 중 시스템 메시지
<a name="claude-messages-mid-conversation-system"></a>

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

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

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

## 지원되는 모델
<a name="claude-messages-mid-conversation-system-supported-models"></a>

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

## 메시지 필드
<a name="claude-messages-mid-conversation-system-fields"></a>


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

## 배치 규칙
<a name="claude-messages-mid-conversation-system-placement"></a>

의 `{"role": "system"}` 메시지`messages`에는 다음과 같은 배치 제약 조건이 있습니다.
+ 의 첫 번째 항목은 될 수 없습니다`messages`. 처음부터 적용되는 지침은 최상위 `system` 필드를 사용합니다.
+ 서버 도구 사용으로 끝나는 사용자 메시지 또는 어시스턴트 메시지를 즉시 따라야 합니다.
+ 의 마지막 항목`messages`이거나 어시스턴트 턴 뒤에 와야 합니다.
+ 다른 시스템 메시지에 인접할 수 없습니다. 연속 시스템 메시지는 허용되지 않습니다.

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

## 콘텐츠 규칙
<a name="claude-messages-mid-conversation-system-content-rules"></a>

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

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

## 프롬프트 캐싱
<a name="claude-messages-mid-conversation-system-caching"></a>

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

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

프롬프트 캐싱에 대한 자세한 내용은 [더 빠른 모델 추론을 위한 프롬프트 캐싱을](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html) 참조하세요.

## 응답 동작
<a name="claude-messages-mid-conversation-system-response"></a>

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

## 코드 예제
<a name="claude-messages-mid-conversation-system-example"></a>

다음 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"])
```