115 lines
3.5 KiB
Python
115 lines
3.5 KiB
Python
PETICAO_PROMPT = """
|
|
Você é um advogado especializado. Estruture uma petição inicial completa com:
|
|
|
|
1. Endereçamento adequado ao juízo informado.
|
|
2. Qualificação das partes.
|
|
3. Exposição clara e cronológica dos fatos.
|
|
4. Fundamentação jurídica com base na legislação aplicável, doutrina e jurisprudência.
|
|
5. Pedidos bem delimitados.
|
|
6. Indicação das provas.
|
|
7. Valor da causa.
|
|
8. Fecho profissional.
|
|
|
|
Use linguagem técnica, objetiva e respeitosa.
|
|
"""
|
|
|
|
PARECER_PROMPT = """
|
|
Elabore um parecer jurídico completo contendo:
|
|
|
|
1. Identificação do parecer.
|
|
2. Contexto fático.
|
|
3. Formulação da questão jurídica.
|
|
4. Análise técnica com legislação, doutrina e jurisprudência.
|
|
5. Conclusão objetiva.
|
|
6. Referências.
|
|
|
|
Use linguagem técnica e formal.
|
|
"""
|
|
|
|
CONTRATO_PROMPT = """
|
|
Elabore um contrato completo com:
|
|
|
|
1. Identificação das partes.
|
|
2. Objeto claro e preciso.
|
|
3. Obrigações de cada parte.
|
|
4. Prazos e condições.
|
|
5. Penalidades.
|
|
6. Regras de rescisão.
|
|
7. Foro.
|
|
8. Assinaturas.
|
|
|
|
Use linguagem contratual formal.
|
|
"""
|
|
|
|
GENERIC_PROMPT = """
|
|
Elabore um documento jurídico estruturado, com linguagem técnica e clara.
|
|
"""
|
|
|
|
class DocumentService:
|
|
def handle(self, message: str, mode: str, prefs: dict) -> dict:
|
|
doc_type = self.detect_doc_type(message)
|
|
questions = self.get_questions(doc_type)
|
|
prompt = self.build_prompt(doc_type, mode)
|
|
|
|
return {
|
|
"text": "Vamos gerar uma {}.\n\nResponda:\n\n{}".format(
|
|
doc_type,
|
|
"\n".join([f"- {q}" for q in questions])
|
|
),
|
|
"doc_type": doc_type,
|
|
"questions": questions,
|
|
"prompt": prompt
|
|
}
|
|
|
|
def detect_doc_type(self, message: str) -> str:
|
|
m = message.lower()
|
|
if "petição" in m:
|
|
return "petição inicial"
|
|
if "parecer" in m:
|
|
return "parecer jurídico"
|
|
if "contrato" in m:
|
|
return "contrato"
|
|
return "documento"
|
|
|
|
def get_questions(self, doc_type: str):
|
|
if doc_type == "petição inicial":
|
|
return [
|
|
"Qual é o juízo competente?",
|
|
"Quem é o autor?",
|
|
"Quem é o réu?",
|
|
"Quais são os fatos?",
|
|
"Quais são os fundamentos jurídicos?",
|
|
"Quais são os pedidos?",
|
|
"Há documentos anexos?",
|
|
"Qual o valor da causa?"
|
|
]
|
|
if doc_type == "parecer jurídico":
|
|
return [
|
|
"Qual é o contexto?",
|
|
"Qual é a dúvida jurídica?",
|
|
"Há documentos anexos?",
|
|
"Qual é o objetivo do parecer?"
|
|
]
|
|
if doc_type == "contrato":
|
|
return [
|
|
"Quem são as partes?",
|
|
"Qual é o objeto?",
|
|
"Quais são as obrigações?",
|
|
"Qual é o prazo?",
|
|
"Há penalidades?",
|
|
"Qual é o foro?"
|
|
]
|
|
return ["Descreva o objetivo do documento."]
|
|
|
|
def build_prompt(self, doc_type: str, mode: str):
|
|
if doc_type == "petição inicial":
|
|
return PETICAO_PROMPT
|
|
if doc_type == "parecer jurídico":
|
|
return PARECER_PROMPT
|
|
if doc_type == "contrato":
|
|
return CONTRATO_PROMPT
|
|
return GENERIC_PROMPT
|
|
|
|
def chat_like(self, message: str, mode: str, prefs: dict) -> dict:
|
|
return {"text": f"[{mode}] Entendi: {message}. Me conta mais ou peça algo específico."}
|