File size: 4,605 Bytes
54ca012
 
 
 
 
 
 
 
1a8e5eb
 
54ca012
 
 
f942058
54ca012
 
 
 
f942058
54ca012
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68b23d9
54ca012
 
 
 
 
 
 
 
 
 
 
4ddf388
 
54ca012
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
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( )
#