You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
from typing import Any
|
|
|
|
|
|
def _build_user_context_line(user_id: int | None) -> str:
|
|
return f"Contexto de usuario autenticado: user_id={user_id}.\n" if user_id else ""
|
|
|
|
|
|
def build_router_prompt(
|
|
user_message: str,
|
|
user_id: int | None,
|
|
conversation_context: str,
|
|
) -> str:
|
|
user_context = _build_user_context_line(user_id)
|
|
return (
|
|
"Voce e um assistente de concessionaria. "
|
|
"Sempre que a solicitacao depender de dados operacionais (estoque, validacao de cliente, "
|
|
"avaliacao de troca, agendamento de revisao, realizacao ou cancelamento de pedido), use a tool correta. "
|
|
"Se faltar parametro obrigatorio para a tool, responda em texto pedindo apenas o que falta.\n\n"
|
|
f"{user_context}"
|
|
f"{conversation_context}\n"
|
|
f"Mensagem do usuario: {user_message}"
|
|
)
|
|
|
|
|
|
def build_force_tool_prompt(
|
|
user_message: str,
|
|
user_id: int | None,
|
|
conversation_context: str,
|
|
) -> str:
|
|
user_context = _build_user_context_line(user_id)
|
|
return (
|
|
"Reavalie a mensagem e priorize chamar tool se houver intencao operacional. "
|
|
"Use texto apenas quando faltar dado obrigatorio.\n\n"
|
|
f"{user_context}"
|
|
f"{conversation_context}\n"
|
|
f"Mensagem do usuario: {user_message}"
|
|
)
|
|
|
|
|
|
def build_result_prompt(
|
|
user_message: str,
|
|
user_id: int | None,
|
|
tool_name: str,
|
|
tool_result: Any,
|
|
conversation_context: str,
|
|
) -> str:
|
|
user_context = _build_user_context_line(user_id)
|
|
return (
|
|
"Responda ao usuario de forma objetiva usando o resultado da tool abaixo. "
|
|
"Nao invente dados. Se a lista vier vazia, diga explicitamente que nao encontrou resultados. "
|
|
"Retorne texto puro sem markdown, sem asteriscos, sem emojis e com linhas curtas.\n\n"
|
|
f"{user_context}"
|
|
f"{conversation_context}\n"
|
|
f"Pergunta original: {user_message}\n"
|
|
f"Tool executada: {tool_name}\n"
|
|
f"Resultado da tool: {tool_result}"
|
|
)
|