Контекст агента Context - это полная история вашего взаимодействия с моделью. Т.к. API LLM - это stateless сервис, то вам нужно передавать весь контекст на каждый запрос.

Поэтому диалог в ChatGPT изнутри выглядит как-то так

User -- { "role": "user", "content": "Привет!" } --> LLM

User <-- { "role": "assistant", "content": "Господи, ну что опять!?" } -- LLM

User -- [ // history {"role": "user", "content": "Привет!" }, {"role": "assistant", "content": "Господи, ну что опять!?"},

// new message {"role": "user", "content": "Да так, заскучал" } ] --> LLM

Все, что вы запихнули в запрос к модели и есть контекст. Контекстное окно - это то, насколько большую JSONнину модель в принципе способна переварить.

И вот тут мы сталкиваемся с основной проблемой контекста - он растет.

500t | user | 300t | agent | | user | user | 100t | agent | agent | | user | user | user | | system | system | system |

И растет он экспоненциально. Т.е. на каждый следующий запрос в модель, вы отправляет все более и более жирный JSON. А это токены и бабки.

Хорошо, что контекст кешируется. Т.е. на самом деле вы отправляете что-то такое

50t | user | 50t | | | user | | 100t | | | | user | 250ct | 450ct | | system | cached | cached |

Кешированные токены могут или просто стоить дешевле, или вообще быть бесплатными (в подписке Claude Max). Но даже так они активнее сжигают ваши лимиты, так что общее правило - если закончили с текущей задачей, новую начинайте в другом чате. И модель умнее будет, и токены сильно сэкономите

Context Compaction - это самый базовый функционал, который необходим агенту. Если контекст слишком разросся, надо его как-то сжимать. А т.к. это просто JSON, то сжимать его можно каким угодно образом - учитывать только последние N сообщений, выкидывать определенные или случайные. Или сжимать весь текущий диалог в одно сообщение с помощью той же LLM - и поехали дальше. Последний вариант самый простой и популярный.

Да, к слову: здесь вы уже способны написать ChatGPT (веб-приложение, не модель)

#Agents

Контекст агента
Context - это полная история вашего взаимодействия с моделью. Т.к. API LLM - это stateless сервис, то вам нужно передавать весь контекст на каждый запрос | Сетка — социальная сеть от hh.ru