컨텍스트 편집
컨텍스트 편집은 현재 베타 버전이며 도구 결과 삭제 및 사고 블록 삭제를 지원합니다. 이를 활성화하려면 API 요청에서 베타 헤더 context-management-2025-06-27을 사용하세요.
이 기능에 대한 피드백을 공유하려면 피드백 양식을 통해 연락해 주세요.
개요
컨텍스트 편집을 통해 증가하는 대화 컨텍스트를 자동으로 관리하여 비용을 최적화하고 컨텍스트 윈도우 제한 내에 머물 수 있습니다. API는 컨텍스트를 관리하기 위한 다양한 전략을 제공합니다:
- 도구 결과 삭제 (
clear_tool_uses_20250919): 대화 컨텍스트가 구성된 임계값을 초과할 때 도구 사용/결과 쌍을 자동으로 삭제합니다 - 사고 블록 삭제 (
clear_thinking_20251015): 사고 블록을 관리하여 이전 턴의 오래된 사고 블록을 삭제합니다
각 전략은 독립적으로 구성할 수 있으며 함께 적용하여 특정 사용 사례를 최적화할 수 있습니다.
컨텍스트 편집 전략
도구 결과 삭제
clear_tool_uses_20250919 전략은 대화 컨텍스트가 구성된 임계값을 초과할 때 도구 결과를 삭제합니다. 활성화되면 API는 시간 순서대로 가장 오래된 도구 결과를 자동으로 삭제하고 도구 결과가 제거되었음을 Claude에게 알리기 위해 자리 표시자 텍스트로 바꿉니다. 기본적으로 도구 결과만 삭제됩니다. clear_tool_inputs를 true로 설정하여 도구 결과와 도구 호출(도구 사용 매개변수) 모두를 선택적으로 삭제할 수 있습니다.
사고 블록 삭제
clear_thinking_20251015 전략은 확장 사고가 활성화되었을 때 대화에서 thinking 블록을 관리합니다. 이 전략은 이전 턴의 오래된 사고 블록을 자동으로 삭제합니다.
기본 동작: 확장 사고가 활성화되었지만 clear_thinking_20251015 전략을 구성하지 않으면 API는 자동으로 마지막 어시스턴트 턴의 사고 블록만 유지합니다(keep: {type: "thinking_turns", value: 1}과 동등).
캐시 히트를 최대화하려면 keep: "all"을 설정하여 모든 사고 블록을 보존하세요.
어시스턴트 대화 턴에는 여러 콘텐츠 블록(예: 도구 사용 시)과 여러 사고 블록(예: 인터리브된 사고를 포함할 수 있습니다.
컨텍스트 편집은 서버 측에서 발생합니다
컨텍스트 편집은 프롬프트가 Claude에 도달하기 전에 서버 측에서 적용됩니다. 클라이언트 애플리케이션은 전체 수정되지 않은 대화 기록을 유지합니다. 편집된 버전과 클라이언트 상태를 동기화할 필요가 없습니다. 평소처럼 로컬에서 전체 대화 기록을 계속 관리하세요.
컨텍스트 편집 및 프롬프트 캐싱
컨텍스트 편집과 프롬프트 캐싱의 상호작용은 전략에 따라 다릅니다:
-
도구 결과 삭제: 콘텐츠가 삭제될 때 캐시된 프롬프트 접두사를 무효화합니다. 이를 고려하여 캐시 무효화가 가치 있을 만큼 충분한 토큰을 삭제할 것을 권장합니다.
clear_at_least매개변수를 사용하여 매번 최소 토큰 수가 삭제되도록 보장하세요. 콘텐츠가 삭제될 때마다 캐시 쓰기 비용이 발생하지만 후속 요청은 새로 캐시된 접두사를 재사용할 수 있습니다. -
사고 블록 삭제: 사고 블록이 컨텍스트에 유지될 때(삭제되지 않음) 프롬프트 캐시가 보존되어 캐시 히트를 활성화하고 입력 토큰 비용을 줄입니다. 사고 블록이 삭제될 때 캐시는 삭제가 발생하는 지점에서 무효화됩니다. 캐시 성능 또는 컨텍스트 윈도우 가용성을 우선시할지 여부에 따라
keep매개변수를 구성하세요.
지원되는 모델
컨텍스트 편집은 다음에서 사용 가능합니다:
- Claude Opus 4.1 (
claude-opus-4-1-20250805) - Claude Opus 4 (
claude-opus-4-20250514) - Claude Sonnet 4.5 (
claude-sonnet-4-5-20250929) - Claude Sonnet 4 (
claude-sonnet-4-20250514) - Claude Haiku 4.5 (
claude-haiku-4-5-20251001)
도구 결과 삭제 사용
도구 결과 삭제를 활성화하는 가장 간단한 방법은 전략 유형만 지정하는 것입니다. 다른 모든 구성 옵션은 기본값을 사용합니다:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--header "anthropic-beta: context-management-2025-06-27" \
--data '{
"model": "claude-sonnet-4-5",
"max_tokens": 4096,
"messages": [
{
"role": "user",
"content": "Search for recent developments in AI"
}
],
"tools": [
{
"type": "web_search_20250305",
"name": "web_search"
}
],
"context_management": {
"edits": [
{"type": "clear_tool_uses_20250919"}
]
}
}'response = client.beta.messages.create(
model="claude-sonnet-4-5",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Search for recent developments in AI"
}
],
tools=[
{
"type": "web_search_20250305",
"name": "web_search"
}
],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{"type": "clear_tool_uses_20250919"}
]
}
)import Anthropic from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
const response = await anthropic.beta.messages.create({
model: "claude-sonnet-4-5",
max_tokens: 4096,
messages: [
{
role: "user",
content: "Search for recent developments in AI"
}
],
tools: [
{
type: "web_search_20250305",
name: "web_search"
}
],
context_management: {
edits: [
{ type: "clear_tool_uses_20250919" }
]
},
betas: ["context-management-2025-06-27"]
});고급 구성
추가 매개변수로 도구 결과 삭제 동작을 사용자 정의할 수 있습니다:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--header "anthropic-beta: context-management-2025-06-27" \
--data '{
"model": "claude-sonnet-4-5",
"max_tokens": 4096,
"messages": [
{
"role": "user",
"content": "Create a simple command line calculator app using Python"
}
],
"tools": [
{
"type": "text_editor_20250728",
"name": "str_replace_based_edit_tool",
"max_characters": 10000
},
{
"type": "web_search_20250305",
"name": "web_search",
"max_uses": 3
}
],
"context_management": {
"edits": [
{
"type": "clear_tool_uses_20250919",
"trigger": {
"type": "input_tokens",
"value": 30000
},
"keep": {
"type": "tool_uses",
"value": 3
},
"clear_at_least": {
"type": "input_tokens",
"value": 5000
},
"exclude_tools": ["web_search"]
}
]
}
}'사고 블록 삭제 사용
확장 사고가 활성화되었을 때 컨텍스트 및 프롬프트 캐싱을 효과적으로 관리하려면 사고 블록 삭제를 활성화하세요:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--header "anthropic-beta: context-management-2025-06-27" \
--data '{
"model": "claude-sonnet-4-5-20250929",
"max_tokens": 1024,
"messages": [...],
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"context_management": {
"edits": [
{
"type": "clear_thinking_20251015",
"keep": {
"type": "thinking_turns",
"value": 2
}
}
]
}
}'사고 블록 삭제를 위한 구성 옵션
clear_thinking_20251015 전략은 다음 구성을 지원합니다:
| 구성 옵션 | 기본값 | 설명 |
|---|---|---|
keep | {type: "thinking_turns", value: 1} | 보존할 사고 블록이 있는 최근 어시스턴트 턴의 수를 정의합니다. 마지막 N개 턴을 유지하려면 {type: "thinking_turns", value: N}을 사용하세요(N은 0보다 커야 함). 모든 사고 블록을 유지하려면 "all"을 사용하세요. |
구성 예시:
// 마지막 3개 어시스턴트 턴의 사고 블록 유지
{
"type": "clear_thinking_20251015",
"keep": {
"type": "thinking_turns",
"value": 3
}
}
// 모든 사고 블록 유지(캐시 히트 최대화)
{
"type": "clear_thinking_20251015",
"keep": "all"
}전략 결합
사고 블록 삭제와 도구 결과 삭제를 함께 사용할 수 있습니다:
여러 전략을 사용할 때 clear_thinking_20251015 전략은 edits 배열에서 먼저 나열되어야 합니다.
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[...],
thinking={
"type": "enabled",
"budget_tokens": 10000
},
tools=[...],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_thinking_20251015",
"keep": {
"type": "thinking_turns",
"value": 2
}
},
{
"type": "clear_tool_uses_20250919",
"trigger": {
"type": "input_tokens",
"value": 50000
},
"keep": {
"type": "tool_uses",
"value": 5
}
}
]
}
)도구 결과 삭제를 위한 구성 옵션
| 구성 옵션 | 기본값 | 설명 |
|---|---|---|
trigger | 100,000 입력 토큰 | 컨텍스트 편집 전략이 활성화되는 시기를 정의합니다. 프롬프트가 이 임계값을 초과하면 삭제가 시작됩니다. 이 값을 input_tokens 또는 tool_uses로 지정할 수 있습니다. |
keep | 3개 도구 사용 | 삭제 후 유지할 최근 도구 사용/결과 쌍의 수를 정의합니다. API는 가장 오래된 도구 상호작용을 먼저 제거하여 가장 최근의 것을 보존합니다. |
clear_at_least | 없음 | 전략이 활성화될 때마다 최소 토큰 수가 삭제되도록 보장합니다. API가 지정된 양 이상을 삭제할 수 없으면 전략이 적용되지 않습니다. 이는 컨텍스트 삭제가 프롬프트 캐시를 깨는 가치가 있는지 결정하는 데 도움이 됩니다. |
exclude_tools | 없음 | 도구 사용 및 결과가 절대 삭제되지 않아야 하는 도구 이름 목록입니다. 중요한 컨텍스트를 보존하는 데 유용합니다. |
clear_tool_inputs | false | 도구 결과와 함께 도구 호출 매개변수를 삭제할지 여부를 제어합니다. 기본적으로 Claude의 원본 도구 호출을 표시하면서 도구 결과만 삭제됩니다. |
컨텍스트 편집 응답
context_management 응답 필드를 사용하여 요청에 적용된 컨텍스트 편집과 삭제된 콘텐츠 및 입력 토큰에 대한 유용한 통계를 확인할 수 있습니다.
{
"id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
"type": "message",
"role": "assistant",
"content": [...],
"usage": {...},
"context_management": {
"applied_edits": [
// `clear_thinking_20251015` 사용 시
{
"type": "clear_thinking_20251015",
"cleared_thinking_turns": 3,
"cleared_input_tokens": 15000
},
// `clear_tool_uses_20250919` 사용 시
{
"type": "clear_tool_uses_20250919",
"cleared_tool_uses": 8,
"cleared_input_tokens": 50000
}
]
}
}스트리밍 응답의 경우 컨텍스트 편집이 최종 message_delta 이벤트에 포함됩니다:
{
"type": "message_delta",
"delta": {
"stop_reason": "end_turn",
"stop_sequence": null
},
"usage": {
"output_tokens": 1024
},
"context_management": {
"applied_edits": [...]
}
}토큰 계산
토큰 계산 엔드포인트는 컨텍스트 관리를 지원하여 컨텍스트 편집이 적용된 후 프롬프트가 사용할 토큰 수를 미리 볼 수 있습니다.
curl https://api.anthropic.com/v1/messages/count_tokens \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--header "anthropic-beta: context-management-2025-06-27" \
--data '{
"model": "claude-sonnet-4-5",
"messages": [
{
"role": "user",
"content": "Continue our conversation..."
}
],
"tools": [...],
"context_management": {
"edits": [
{
"type": "clear_tool_uses_20250919",
"trigger": {
"type": "input_tokens",
"value": 30000
},
"keep": {
"type": "tool_uses",
"value": 5
}
}
]
}
}'{
"input_tokens": 25000,
"context_management": {
"original_input_tokens": 70000
}
}응답은 컨텍스트 관리가 적용된 후의 최종 토큰 수(input_tokens)와 삭제가 발생하기 전의 원본 토큰 수(original_input_tokens)를 모두 표시합니다.
메모리 도구와 함께 사용
컨텍스트 편집은 메모리 도구와 결합할 수 있습니다. 대화 컨텍스트가 구성된 삭제 임계값에 접근하면 Claude는 중요한 정보를 보존하도록 자동 경고를 받습니다. 이를 통해 Claude는 도구 결과가 대화 기록에서 삭제되기 전에 메모리 파일에 저장할 수 있습니다.
이 조합을 통해 다음을 수행할 수 있습니다:
- 중요한 컨텍스트 보존: Claude는 도구 결과가 삭제되기 전에 도구 결과의 필수 정보를 메모리 파일에 작성할 수 있습니다
- 장기 실행 워크플로우 유지: 컨텍스트 제한을 초과할 수 있는 에이전트 워크플로우를 정보를 지속적 저장소로 오프로드하여 활성화합니다
- 필요에 따라 정보 액세스: Claude는 활성 컨텍스트 윈도우에 모든 것을 유지하는 대신 필요할 때 메모리 파일에서 이전에 삭제된 정보를 조회할 수 있습니다
예를 들어 Claude가 많은 작업을 수행하는 파일 편집 워크플로우에서 Claude는 컨텍스트가 증가함에 따라 완료된 변경 사항을 메모리 파일로 요약할 수 있습니다. 도구 결과가 삭제되면 Claude는 메모리 시스템을 통해 해당 정보에 계속 액세스할 수 있으며 효과적으로 계속 작업할 수 있습니다.
두 기능을 함께 사용하려면 API 요청에서 활성화하세요:
response = client.beta.messages.create(
model="claude-sonnet-4-5",
max_tokens=4096,
messages=[...],
tools=[
{
"type": "memory_20250818",
"name": "memory"
},
# Your other tools
],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{"type": "clear_tool_uses_20250919"}
]
}
)