/
ksilisk
/
spbtechrun_hack
Обзор
Документация
Войти
/
ksilisk
/
spbtechrun_hack
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
python/backend/core/dialog/context_builder.py
45 строк
2 KB
Shaliko Salimov
user profile support
12 дек 2025, 21:13
12 дек 2025, 21:13
16730d4
Код
Авторство
О чём код?
from __future__ import annotations from typing import List, Tuple from core.prompt.prompt_store import PromptStore from schemas.chat import Message from schemas.facts import RagFacts from schemas.profile import UserProfile _MCP_PROMPT = "mcp_intent.yaml" _RAG_PROMPT = "rag_intent.yaml" _SMALL_TALK_PROMPT = "small_talk_intent.yaml" _UNKNOWN_PROMPT_PROMPT = "unknown_intent.yaml" class ContextBuilder: def __init__(self, prompt_store: PromptStore, history_limit: int = 6) -> None: self._history_limit = history_limit self._prompt_store = prompt_store async def build_for_rag( self, rag_facts: RagFacts, history: List[Message], user_profile: UserProfile, ) -> Tuple[str, List[Message]]: trimmed_history = history[-self._history_limit:] return self._prompt_store.load(_RAG_PROMPT).format(rag_answer=rag_facts.answer, user_profile='{' + user_profile.model_dump_json() + '}'), trimmed_history async def build_for_mcp( self, history: List[Message], user_profile: UserProfile, ) -> Tuple[str, List[Message]]: trimmed_history = history[-self._history_limit:] return self._prompt_store.load(_MCP_PROMPT).format(user_profile='{' + user_profile.model_dump_json() + '}'), trimmed_history async def build_for_small_talk(self, history: List[Message]): trimmed_history = history[-self._history_limit:] return self._prompt_store.load(_SMALL_TALK_PROMPT), trimmed_history async def build_for_unknown_talk(self, history: List[Message]): trimmed_history = history[-self._history_limit:] return self._prompt_store.load(_UNKNOWN_PROMPT_PROMPT), trimmed_history