Adicionar app/services/document_service.py
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
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."}
|
||||
Reference in New Issue
Block a user