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–5 sentences, unless instructed otherwise.\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()
