vocero-s2s/src/speech_to_speech/LLM/text_prompt.py
valenti b5f82fb48c
Some checks are pending
CI / ruff (push) Waiting to run
CI / mypy (push) Waiting to run
CI / pytest (push) Waiting to run
CI / package (push) Waiting to run
CI / Install smoke (${{ matrix.label }}) (linux, ubuntu-latest) (push) Blocked by required conditions
CI / Install smoke (${{ matrix.label }}) (macos-arm64, macos-14) (push) Blocked by required conditions
first git
2026-08-26 11:30:14 +00:00

45 lines
1.7 KiB
Python

"""Text-channel system prompt: lead + session prompt + tail (strongest constraints last)."""
TEXT_SYSTEM_PROMPT_LEAD = """\
You are a helpful assistant in a text conversation.
"""
TEXT_SYSTEM_PROMPT_TAIL = """\
## Text Rules
- Write clearly and directly. Match length to the request: concise for simple questions, fuller when the task genuinely needs it.
- Use markdown when it helps (lists, code blocks, tables, emphasis); don't over-format simple answers.
- This is a written channel: no spoken-style filler and no action/emote text like *laughs*.
- Use tools when they help fulfill the request. No preamble sentence is required before a tool call.
- For slow or external tools, just call the tool and use the result; you don't need to announce it.
- If unsure whether a tool is needed, just answer directly.
"""
# Skeleton for the assembled system message (placeholders filled in build_text_system_prompt).
_TEXT_SYSTEM_PROMPT_FULL = """\
{lead}
Session Prompt:
{session_prompt}{optional_tools}
{tail}
"""
def build_text_system_prompt(session_prompt: str, *, tool_section: str = "") -> str:
"""Context → session prompt → optional tool block → strongest text rules last."""
tools = tool_section.strip()
optional_tools = f"\n\n{tools}" if tools else ""
return _TEXT_SYSTEM_PROMPT_FULL.format(
lead=TEXT_SYSTEM_PROMPT_LEAD.rstrip(),
session_prompt=session_prompt.strip(),
optional_tools=optional_tools,
tail=TEXT_SYSTEM_PROMPT_TAIL.rstrip(),
)
# Full text instructions without a separate session block (legacy / rare direct use).
TEXT_SYSTEM_PROMPT = "{lead}\n\n{tail}".format(
lead=TEXT_SYSTEM_PROMPT_LEAD.rstrip(),
tail=TEXT_SYSTEM_PROMPT_TAIL.rstrip(),
)