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( ) | |
# |