Kora-API / app /services /prompt_service.py
ProfessorCEO's picture
Deploy API
e251d62
Raw
History Blame Contribute Delete
1.26 kB
"""System prompt and knowledge orchestration for KORA."""
from __future__ import annotations
from dataclasses import dataclass
from pathlib import Path
from app.utils.config import Settings
@dataclass
class PromptService:
"""Loads and injects KORA identity/context into requests."""
settings: Settings
def _read_file(self, path: Path) -> str:
return path.read_text(encoding="utf-8").strip()
def build_system_prompt(self) -> str:
"""Build a single injected system instruction block."""
core_prompt = self._read_file(self.settings.system_prompt_file)
knowledge = self._read_file(self.settings.knowledge_file)
return (
f"{core_prompt}\n\n"
"---\n"
"KONTYRA KNOWLEDGE BASE (authoritative context):\n"
f"{knowledge}"
)
def inject_system_prompt(self, messages: list[dict[str, str]]) -> list[dict[str, str]]:
"""Prepend enforced KORA system prompt to every chat request."""
# Remove user-supplied system messages so identity rules remain stable.
non_system_messages = [m for m in messages if m.get("role") != "system"]
return [{"role": "system", "content": self.build_system_prompt()}, *non_system_messages]