Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,34 +1,47 @@
|
|
1 |
-
import torch
|
2 |
-
import pandas as pd
|
3 |
import streamlit as st
|
4 |
-
import
|
5 |
-
from
|
6 |
-
from
|
7 |
-
|
8 |
-
# Tu token secreto de Hugging Face
|
9 |
-
huggingface_token = st.secrets["HUGGINGFACEHUB_API_TOKEN"]
|
10 |
-
login(huggingface_token)
|
11 |
|
12 |
-
#
|
13 |
uploaded_file = st.file_uploader("Sube un archivo CSV", type=["csv"])
|
14 |
|
15 |
if uploaded_file is not None:
|
16 |
-
# Leer el archivo CSV
|
17 |
df = pd.read_csv(uploaded_file)
|
18 |
st.write("Vista previa del archivo CSV:", df.head())
|
19 |
|
20 |
-
|
21 |
-
|
22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
|
24 |
-
|
25 |
-
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
inputs = tokenizer(query, return_tensors="pt")
|
30 |
-
outputs = model.generate(**inputs)
|
31 |
|
32 |
-
# Decodifica y muestra la respuesta
|
33 |
-
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
34 |
-
st.write("Respuesta del modelo:", response)
|
|
|
|
|
|
|
1 |
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
from langchain.prompts import PromptTemplate
|
4 |
+
from langchain.llms import OpenAI
|
|
|
|
|
|
|
|
|
5 |
|
6 |
+
# Cargar archivo CSV
|
7 |
uploaded_file = st.file_uploader("Sube un archivo CSV", type=["csv"])
|
8 |
|
9 |
if uploaded_file is not None:
|
10 |
+
# Leer el archivo CSV
|
11 |
df = pd.read_csv(uploaded_file)
|
12 |
st.write("Vista previa del archivo CSV:", df.head())
|
13 |
|
14 |
+
if 'job_title' in df.columns:
|
15 |
+
# Preguntar al usuario por el query
|
16 |
+
query = st.text_input("Por favor ingresa tu consulta para calcular similitud de coseno:")
|
17 |
+
|
18 |
+
if query:
|
19 |
+
# Crear el prompt para el modelo, dándole instrucciones detalladas
|
20 |
+
prompt_template = """
|
21 |
+
Tienes un archivo CSV con la columna 'job_title'. Tu tarea es calcular el puntaje de similitud de coseno entre cada registro de 'job_title' y el siguiente query: '{query}'.
|
22 |
+
Necesitas crear una nueva columna 'Score' que contenga los puntajes de similitud para cada registro.
|
23 |
+
Luego, debes ordenar los registros de mayor a menor según el valor en la columna 'Score'.
|
24 |
+
Devuélveme el DataFrame resultante con los registros ordenados.
|
25 |
+
Aquí tienes los datos de la columna 'job_title':
|
26 |
+
{job_titles}
|
27 |
+
"""
|
28 |
+
|
29 |
+
# Convertir los títulos de trabajo a una lista
|
30 |
+
job_titles = df['job_title'].tolist()
|
31 |
+
|
32 |
+
# Formatear el prompt con el query y los job_titles
|
33 |
+
prompt = PromptTemplate(
|
34 |
+
template=prompt_template,
|
35 |
+
input_variables=["query", "job_titles"]
|
36 |
+
).format(query=query, job_titles=job_titles)
|
37 |
+
|
38 |
+
# Llamar al modelo de lenguaje usando LangChain y OpenAI
|
39 |
+
llm = OpenAI(temperature=0.7) # Llama a GPT u otro LLM
|
40 |
+
response = llm(prompt)
|
41 |
|
42 |
+
# Mostrar la respuesta del modelo (el DataFrame procesado)
|
43 |
+
st.write("Resultados ordenados por similitud de coseno:", response)
|
44 |
|
45 |
+
else:
|
46 |
+
st.warning("El archivo CSV no contiene la columna 'job_title'.")
|
|
|
|
|
47 |
|
|
|
|
|
|