Spaces:
Running
Running
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, tipo_peca): | |
""" | |
Gera uma peça jurídica criminal em português do Brasil com base no tipo e nas informações fornecidas. | |
Parâmetros: | |
informacoes_caso (str): Descrição detalhada do caso. | |
tipo_peca (str): Tipo de peça jurídica a ser gerada (ex: habeas corpus, petição inicial). | |
Retorna: | |
str: Peça jurídica gerada. | |
""" | |
mensagens = [ | |
{ | |
"role": "system", | |
"content": ( | |
"Você é um especialista em direito criminal no Brasil e deve gerar peças jurídicas detalhadas. " | |
"Todas as respostas devem estar em português do Brasil, considerando o ordenamento jurídico brasileiro." | |
) | |
}, | |
{ | |
"role": "user", | |
"content": f"Quero que você elabore um(a) {tipo_peca} com base nas seguintes informações do caso: {informacoes_caso}" | |
} | |
] | |
# Chamada ao modelo para gerar a resposta | |
resposta = client.chat.completions.create( | |
model="mistralai/Mistral-7B-Instruct-v0.3", | |
messages=mensagens, | |
max_tokens=1000 | |
) | |
return resposta.choices[0].message["content"] | |
# 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="", | |
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"], | |
placeholder="Selecione o tipo de peça jurídica" | |
) | |
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() | |