Spaces:
Sleeping
Sleeping
File size: 4,447 Bytes
716ba45 50c782f 1a11491 50c782f 716ba45 1c9032d 1a11491 61d1412 92f52a0 61d1412 23b1f8d 61d1412 23b1f8d 61d1412 23b1f8d 61d1412 1a11491 50c782f 1c9032d 9b1e761 23b1f8d 61d1412 50c782f 4ae1270 61d1412 c660ad9 61d1412 9b1e761 23b1f8d 3a67a8e 50c782f 61d1412 50c782f 61d1412 92f52a0 61d1412 c660ad9 23b1f8d 61d1412 50c782f 61d1412 23b1f8d 61d1412 23b1f8d 61d1412 23b1f8d 61d1412 23b1f8d 61d1412 23b1f8d 3a67a8e 92f52a0 61d1412 c660ad9 50c782f 716ba45 c660ad9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
import gradio as gr
import os
from datetime import datetime
from huggingface_hub import InferenceClient
class DefenseGenerator:
def __init__(self):
self.api_key = os.getenv("HF_API_KEY")
if not self.api_key:
raise EnvironmentError("HF_API_KEY não configurada")
self.client = InferenceClient(api_key=self.api_key)
self.document_types = {
"resposta_acusacao": "Resposta à Acusação",
"habeas_corpus": "Habeas Corpus",
"revogacao_preventiva": "Revogação de Prisão Preventiva",
"liberdade_provisoria": "Liberdade Provisória",
"relaxamento_prisao": "Relaxamento de Prisão",
"apelacao": "Recurso de Apelação",
"embargos": "Embargos de Declaração"
}
def generate_content(self, prompt: str) -> str:
try:
response = self.client.chat.completions.create(
model="mistralai/Mistral-7B-Instruct-v0.3",
messages=[
{"role": "system", "content": "Você é um advogado criminalista experiente."},
{"role": "user", "content": prompt}
],
max_tokens=2000,
temperature=0.7
)
return response.choices[0].message["content"]
except Exception as e:
return f"Erro na geração: {str(e)}"
def gerar_documento(self, tipo: str, fatos: str, dados_basicos: dict) -> str:
prompt = f"""Gere uma peça de {self.document_types[tipo]} completa com base nos seguintes fatos:
{fatos}
Inclua todos os elementos necessários:
- Qualificação completa das partes
- Fundamentos jurídicos pertinentes
- Jurisprudência relevante
- Doutrina aplicável
- Preliminares quando cabíveis
- Mérito detalhado
- Pedidos específicos
Dados básicos para formatação:
Comarca: {dados_basicos['comarca']}
Vara: {dados_basicos['vara']}
Cliente: {dados_basicos['cliente']}
OAB: {dados_basicos['oab']}"""
return self.generate_content(prompt)
def interface():
gerador = DefenseGenerator()
with gr.Blocks() as demo:
gr.Markdown("# Gerador de Peças Criminais")
with gr.Row():
tipo = gr.Dropdown(
choices=list(gerador.document_types.keys()),
label="Tipo de Peça",
value="resposta_acusacao"
)
with gr.Row():
with gr.Column():
comarca = gr.Textbox(label="Comarca", placeholder="Ex: São Paulo")
vara = gr.Textbox(label="Vara", placeholder="Ex: 1ª")
with gr.Column():
cliente = gr.Textbox(label="Nome do Cliente", placeholder="Ex: João da Silva")
oab = gr.Textbox(label="OAB", placeholder="Ex: SP123456")
fatos = gr.Textbox(
label="Descreva os fatos e o que deseja na peça",
placeholder="Descreva a situação do cliente e o que precisa ser argumentado...",
lines=5
)
btn = gr.Button("Gerar")
output = gr.Textbox(label="Peça Gerada", lines=20, show_copy_button=True)
def process(tipo, fatos, comarca, vara, cliente, oab):
dados = {
"comarca": comarca,
"vara": vara,
"cliente": cliente,
"oab": oab
}
return gerador.gerar_documento(tipo, fatos, dados)
btn.click(
fn=process,
inputs=[tipo, fatos, comarca, vara, cliente, oab],
outputs=output
)
exemplo = gr.Examples(
examples=[
["resposta_acusacao", "Cliente preso em flagrante por furto de celular iPhone 13 da vítima Maria em 10/01/2024. É primário, tem residência fixa e trabalho. A vítima não reconheceu com certeza.", "São Paulo", "1ª", "João Silva", "SP123456"],
["habeas_corpus", "Cliente preso preventivamente há 90 dias por tráfico. Apreendidas 10g de maconha, é primário, tem residência e trabalho fixos. Não foram apreendidos outros materiais típicos de tráfico.", "São Paulo", "2ª", "Pedro Santos", "SP654321"]
],
inputs=[tipo, fatos, comarca, vara, cliente, oab]
)
return demo
if __name__ == "__main__":
demo = interface()
demo.launch() |