Benjov commited on
Commit
54ca012
1 Parent(s): fd0747a

Add application file

Browse files
Files changed (3) hide show
  1. .Rhistory +0 -0
  2. app.py +127 -0
  3. requirements.txt +4 -0
.Rhistory ADDED
File without changes
app.py ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import os
3
+ import openai
4
+ import json
5
+ from json import loads, dumps
6
+ import gradio as gr
7
+
8
+ # API de OpenAI
9
+ os.environ["OPENAI_API_KEY"] = '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'
10
+ openai.api_key = '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'
11
+
12
+ # Cargar el archivo JSON #CNT-002-2007
13
+ with open("Concentraciones_NPL.json") as json_file:
14
+ data = json.load(json_file)
15
+ #
16
+
17
+ #
18
+ global data
19
+ #print( dumps( data, indent = 4 ) )
20
+
21
+ # Main OpenAI Function
22
+ def get_completion_from_messages( messages, model = "gpt-3.5-turbo-16k",
23
+ temperature = 0, max_tokens = 4000 ): ##Check max_tokens
24
+ response = openai.ChatCompletion.create(
25
+ model = model,
26
+ messages = messages,
27
+ temperature = temperature,
28
+ max_tokens = max_tokens,
29
+ )
30
+ return response.choices[0].message["content"]
31
+
32
+
33
+ # Get SECTOR
34
+ def get_sector(data, Sector):
35
+ #
36
+ # Realizar una b煤squeda por valor de clave
37
+ clave = "Sector"
38
+ valor = Sector#"Servicios financieros y de seguros"
39
+ #
40
+ if valor == 'Todos':
41
+ resultados = data
42
+ else:
43
+ resultados = [item for item in data.values() if item.get(clave) == valor]
44
+ #
45
+ #global resultados
46
+ #
47
+ return resultados
48
+
49
+ # Funcion que conversa sobre el contexto proporcionado
50
+ def chatear(user_message, Sector):
51
+ #
52
+ resultados = get_sector(data, Sector)
53
+ #
54
+ delimiter = "####"
55
+ #
56
+ system_message = f"""
57
+ Eres un especialista en derecho y econom铆a de la competencia econ贸mica \
58
+ con actividad profesional en M茅xico. Se te formular谩n consultas o \
59
+ preguntas que deber谩s responder exclusivamente con la informaci贸n \
60
+ delimitada con los caracteres {delimiter}.
61
+
62
+ La informaci贸n que se te proporcionar谩 estar谩 en formato JSON o en una \
63
+ lista que contiene diccionarios en formato JSON. La informaci贸n que \
64
+ corresponde con caracter铆sticas de las resoluciones de la Comisi贸n \
65
+ Federal de Competencia Econ贸mica de M茅xico en casos de concentraciones \
66
+ (fusiones) resueltas por el Pleno de la Comisi贸n durante el a帽o 2023.
67
+
68
+ La informaci贸n proporcionada esta indexada o tiene como 铆ndice el n煤mero \
69
+ de expediente. Las variables de que se incluyen para cada expediente son:
70
+ Expediente: Indica el n煤mero de expediente
71
+ Empresas: Son los nombres de las empresas involucradas en la concentraci贸n
72
+ Fecha_Inicio: Fecha en la que se present贸 la notificaci贸n de concentraci贸n
73
+ Fecha_Resolucion: Fecha en la que el Pleno de la Comisi贸n resolvi贸 el expediente
74
+ Duration: Diferencia en d铆as entre Fecha_Resolucion y Fecha_Inicio
75
+ Decision: La decisi贸n tomada por el Pleno de la Comisi贸n en relaci贸n a la \
76
+ cooncentraci贸n
77
+ Clausula_No_Competencia: Descripci贸n de s铆 la operaci贸n de concentraci贸n \
78
+ incluye una cl谩usula de no competencia
79
+ Sector: Corresponde con el sector afectado por la operaci贸n de concentraci贸n
80
+ Multa_Total, Agentes_Multados y Detalle_Multa son variables con informaci贸n \
81
+ s铆 el Pleno impuso una multa a las empresas.
82
+
83
+ Aseg煤rate de realizar preguntas de seguimiento.
84
+ """
85
+
86
+ messages = [
87
+ {'role':'system',
88
+ 'content': system_message},
89
+ {'role':'user',
90
+ 'content': f"""
91
+ Usa exclusivamente la informaci贸n de los expedientes de concentraciones: \
92
+ {delimiter}{resultados}{delimiter} para \
93
+ responder sin l铆mite de palabras lo siguiente. {user_message}
94
+ """},
95
+ ]
96
+ #
97
+ final_response = get_completion_from_messages(messages)
98
+ #
99
+ return final_response
100
+
101
+ #
102
+ with gr.Blocks() as demo:
103
+ #
104
+ gr.Markdown("App basada en servicios de OpenAI y el web scraping efectuado a \
105
+ https://www.cofece.mx/conocenos/pleno/resoluciones-y-opiniones/.")
106
+ gr.Markdown("La base de informaci贸n son caracter铆sticas de las resoluciones de concentraciones聽\
107
+ de la COFECE en 2023. La muestra s贸lo incluye 40 concentraciones resueltas en 2023.")
108
+ gr.Markdown("Este es un DEMO. Al 6 de julio de 2023, la informaci贸n completa de las resoluciones \
109
+ de la COFECE comprede, entre otros, 4,291 expedientes de Concentraciones, 792 expedientes de \
110
+ Investigaciones, y 1,405 expedientes de Concesiones.")
111
+ sectores = gr.Dropdown( ["Todos", "Alojamiento temporal y preparaci贸n de alimentos y bebidas",
112
+ "Comercio al por mayor", "Construcci贸n",
113
+ "Electricidad, agua y suministro de gas"
114
+ "Industrias manufactureras", "Informaci贸n en medios masivos",
115
+ "Miner铆a", "Servicios de esparcimiento culturales y deportivos",
116
+ "Servicios financieros y de seguros",
117
+ "Servicios inmobiliarios y alquiler de bienes muebles e intangibles",
118
+ "Transportes, correos y almacenamiento"],
119
+ label = "Selecciona un Sector." )
120
+ busqueda = gr.Textbox(label = "Escribe la pregunta o tarea para iniciar la conversaci贸n.")
121
+ greet_btn = gr.Button("Preguntar")
122
+ output = gr.Textbox(label = "Respuesta:")
123
+ greet_btn.click(fn = chatear, inputs = [ busqueda, sectores ], outputs = output)
124
+ #
125
+ demo.launch( )
126
+ #demo.launch( )
127
+ #
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ gradio==3.27.0
2
+ openai==0.27.4
3
+ pandas==1.4.3
4
+