Spaces:
Sleeping
Sleeping
Add application file
Browse files- .Rhistory +0 -0
- app.py +127 -0
- 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 |
+
|