47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
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()
|