Слои контекста¶
ContextOutput отдаёт четыре источника контекста независимо, чтобы
UI мог показать, откуда что пришло, а модель — понимать, что есть что.
Слои¶
- System prompt — всегда первый, всегда авторитетный. Обязателен;
TokenBudgetedContextBuilderвыбрасывает исключение, если он не влезает. - Profile — извлекается из прошлых сообщений пользователя. Опционален; если он выталкивает промпт за бюджет — молча отбрасывается.
- Session memory — сжатая выжимка старых ходов. Достаётся из
векторного хранилища по синтетическому doc_id
session_{chat_id}. - RAG-документы — top-k чанков из документов, привязанных к чату.
Что когда включать¶
| Сценарий | RAG | Session | Profile |
|---|---|---|---|
| Разовая Q&A по документу | ✅ | ❌ | ❌ |
| Долгий чат с одним документом | ✅ | ✅ | ✅ |
| Продолжение разговора (без нового контекста) | ❌ | ✅ | ✅ |
| Многопользовательский ассистент с профилем | ✅ | ✅ | ✅ |
Справка по полям¶
Поля ContextInput:
query(обязательно) — текущий вопрос пользователя.system_prompt— закрепляется в начале финального промпта.doc_ids— список целочисленных ID документов для поиска.chat_id— если задан, ищется память сессии поsession_{chat_id}.embedding_model— передаётся вLLM.embed.top_k_rag,top_k_session— глубина выборки по слоям.include_rag,include_session,include_profile— переключатели.
Поля ContextOutput:
system_prompt— собранная финальная строка.rag_blocks,session_blocks— реальные чанки, попавшие в промпт.profile_used— был ли включён профиль.budget_report— заполняется толькоTokenBudgetedContextBuilder.