Spaces:
Sleeping
Sleeping
File size: 8,685 Bytes
82a745d 716ba45 d4469c1 716ba45 d4469c1 716ba45 d4469c1 99c1a44 5de62ce 5f6b9fb 90c609f 200622a ca4784d 51b81ea ff31e97 51b81ea ff31e97 ca4784d 90c609f ca4784d 21ce01b 3771af2 ff31e97 3771af2 70a99c2 ff31e97 3771af2 70a99c2 ff31e97 70a99c2 ff31e97 9fcb1ea ff31e97 3a67a8e d4469c1 3a67a8e d4469c1 b9be663 d4469c1 3a67a8e d4469c1 2552fb1 d4469c1 3a67a8e d4469c1 bd07d48 5de62ce 424f551 5de62ce 3a67a8e d4469c1 3a67a8e 424f551 bd07d48 428cd1d 5de62ce 3a67a8e b9be663 d4469c1 3a67a8e 716ba45 d4469c1 716ba45 d4469c1 716ba45 d4469c1 0088715 |
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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
import os
import gradio as gr
from huggingface_hub import InferenceClient
# Obtendo a API Key da variável de ambiente
api_key = os.getenv("HF_API_KEY")
if not api_key:
raise EnvironmentError("A variável de ambiente 'HF_API_KEY' não está configurada.")
# Criação do cliente com a API Key
client = InferenceClient(api_key=api_key)
# Função para gerar a peça jurídica em português do Brasil
def gerar_peca_juridica_criminal(informacoes_caso: str, tipo_peca: str) -> str:
if not informacoes_caso or not tipo_peca:
return "Por favor, forneça todas as informações necessárias."
templates = {
"habeas corpus": {
"estrutura": [
"EXCELENTÍSSIMO(A) SENHOR(A) DOUTOR(A) JUIZ(A) DE DIREITO DA [VARA] DA [COMARCA]",
"QUALIFICAÇÃO DO PACIENTE\n"
"O acusado, [Nome do Cliente], é um cidadão brasileiro, nascido em [Data de Nascimento] no município de [Local de Nascimento], "
"titular do documento de identidade [Tipo de Documento de Identidade] no número [Número do Documento de Identidade], "
"efetivo domiciliado na [Endereço de Domicílio do Cliente].",
"DOS FATOS\n"
"A Polícia de [Local do Crime] detém o acusado desde [Data da Detenção], por motivos de suposto furto qualificado, "
"cometido no dia [Data do Crime] às [Horas do Crime], no local de [Local do Crime]. "
"Entretanto, há provas documentais e testemunha ocular que comprovam a presença do acusado na cidade distante [Local Distante do Crime] no momento do crime.",
"DO DIREITO\n"
"O artigo 5º LXVIII da Constituição Federal dispõe que 'toda pessoa pode ser presa quando há fundamentos razoáveis para acreditar que ela cometeu ou está prestes a cometer um crime'. "
"O Código de Processo Penal estabelece, nos artigos 647 e 648, que 'a prisão não pode ser imposta a menos que haja fundamentos razoáveis...'",
"DO CONSTRANGIMENTO ILEGAL\n"
"A prisão do acusado, sem a devida fundamentação, caracteriza constrangimento ilegal, uma vez que há evidências de sua inocência.",
"DA MEDIDA LIMINAR\n"
"Requer-se a concessão de medida liminar para a liberdade do paciente.",
"DOS PEDIDOS\n"
"Diante do exposto, requer-se a concessão do habeas corpus.",
"PROVAS E DOCUMENTOS\n"
"Anexamos documentos que comprovam a inocência do acusado.",
"FECHAMENTO\n"
"Nestes termos, pede deferimento."
],
"max_tokens": 500
},
# Add other templates as needed...
}
template = templates.get(tipo_peca.lower())
if not template:
return "Tipo de peça não suportado."
# Preencher os campos da peça jurídica com base nas informações do caso
informacoes = {
"Nome do Cliente": "João da Silva", # Exemplo
"Data de Nascimento": "01/01/1990", # Exemplo
"Local de Nascimento": "São Paulo",
"Tipo de Documento de Identidade": "RG",
"Número do Documento de Identidade": "123456789",
"Endereço de Domicílio do Cliente": "Rua Exemplo, 123, São Paulo - SP",
"Local do Crime": "São Paulo",
"Data da Detenção": "15/12/2023",
"Data do Crime": "14/12/2023",
"Horas do Crime": "14:00",
"Local Distante do Crime": "Campinas",
"VARA": "1ª Vara Criminal", # Exemplo
"COMARCA": "São Paulo" # Exemplo
}
# Montar o texto da peça jurídica
texto_final = "\n\n".join([
linha.replace(placeholder, informacoes[placeholder])
for linha in template["estrutura"]
for placeholder in informacoes.keys()
if placeholder in linha
])
# Realizar a requisição única para aprimoramento
try:
mensagens = [
{
"role": "system",
"content": (
f"Como advogado criminalista, redija um {tipo_peca} técnica seguindo:\n"
f"1. Estrutura formal\n"
f"2. Linguagem jurídica\n"
f"3. Fundamentação precisa\n"
f"4. Formatação correta"
)
},
{
"role": "user",
"content": texto_final
}
]
resposta_final = client.chat.completions.create(
model="mistralai/Mistral-7B-Instruct-v0.3",
messages=mensagens,
max_tokens=template['max_tokens'],
temperature=0.7
)
return resposta_final.choices[0].message["content"]
except Exception as e:
return f"Erro ao gerar a peça: {str(e)}"
# Função para redefinir os campos
def redefinir_campos():
return "", "", ""
# Função para exportar a peça jurídica gerada
def exportar_peca(peca_texto):
"""
Exporta a peça jurídica gerada para um arquivo .txt.
Parâmetros:
peca_texto (str): Texto da peça jurídica gerada.
Retorna:
str: Caminho do arquivo exportado.
"""
arquivo_nome = "peca_juridica_gerada.txt"
with open(arquivo_nome, "w", encoding="utf-8") as arquivo:
arquivo.write(peca_texto)
return f"Arquivo salvo como: {arquivo_nome}"
# Configuração do app Gradio com funcionalidades adicionais
def gerar_interface_gradio():
"""
Configura a interface do Gradio para gerar peças jurídicas com exemplos pré-definidos e funcionalidades adicionais.
"""
with gr.Blocks() as interface:
gr.Markdown("# Gerador de Peças Jurídicas Criminais")
gr.Markdown(
"### Preencha os campos abaixo ou escolha um exemplo, e selecione o tipo de peça jurídica que deseja gerar."
)
with gr.Row():
entrada_caso = gr.Textbox(
label="Informações do Caso",
placeholder="Descreva o caso detalhadamente ou selecione um exemplo abaixo.",
lines=5
)
exemplo_caso = gr.Dropdown(
label="Exemplos de Casos",
choices=[
"O cliente foi acusado injustamente de furto qualificado, mas há provas de que estava em outro local no momento do crime.",
"O cliente foi preso em flagrante por porte de entorpecentes, mas os policiais não apresentaram o mandado de busca.",
"O cliente foi acusado de agressão, mas existem testemunhas que comprovam sua ausência no local do ocorrido."
],
value=None,
interactive=True
)
entrada_tipo = gr.Dropdown(
label="Tipo de Peça Jurídica",
choices=["habeas corpus", "petição inicial", "defesa prévia", "apelação criminal"],
value=None # Define o valor inicial como nenhum
)
def atualizar_caso(caso_exemplo):
"""
Atualiza o campo de texto com o exemplo escolhido pelo usuário.
"""
return caso_exemplo
exemplo_caso.change(
atualizar_caso,
inputs=exemplo_caso,
outputs=entrada_caso
)
with gr.Row():
botao_gerar = gr.Button("Gerar Peça Jurídica")
botao_redefinir = gr.Button("Redefinir Campos")
saida_texto = gr.Textbox(
label="Peça Jurídica Gerada",
lines=15,
placeholder="A peça jurídica gerada aparecerá aqui."
)
botao_gerar.click(
gerar_peca_juridica_criminal,
inputs=[entrada_caso, entrada_tipo],
outputs=saida_texto
)
botao_redefinir.click(
redefinir_campos,
inputs=None,
outputs=[entrada_caso, entrada_tipo, saida_texto]
)
with gr.Row():
botao_exportar = gr.Button("Exportar Peça Jurídica para .txt")
saida_arquivo = gr.Textbox(
label="Arquivo Exportado",
interactive=False,
placeholder="O caminho do arquivo exportado será exibido aqui."
)
botao_exportar.click(
exportar_peca,
inputs=saida_texto,
outputs=saida_arquivo
)
return interface
# Executa o app
if __name__ == "__main__":
app = gerar_interface_gradio()
app.launch()
|