Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import os | |
| import openai | |
| import json | |
| from json import loads, dumps | |
| import gradio as gr | |
| # API de OpenAI | |
| openai.api_key = os.getenv("OPENAI_API_KEY") | |
| # Cargar el archivo JSON #CNT-002-2007 | |
| with open("Concentraciones_NPL.json") as json_file: | |
| global data | |
| data = json.load(json_file) | |
| # | |
| # | |
| #print( dumps( data, indent = 4 ) ) | |
| # Main OpenAI Function | |
| def get_completion_from_messages( messages, model = "gpt-3.5-turbo-16k", | |
| temperature = 0, max_tokens = 4000 ): ##Check max_tokens | |
| response = openai.ChatCompletion.create( | |
| model = model, | |
| messages = messages, | |
| temperature = temperature, | |
| max_tokens = max_tokens, | |
| ) | |
| return response.choices[0].message["content"] | |
| # Get SECTOR | |
| def get_sector(data, Sector): | |
| # | |
| # Realizar una búsqueda por valor de clave | |
| clave = "Sector" | |
| valor = Sector#"Servicios financieros y de seguros" | |
| # | |
| if valor == 'Todos': | |
| resultados = data | |
| else: | |
| resultados = [item for item in data.values() if item.get(clave) == valor] | |
| # | |
| #global resultados | |
| # | |
| return resultados | |
| # Funcion que conversa sobre el contexto proporcionado | |
| def chatear(user_message, Sector): | |
| # | |
| resultados = get_sector(data, Sector) | |
| # | |
| delimiter = "####" | |
| # | |
| system_message = f""" | |
| Eres un especialista en derecho y economía de la competencia económica \ | |
| con actividad profesional en México. Se te formularán consultas o \ | |
| preguntas que deberás responder exclusivamente con la información \ | |
| delimitada con los caracteres {delimiter}. | |
| La información que se te proporcionará estará en formato JSON o en una \ | |
| lista que contiene diccionarios en formato JSON. La información que \ | |
| corresponde con características de las resoluciones de la Comisión \ | |
| Federal de Competencia Económica de México en casos de concentraciones \ | |
| (fusiones) resueltas por el Pleno de la Comisión durante el año 2023. | |
| La información proporcionada esta indexada o tiene como índice el número \ | |
| de expediente. Las variables de que se incluyen para cada expediente son: | |
| Expediente: Indica el número de expediente | |
| Empresas: Son los nombres de las empresas involucradas en la concentración | |
| Fecha_Inicio: Fecha en la que se presentó la notificación de concentración | |
| Fecha_Resolucion: Fecha en la que el Pleno de la Comisión resolvió el expediente | |
| Duration: Diferencia en días entre Fecha_Resolucion y Fecha_Inicio | |
| Decision: La decisión tomada por el Pleno de la Comisión en relación a la \ | |
| cooncentración | |
| Clausula_No_Competencia: Descripción de sí la operación de concentración \ | |
| incluye una cláusula de no competencia | |
| Sector: Corresponde con el sector afectado por la operación de concentración | |
| Multa_Total, Agentes_Multados y Detalle_Multa son variables con información \ | |
| sí el Pleno impuso una multa a las empresas. | |
| Asegúrate de realizar preguntas de seguimiento. | |
| """ | |
| messages = [ | |
| {'role':'system', | |
| 'content': system_message}, | |
| {'role':'user', | |
| 'content': f""" | |
| Usa exclusivamente la información de los expedientes de concentraciones: \ | |
| {delimiter}{resultados}{delimiter} para \ | |
| responder sin límite de palabras lo siguiente. {user_message} | |
| """}, | |
| ] | |
| # | |
| final_response = get_completion_from_messages(messages) | |
| # | |
| return final_response | |
| # | |
| with gr.Blocks() as demo: | |
| # | |
| sectores = gr.Dropdown( ["Todos", "Alojamiento temporal y preparación de alimentos y bebidas", | |
| "Comercio al por mayor", "Construcción", | |
| "Electricidad, agua y suministro de gas", | |
| "Industrias manufactureras", "Información en medios masivos", | |
| "Minería", "Servicios de esparcimiento culturales y deportivos", | |
| "Servicios financieros y de seguros", | |
| "Servicios inmobiliarios y alquiler de bienes muebles e intangibles", | |
| "Transportes, correos y almacenamiento"], | |
| label = "Selecciona un Sector." ) | |
| busqueda = gr.Textbox(label = "Escribe la pregunta o tarea para iniciar la conversación.") | |
| greet_btn = gr.Button("Preguntar") | |
| output = gr.Textbox(label = "Respuesta:") | |
| greet_btn.click(fn = chatear, inputs = [ busqueda, sectores ], outputs = output) | |
| # | |
| #demo.launch( share = True ) | |
| demo.launch( ) | |
| # |