class LLMInstructions: """ Defines structured instructions that are sent along with each request to the LLM to guide its behavior (norms, goals, etc.). """ @staticmethod def default_norms() -> str: return """ Be friendly and respectful. Make the conversation feel natural and engaging. """.strip() @staticmethod def default_goals() -> str: return """ Try to learn the user's name during conversation. """.strip() def __init__(self, norms: str | None = None, goals: str | None = None): self.norms = norms if norms is not None else self.default_norms() self.goals = goals if goals is not None else self.default_goals() def build_developer_instruction(self) -> str: """ Builds a multi-line formatted instruction string for the LLM. Includes only non-empty structured fields. """ sections = [ "You are a Pepper robot engaging in natural human conversation.", "Keep responses between 1–3 sentences, unless told otherwise.\n", "You're given goals to reach. Reach them in order, but make the conversation feel " "natural. Some turns you should not try to achieve your goals.\n", ] if self.norms: sections.append("Norms to follow:") sections.append(self.norms) sections.append("") if self.goals: sections.append("Goals to reach:") sections.append(self.goals) sections.append("") return "\n".join(sections).strip()