Update app.py
Browse files
app.py
CHANGED
@@ -1,29 +1,52 @@
|
|
1 |
import networkx as nx
|
2 |
import matplotlib.pyplot as plt
|
3 |
import json
|
4 |
-
import textwrap
|
5 |
import requests
|
6 |
import pandas as pd
|
7 |
import os
|
8 |
import gradio as gr
|
9 |
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
inicializar_grafo()
|
14 |
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
G = nx.DiGraph()
|
20 |
|
21 |
-
url = f"https://api.airtable.com/v0/{
|
22 |
headers = {
|
23 |
-
"Authorization": f"Bearer {
|
24 |
"Content-Type": "application/json"
|
25 |
}
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
def cargar_desde_airtable():
|
28 |
response = requests.get(url, headers=headers)
|
29 |
|
@@ -76,10 +99,6 @@ def visualizar_grafo():
|
|
76 |
plt.close()
|
77 |
return "graph.png"
|
78 |
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
def chat_interface(student, message):
|
84 |
"""Handles chat messages, processes them, and updates AirTable."""
|
85 |
graph_image = create_graph(student, message)
|
|
|
1 |
import networkx as nx
|
2 |
import matplotlib.pyplot as plt
|
3 |
import json
|
|
|
4 |
import requests
|
5 |
import pandas as pd
|
6 |
import os
|
7 |
import gradio as gr
|
8 |
|
9 |
+
# Load OpenAI API Key
|
10 |
+
API_KEY = os.getenv("OAIK")
|
11 |
+
client = openai.OpenAI(api_key=API_KEY)
|
|
|
12 |
|
13 |
+
api_key_airt = os.getenv("AIRT")
|
14 |
+
AIRT_DBASE = 'appUuBVTJR5ju0y6J'
|
15 |
+
AIRT_TABLE = 'foros_postdoc'
|
|
|
|
|
16 |
|
17 |
+
url = f"https://api.airtable.com/v0/{AIRT_DBASE}/{AIRT_TABLE}"
|
18 |
headers = {
|
19 |
+
"Authorization": f"Bearer {api_key_airt}",
|
20 |
"Content-Type": "application/json"
|
21 |
}
|
22 |
|
23 |
+
# Sample vocabulary for concept extraction
|
24 |
+
VOCABULARY = ["algoritmos", "inteligencia artificial", "pol铆ticas p煤blicas",
|
25 |
+
"educaci贸n a distancia", "gobernanza", "educaci贸n superior"]
|
26 |
+
|
27 |
+
students = ["Alice", "Bob", "Charlie"]
|
28 |
+
|
29 |
+
G = nx.DiGraph()
|
30 |
+
|
31 |
+
def extract_concepts(text):
|
32 |
+
|
33 |
+
instrucciones = "Eres un experto en educaci贸n superior a distancia con conocimiento de pol铆ticas p煤blicas, \
|
34 |
+
tanto para educaci贸n superior como la adopci贸n de inteligencia artificial"
|
35 |
+
prompt = f"""Dado el siguiente mensaje: '{text}', identifica cu谩les de los siguientes conceptos est谩n mencionados \
|
36 |
+
seg煤n su significado, no solo las palabras exactas: {', '.join(VOCABULARY)}. \
|
37 |
+
Devuelve los conceptos coincidentes como una lista separada por comas."""
|
38 |
+
|
39 |
+
version_model = 'gpt-3.5-turbo-0125'
|
40 |
+
response = client.chat.completions.create(
|
41 |
+
model=version_model,
|
42 |
+
messages=[{"role": "system", "content": instrucciones},
|
43 |
+
{"role": "user", "content": prompt}],
|
44 |
+
temperature=0.8,
|
45 |
+
max_tokens=300,
|
46 |
+
)
|
47 |
+
extract_concepts = response.choices[0].message.content.split(',')
|
48 |
+
return extract_concepts
|
49 |
+
|
50 |
def cargar_desde_airtable():
|
51 |
response = requests.get(url, headers=headers)
|
52 |
|
|
|
99 |
plt.close()
|
100 |
return "graph.png"
|
101 |
|
|
|
|
|
|
|
|
|
102 |
def chat_interface(student, message):
|
103 |
"""Handles chat messages, processes them, and updates AirTable."""
|
104 |
graph_image = create_graph(student, message)
|