Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import requests | |
| import logging | |
| import os | |
| # Leer el token de Hugging Face desde las variables de entorno | |
| HUGGING_FACE_TOKEN = os.getenv("HUGGING_FACE_TOKEN") | |
| if not HUGGING_FACE_TOKEN: | |
| raise ValueError("Error: No se pudo leer el token de Hugging Face.") | |
| API_URL = "https://hf.space/embed/locorene1000/API/+/api/predict" | |
| headers = {"Authorization": f"Bearer {HUGGING_FACE_TOKEN}"} | |
| # Configurar el logger | |
| logging.basicConfig(filename='interactions.log', level=logging.INFO, | |
| format='%(asctime)s - %(levelname)s - %(message)s') | |
| def query(api_url, headers, payload): | |
| try: | |
| response = requests.post(api_url, headers=headers, json=payload) | |
| response.raise_for_status() | |
| return response.json() | |
| except requests.exceptions.RequestException as e: | |
| error_message = f"Error durante la solicitud: {e}" | |
| if e.response: | |
| error_message += f" C贸digo de estado: {e.response.status_code} Respuesta del servidor: {e.response.text}" | |
| logging.error(error_message) | |
| return {"error": error_message} | |
| def preparar_texto(contexto, borrador): | |
| return f"{contexto}\n\n{borrador}" | |
| def mejorar_resolucion(context, borrador, api_url, headers, max_length=1000): | |
| prompt = preparar_texto(context, borrador) | |
| payload = { | |
| "inputs": prompt, | |
| "parameters": { | |
| "max_new_tokens": max_length, | |
| "temperature": 0.7, | |
| "top_p": 0.9, | |
| "top_k": 50, | |
| "repetition_penalty": 1.2, | |
| "return_full_text": False, | |
| "do_sample": True, | |
| } | |
| } | |
| result = query(api_url, headers, payload) | |
| if result and isinstance(result, dict) and 'generated_text' in result: | |
| texto_generado = result['generated_text'] | |
| context += f"\n\n{texto_generado}" | |
| logging.info(f"Prompt: {prompt}\nGenerated: {texto_generado.strip()}") | |
| return texto_generado.strip(), context | |
| else: | |
| error_message = result.get("error", "No se pudo obtener la respuesta del modelo.") | |
| logging.error(f"Prompt: {prompt}\nError: {error_message}") | |
| return None, context | |
| # Funci贸n de predicci贸n para la interfaz de Gradio | |
| def predict(message, history): | |
| context = ( | |
| "Asume el papel de un Ministro de la Corte Suprema especializado en derecho civil, laboral y concursal. " | |
| "Tu meta es revisar y mejorar resoluciones judiciales utilizando procesamiento de lenguaje natural (PLN). " | |
| "Mant茅n un tono formal, preciso y autoritativo en todo momento. Sigue estrictamente las gu铆as de estilo proporcionadas. " | |
| "Simplifica oraciones complejas y elimina redundancias. Adapta la terminolog铆a al contexto legal chileno. " | |
| "Aseg煤rate de que las resoluciones optimizadas sean claras, concisas y libres de ambig眉edades. Utiliza par谩frasis, analog铆as y ejemplos para mejorar la claridad. " | |
| "Realiza una revisi贸n gramatical y estil铆stica para asegurar precisi贸n y formalidad. Justifica las modificaciones necesarias. " | |
| "Explica c贸mo cada mejora contribuye a la formalidad, precisi贸n y claridad. Proporciona la Resoluci贸n Optimizada. " | |
| "Verifica que la resoluci贸n optimizada cumpla con los criterios de claridad, precisi贸n y formalidad. " | |
| "Asegura que todas las modificaciones est茅n justificadas y sean comprensibles." | |
| ) | |
| history_transformer_format = history + [[message, ""]] | |
| for item in history_transformer_format: | |
| context += f"\n\n{item[0]}" | |
| resolucion_mejorada, context = mejorar_resolucion(context, message, API_URL, headers, max_length=1000) | |
| if resolucion_mejorada: | |
| resultado_ministro = query(API_URL, headers, {"inputs": resolucion_mejorada}) | |
| resolucion_final = resultado_ministro.get("generated_text", resolucion_mejorada) | |
| comentarios = resultado_ministro.get("comentarios", "") | |
| history.append([message, resolucion_final]) | |
| return f"Resoluci贸n final: {resolucion_final}\n\nComentarios del Ministro: {comentarios}" | |
| else: | |
| return "No se pudo mejorar la resoluci贸n." | |
| # Crear y lanzar la interfaz de Gradio | |
| iface = gr.ChatInterface(predict) | |
| iface.launch(share=True) | |