Files
jusfutura/app/services/document_service.py
T

119 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.
"""
#generated = ollama_service.generate(prompt)
#return {"text": generated}
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."}