요약 설정
개요
summarization 구성은 대화 요약 및 컨텍스트 가지치기에 대한 중앙 집중식 제어를 제공합니다. 이는 이전에 사용자 지정 및 Azure OpenAI 엔드포인트에서 사용할 수 있었던 엔드포인트별 summarize 및 summaryModel 필드를 대체합니다.
대화가 모델의 컨텍스트 윈도우를 초과하면, 요약 시스템이 자동으로 이전 메시지들을 간결한 체크포인트 요약으로 압축합니다. 이를 통해 중요한 컨텍스트를 잃지 않으면서 대화를 무기한으로 이어갈 수 있습니다. 또한 이 시스템에는 컨텍스트 프루닝(context pruning) 기능이 포함되어 있어, 요약이 필요하기 전에 이전 메시지의 대규모 도구 결과를 점진적으로 축소하여 토큰 공간을 확보합니다.
요약 턴 이후, 컨텍스트 사용량 게이지는 폐기된 요약 이전 기록을 다시 계산하는 대신 유지된 요약 기준점과 요약 이후의 턴을 사용합니다. 누적 사용량 및 비용 합계에는 여전히 전체 브랜치 지출이 포함됩니다.
예시
summarization:
provider: 'openAI'
model: 'gpt-4o-mini'
maxSummaryTokens: 4096
reserveRatio: 0.05
trigger:
type: 'token_ratio'
value: 0.8
contextPruning:
enabled: true
keepLastAssistants: 3
softTrimRatio: 0.3
hardClearRatio: 0.5
minPrunableToolChars: 50000
softTrim:
maxChars: 4000
headChars: 1500
tailChars: 1500
hardClear:
enabled: true
placeholder: '[Old tool result content cleared]'provider
| Key | Type | Description | Example |
|---|---|---|---|
| provider | String | 요약 호출에 사용할 LLM 공급자입니다. 생략할 경우 에이전트 자체의 공급자를 사용합니다. | provider: "openAI" |
기본값: 에이전트 자체 제공자
model
| Key | Type | Description | Example |
|---|---|---|---|
| model | String | 요약 호출에 사용할 모델입니다. 생략할 경우 에이전트의 자체 모델을 사용합니다. | model: "gpt-4o-mini" |
기본값: 에이전트 자체 모델
parameters
| Key | Type | Description | Example |
|---|---|---|---|
| parameters | Object | 요약 요청을 위한 추가 LLM 매개변수 (예: temperature, top_p). | parameters: { temperature: 0.3 } |
prompt
| Key | Type | Description | Example |
|---|---|---|---|
| prompt | String | 초기 요약을 위한 사용자 지정 프롬프트입니다. 내장된 체크포인트 프롬프트를 대체합니다. |
기본값(Default): 목표(Goal), 제약 사항 및 선호도(Constraints & Preferences), 진행 상황(Progress), 주요 결정 사항(Key Decisions), 다음 단계(Next Steps), 중요 맥락(Critical Context)에 대한 섹션을 생성하는 구조화된 체크포인트 프롬프트입니다.
updatePrompt
| Key | Type | Description | Example |
|---|---|---|---|
| updatePrompt | String | 이전 요약이 이미 존재할 때 재요약을 위한 사용자 지정 프롬프트입니다. 요약을 새로운 대화 내용으로 업데이트해야 할 때 사용됩니다. |
기본값(Default): 새 메시지를 기존 체크포인트에 병합하고, 오래된 세부 정보를 압축하며, 최근 작업에 더 많은 세부 정보를 제공하는 내장 프롬프트입니다.
maxSummaryTokens
| Key | Type | Description | Example |
|---|---|---|---|
| maxSummaryTokens | Number | 요약 모델 응답에 대한 최대 출력 토큰 수입니다. | maxSummaryTokens: 4096 |
reserveRatio
| Key | Type | Description | Example |
|---|---|---|---|
| reserveRatio | Number | 헤드룸으로 예약된 토큰 예산의 비율(0–1). 컨텍스트가 절대적인 용량까지 채워지는 것을 방지합니다. | reserveRatio: 0.05 |
기본값: 0.05 (5% 헤드룸)
trigger
| Key | Type | Description | Example |
|---|---|---|---|
| trigger | Object | 요약이 활성화되는 시점을 정의합니다. 생략할 경우, 메시지 정리(pruning)로 인해 메시지가 삭제될 때마다 요약이 실행됩니다. |
trigger 하위 키
| Key | Type | Description | Example |
|---|---|---|---|
| type | String | 트리거 전략입니다. 옵션: `"token_ratio"`, `"remaining_tokens"`, `"messages_to_refine"`. | type: "token_ratio" |
| value | Number | 선택한 트리거 유형에 대한 임계값입니다. `token_ratio`의 경우: 0–1(포함). `remaining_tokens` 및 `messages_to_refine`의 경우: 양의 정수. | value: 0.8 |
트리거 유형
| 유형 | 값 | 실행 시점 |
|---|---|---|
token_ratio | 0.0–1.0 | 사용된 컨텍스트 토큰의 비율이 해당 값에 도달하거나 초과할 때 |
remaining_tokens | 양의 정수 | 남은 컨텍스트 토큰이 해당 값으로 떨어지거나 그 이하가 될 때 |
messages_to_refine | 양의 정수 | 요약 가능한 메시지 수가 해당 값에 도달하거나 초과할 때 |
| (설정 안 됨) | — | 가지치기(pruning)로 인해 메시지가 삭제될 때마다 (기본 동작) |
예시:
summarization:
trigger:
type: 'remaining_tokens'
value: 8000contextPruning
| Key | Type | Description | Example |
|---|---|---|---|
| contextPruning | Object | 위치 기반 도구 결과 저하를 구성합니다. 이전 메시지의 대용량 도구 결과는 토큰 공간을 확보하기 위해 점진적으로 잘리거나 삭제됩니다. |
Context pruning은 요약(summarization)과는 독립적으로 작동하는 선택적 기능입니다. 이 기능은 이전 메시지에 포함된 대규모 도구 호출(tool call) 결과를 대상으로 하며, 두 가지 단계적 과정을 적용합니다:
- Soft trim — 도구 결과의 앞부분과 뒷부분만 남기고 중간을 생략 부호로 대체하여 자릅니다.
- Hard clear — 전체 도구 결과를 짧은 자리 표시자로 대체합니다
두 단계 모두 위치 기반입니다. 대화의 시작 부분에 가까운(오래된) 메시지부터 먼저 정리됩니다.
contextPruning 하위 키
| Key | Type | Description | Example |
|---|---|---|---|
| enabled | Boolean | 위치 기반 도구 결과 저하를 활성화합니다. | enabled: true |
| keepLastAssistants | Number | 가지치기(pruning)로부터 보호할 최근 어시스턴트 턴(turn)의 수입니다. | keepLastAssistants: 3 |
| softTrimRatio | Number | 소프트 트림이 활성화되는 연령 비율(0–1)입니다. 이 대화 비율보다 오래된 메시지는 소프트 트림 대상이 됩니다. | softTrimRatio: 0.3 |
| hardClearRatio | Number | hard-clear가 활성화되는 연령 비율(0–1)입니다. 이 비율보다 오래된 메시지는 전체 교체 대상이 됩니다. | hardClearRatio: 0.5 |
| minPrunableToolChars | Number | 가지치기가 적용되기 전 도구 결과의 최소 문자 수입니다. 더 작은 결과는 그대로 유지됩니다. | minPrunableToolChars: 50000 |
| softTrim | Object | soft-trim 단계를 위한 구성. | |
| hardClear | Object | hard-clear 단계를 위한 구성. |
기본값:
| 필드 | 기본값 |
|---|---|
enabled | false |
keepLastAssistants | 3 |
softTrimRatio | 0.3 |
hardClearRatio | 0.5 |
minPrunableToolChars | 50000 |
softTrim 하위 키
| Key | Type | Description | Example |
|---|---|---|---|
| maxChars | Number | 도구 결과의 소프트 트리밍 후 최대 총 문자 수입니다. | maxChars: 4000 |
| headChars | Number | 도구 결과의 시작 부분에서 보존할 문자 수입니다. | headChars: 1500 |
| tailChars | Number | 도구 결과의 끝에서 보존할 문자 수입니다. | tailChars: 1500 |
기본값: maxChars: 4000, headChars: 1500, tailChars: 1500
hardClear 하위 키
| Key | Type | Description | Example |
|---|---|---|---|
| enabled | Boolean | 하드 클리어(hard-clear) 단계 활성화 여부입니다. 비활성화 시 소프트 트림(soft-trim)만 적용됩니다. | enabled: true |
| placeholder | String | 하드 클리어 시 전체 도구 결과 콘텐츠를 대체하는 자리 표시자 텍스트입니다. | placeholder: "[Old tool result content cleared]" |
기본값: enabled: true, placeholder: "[Old tool result content cleared]"
예시:
summarization:
contextPruning:
enabled: true
keepLastAssistants: 5
softTrimRatio: 0.25
hardClearRatio: 0.6
minPrunableToolChars: 30000
softTrim:
maxChars: 6000
headChars: 2500
tailChars: 2500
hardClear:
enabled: true
placeholder: '[Content removed for context management]'전체 구성 예시
version: 1.3.10
cache: true
summarization:
provider: 'openAI'
model: 'gpt-4o-mini'
maxSummaryTokens: 4096
reserveRatio: 0.05
trigger:
type: 'token_ratio'
value: 0.8
contextPruning:
enabled: true
keepLastAssistants: 3
softTrimRatio: 0.3
hardClearRatio: 0.5
minPrunableToolChars: 50000
softTrim:
maxChars: 4000
headChars: 1500
tailChars: 1500
hardClear:
enabled: true
placeholder: '[Old tool result content cleared]'엔드포인트별 설정에서의 마이그레이션
이전에 사용자 지정 또는 Azure OpenAI endpoint에서 summarize 및 summaryModel을 사용했다면:
endpoints:
custom:
- name: 'My Endpoint'
summarize: true
summaryModel: 'gpt-3.5-turbo'이 필드들은 제거되었습니다. 대신 최상위 summarization 설정을 사용하세요:
summarization:
model: 'gpt-4o-mini'참고 사항
- 요약(Summarization)은 엔드포인트별이 아닌 전역적으로 구성됩니다.
- 사용자 지정 endpoint 및 Azure OpenAI endpoint의
summarize및summaryModel필드는 더 이상 지원되지 않습니다. provider와model이 생략되면, 에이전트 자체의 provider와 model이 요약에 사용됩니다.- Context pruning은 기본적으로 비활성화되어 있으며
contextPruning.enabled: true를 통해 명시적으로 활성화해야 합니다. - Context pruning은
minPrunableToolChars를 초과하는 도구 호출 결과에만 영향을 미치며, 더 작은 결과는 절대 pruning되지 않습니다. keepLastAssistants설정은 trim/clear 비율과 관계없이 최근 턴이 삭제되지 않도록 보호합니다.- 사용자 지정
prompt및updatePrompt값은 내장 프롬프트를 완전히 대체하므로 주의해서 사용하세요. .env파일에AGENT_DEBUG_LOGGING=true를 설정하여 토큰 수 및 컨텍스트 정리 진단에 대한 상세 로깅을 활성화하세요.
이 가이드는 어떤가요?