Konfiguracja podsumowywania
Przegląd
Konfiguracja summarization zapewnia scentralizowaną kontrolę nad podsumowywaniem konwersacji i przycinaniem kontekstu. Zastępuje ona pola summarize oraz summaryModel dla poszczególnych endpointów, które były wcześniej dostępne w niestandardowych endpointach oraz Azure OpenAI.
Gdy konwersacja przekracza okno kontekstowe modelu, system podsumowywania automatycznie kompresuje starsze wiadomości do zwięzłego podsumowania punktu kontrolnego. Pozwala to na kontynuowanie konwersacji w nieskończoność bez utraty ważnego kontekstu. System zawiera również przycinanie kontekstu (context pruning), które stopniowo ogranicza duże wyniki narzędzi w starszych wiadomościach, aby odzyskać miejsce na tokeny, zanim konieczne będzie podsumowanie.
Po turze podsumowania, wskaźnik użycia kontekstu wykorzystuje utrwaloną bazę podsumowania oraz tury następujące po podsumowaniu, zamiast ponownie przeliczać odrzuconą historię sprzed podsumowania. Skumulowane sumy użycia i kosztów nadal uwzględniają pełne wydatki dla danej gałęzi.
Przykład
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 | Dostawca LLM używany do wywołań podsumowywania. Jeśli zostanie pominięty, używany jest własny dostawca agenta. | provider: "openAI" |
Domyślnie: Własny dostawca agenta
model
| Key | Type | Description | Example |
|---|---|---|---|
| model | String | Model używany do wywołań podsumowywania. Jeśli zostanie pominięty, używany jest własny model agenta. | model: "gpt-4o-mini" |
Domyślnie: Własny model agenta
parameters
| Key | Type | Description | Example |
|---|---|---|---|
| parameters | Object | Dodatkowe parametry LLM dla żądań podsumowania (np. temperature, top_p). | parameters: { temperature: 0.3 } |
prompt
| Key | Type | Description | Example |
|---|---|---|---|
| prompt | String | Niestandardowy prompt dla wstępnego podsumowania. Zastępuje wbudowany prompt punktu kontrolnego. |
Domyślne: Ustrukturyzowany prompt punktu kontrolnego, który tworzy sekcje dla Celu (Goal), Ograniczeń i Preferencji (Constraints & Preferences), Postępu (Progress), Kluczowych Decyzji (Key Decisions), Następnych Kroków (Next Steps) oraz Krytycznego Kontekstu (Critical Context).
updatePrompt
| Key | Type | Description | Example |
|---|---|---|---|
| updatePrompt | String | Niestandardowy prompt do ponownej kompresji, gdy istnieje już wcześniejsze podsumowanie. Używany, gdy podsumowanie wymaga aktualizacji o nową treść konwersacji. |
Domyślne: Wbudowany prompt, który łączy nowe wiadomości z istniejącym punktem kontrolnym, kompresuje starsze szczegóły i nadaje większą szczegółowość ostatnim działaniom.
maxSummaryTokens
| Key | Type | Description | Example |
|---|---|---|---|
| maxSummaryTokens | Number | Maksymalna liczba tokenów wyjściowych dla odpowiedzi modelu podsumowującego. | maxSummaryTokens: 4096 |
reserveRatio
| Key | Type | Description | Example |
|---|---|---|---|
| reserveRatio | Number | Ułamek budżetu tokenów zarezerwowany jako margines (0–1). Zapobiega wypełnieniu kontekstu do absolutnej pojemności. | reserveRatio: 0.05 |
Domyślnie: 0.05 (5% zapasu)
trigger
| Key | Type | Description | Example |
|---|---|---|---|
| trigger | Object | Określa, kiedy aktywowane jest podsumowywanie. Jeśli zostanie pominięte, podsumowywanie uruchamia się zawsze, gdy przycinanie wiadomości usuwa jakiekolwiek wiadomości. |
Podklucze trigger
| Key | Type | Description | Example |
|---|---|---|---|
| type | String | Strategia wyzwalania. Opcje: `"token_ratio"`, `"remaining_tokens"`, `"messages_to_refine"`. | type: "token_ratio" |
| value | Number | Wartość progowa dla wybranego typu wyzwalacza. Dla `token_ratio`: 0–1 (włącznie). Dla `remaining_tokens` oraz `messages_to_refine`: liczba całkowita dodatnia. | value: 0.8 |
Typy wyzwalaczy
| Typ | Wartość | Uruchamia się, gdy |
|---|---|---|
token_ratio | 0.0–1.0 | Ułamek użytych tokenów kontekstu osiągnie lub przekroczy tę wartość |
remaining_tokens | Liczba całkowita dodatnia | Liczba pozostałych tokenów kontekstu spadnie do lub poniżej tej wartości |
messages_to_refine | Liczba całkowita dodatnia | Liczba wiadomości kwalifikujących się do podsumowania osiągnie lub przekroczy tę wartość |
| (not set) | — | Zawsze, gdy przycinanie usunie jakiekolwiek wiadomości (zachowanie domyślne) |
Przykład:
summarization:
trigger:
type: 'remaining_tokens'
value: 8000contextPruning
| Key | Type | Description | Example |
|---|---|---|---|
| contextPruning | Object | Konfiguruje degradację wyników narzędzi opartą na pozycji. Duże wyniki narzędzi w starszych wiadomościach są stopniowo przycinane lub usuwane w celu odzyskania miejsca na tokeny. |
Przycinanie kontekstu (context pruning) to opcjonalna funkcja, która działa niezależnie od podsumowywania. Koncentruje się ona na dużych wynikach wywołań narzędzi w starszych wiadomościach, stosując dwa progresywne etapy:
- Soft trim — Skraca wyniki narzędzi, zachowując tylko początkowe i końcowe fragmenty, z wielokropkiem pomiędzy nimi
- Hard clear — Zastępuje cały wynik narzędzia krótkim symbolem zastępczym
Oba etapy opierają się na pozycji: wiadomości znajdujące się bliżej początku konwersacji (starsze) są usuwane jako pierwsze.
Podklucze contextPruning
| Key | Type | Description | Example |
|---|---|---|---|
| enabled | Boolean | Włącza degradację wyników narzędzi opartą na pozycji. | enabled: true |
| keepLastAssistants | Number | Liczba ostatnich tur asystenta do ochrony przed jakimkolwiek przycinaniem. | keepLastAssistants: 3 |
| softTrimRatio | Number | Współczynnik wieku (0–1), przy którym aktywuje się soft-trim. Wiadomości starsze niż ten współczynnik konwersacji są kandydatami do soft-trimmingu. | softTrimRatio: 0.3 |
| hardClearRatio | Number | Współczynnik wieku (0–1), przy którym aktywowane jest całkowite wyczyszczenie (hard-clear). Wiadomości starsze niż ten współczynnik są kandydatami do pełnego zastąpienia. | hardClearRatio: 0.5 |
| minPrunableToolChars | Number | Minimalna liczba znaków wyniku narzędzia, zanim zostanie zastosowane przycinanie. Mniejsze wyniki pozostają nienaruszone. | minPrunableToolChars: 50000 |
| softTrim | Object | Konfiguracja dla etapu soft-trim. | |
| hardClear | Object | Konfiguracja dla etapu hard-clear. |
Domyślne:
| Pole | Domyślnie |
|---|---|
enabled | false |
keepLastAssistants | 3 |
softTrimRatio | 0.3 |
hardClearRatio | 0.5 |
minPrunableToolChars | 50000 |
Podklucze softTrim
| Key | Type | Description | Example |
|---|---|---|---|
| maxChars | Number | Maksymalna łączna liczba znaków po miękkim przycięciu wyniku narzędzia. | maxChars: 4000 |
| headChars | Number | Liczba znaków do zachowania od początku wyniku narzędzia. | headChars: 1500 |
| tailChars | Number | Liczba znaków do zachowania z końca wyniku narzędzia. | tailChars: 1500 |
Domyślne: maxChars: 4000, headChars: 1500, tailChars: 1500
Podklucze hardClear
| Key | Type | Description | Example |
|---|---|---|---|
| enabled | Boolean | Czy etap hard-clear jest aktywny. Gdy jest wyłączony, stosowane jest tylko soft-trim. | enabled: true |
| placeholder | String | Tekst zastępczy, który zastępuje pełną zawartość wyniku narzędzia po wyczyszczeniu. | placeholder: "[Old tool result content cleared]" |
Domyślne: enabled: true, placeholder: "[Old tool result content cleared]"
Przykład:
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]'Kompletny przykład konfiguracji
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]'Migracja z ustawień dla poszczególnych endpointów
Jeśli wcześniej używałeś summarize i summaryModel w niestandardowych punktach końcowych lub Azure OpenAI:
endpoints:
custom:
- name: 'My Endpoint'
summarize: true
summaryModel: 'gpt-3.5-turbo'Te pola zostały usunięte. Użyj zamiast nich konfiguracji summarization najwyższego poziomu:
summarization:
model: 'gpt-4o-mini'Uwagi
- Podsumowywanie jest konfigurowane globalnie, a nie dla każdego endpoint z osobna.
- Pola
summarizeorazsummaryModelw niestandardowych endpointach oraz endpointach Azure OpenAI nie są już wspierane. - Gdy
providerimodelsą pominięte, do podsumowania używany jest własny provider i model agenta. - Przycinanie kontekstu (context pruning) jest domyślnie wyłączone i musi zostać jawnie włączone za pomocą
contextPruning.enabled: true - Przycinanie kontekstu wpływa tylko na wyniki wywołań narzędzi, które przekraczają
minPrunableToolChars— mniejsze wyniki nigdy nie są przycinane. - Ustawienie
keepLastAssistantschroni ostatnie tury przed przycięciem, niezależnie od współczynników przycinania/czyszczenia (trim/clear ratios). - Niestandardowe wartości
promptorazupdatePromptcałkowicie zastępują wbudowane prompty — używaj ich ostrożnie - Ustaw
AGENT_DEBUG_LOGGING=truew swoim pliku.env, aby włączyć szczegółowe logowanie liczby tokenów oraz diagnostykę przycinania kontekstu.
Jaka jest ta instrukcja?