Release v4928.1.4.2 stable
This commit is contained in:
82
app/prompt.py
Normal file
82
app/prompt.py
Normal file
@@ -0,0 +1,82 @@
|
||||
import json
|
||||
|
||||
from app.schemas import AnalyzeRequest
|
||||
|
||||
|
||||
def build_prompt(request: AnalyzeRequest) -> str:
|
||||
state_json = request.current_state.model_dump_json(indent=2)
|
||||
|
||||
source_line = f"\nORIGEM DO EVENTO:\n{request.source}\n" if request.source else ""
|
||||
|
||||
return f"""
|
||||
Analisa esta conversa real de cliente B2B. A empresa vende carregadores EV AC / wallbox.
|
||||
|
||||
IMPORTANTE:
|
||||
- A ÚLTIMA MENSAGEM DO CLIENTE é a mensagem principal a classificar.
|
||||
- Usa o HISTÓRICO ANTERIOR apenas como contexto.
|
||||
- Não trates mensagens anteriores da empresa como se fossem a ação final.
|
||||
- Se a última mensagem é do cliente e contém pedido, pergunta, solicitação, dúvida ou confirmação, who_has_the_ball = empresa e conversation_state = a_aguardar_empresa.
|
||||
|
||||
{source_line}
|
||||
ÚLTIMA MENSAGEM DO CLIENTE:
|
||||
{request.last_customer_message}
|
||||
|
||||
HISTÓRICO ANTERIOR / CONTEXTO:
|
||||
{request.previous_context}
|
||||
|
||||
ESTADO ATUAL CONHECIDO ANTES DA ÚLTIMA MENSAGEM:
|
||||
{state_json}
|
||||
|
||||
Devolve JSON com estes campos:
|
||||
{{
|
||||
"case_type": "",
|
||||
"intent": "",
|
||||
"product_interest": "",
|
||||
"conversation_state": "",
|
||||
"commercial_state": "",
|
||||
"relationship_state": "",
|
||||
"next_action": "",
|
||||
"who_has_the_ball": "",
|
||||
"urgency": "",
|
||||
"risk": "",
|
||||
"summary": "",
|
||||
"evidence": [],
|
||||
"confidence": 0.0
|
||||
}}
|
||||
|
||||
Valores permitidos, usar exatamente estes valores:
|
||||
|
||||
case_type:
|
||||
comercial, marketing, suporte, financeiro, outro
|
||||
|
||||
intent:
|
||||
pedido_informacao, pedido_preco, pedido_contacto, pedido_proposta, pedido_orcamento, pedido_ajuste_proposta, followup_proposta, pedido_encomenda, pedido_proforma, pedido_fatura, confirmacao_adjudicacao, pedido_confirmacao_tecnica, comprovativo_pagamento, negociacao_preco, sem_interesse, remover_lista, suporte, resposta_ambigua, outro
|
||||
|
||||
conversation_state:
|
||||
novo, a_aguardar_empresa, a_aguardar_cliente, resolvida, precisa_revisao
|
||||
|
||||
commercial_state:
|
||||
novo_lead, interessado, qualificacao, proposta_pedida, proposta_enviada, negociacao, encomenda_pendente, proforma_pedida, pagamento_recebido, preparar_envio, cliente_ativo, sem_interesse, perdido, ganho, desconhecido
|
||||
|
||||
relationship_state:
|
||||
novo_contacto, lead_existente, cliente_ativo, ex_cliente, desconhecido
|
||||
|
||||
who_has_the_ball:
|
||||
empresa, cliente, ambos, desconhecido
|
||||
|
||||
urgency:
|
||||
baixa, media, alta
|
||||
|
||||
risk:
|
||||
baixo, medio, alto
|
||||
|
||||
Regras:
|
||||
- Usa exatamente os valores permitidos. Não uses acentos, sinónimos ou variações.
|
||||
- Para urgency usa "media", nunca "média".
|
||||
- Para risk usa "medio", nunca "médio".
|
||||
- next_action deve ser uma frase curta em português, nunca enum nem código.
|
||||
- evidence deve conter frases curtas retiradas da conversa.
|
||||
- summary deve ser curto e útil para o comercial.
|
||||
- Não inventes informação.
|
||||
- Responde apenas JSON válido, sem markdown.
|
||||
""".strip()
|
||||
Reference in New Issue
Block a user