Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,47 +1,42 @@
|
|
1 |
-
import
|
2 |
import pandas as pd
|
3 |
-
|
4 |
-
from langchain.llms import
|
|
|
5 |
|
6 |
-
#
|
7 |
-
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import torch
|
2 |
import pandas as pd
|
3 |
+
import streamlit as st
|
4 |
+
from langchain.llms import Llama
|
5 |
+
from huggingface_hub import login
|
6 |
|
7 |
+
# Tu token secreto de Hugging Face
|
8 |
+
huggingface_token = st.secrets["HUGGINGFACEHUB_API_TOKEN"]
|
9 |
+
login(huggingface_token)
|
10 |
|
11 |
+
# Cargar el modelo Llama 3.1
|
12 |
+
model_name = "meta-llama/llama-3.1-8b-instruct" # Asegúrate de que este sea el nombre correcto del modelo
|
13 |
+
llm = Llama(model_name=model_name, torch_dtype=torch.float16)
|
14 |
+
|
15 |
+
# Interfaz de Streamlit
|
16 |
+
st.title("Cosine Similarity con Llama 3.1")
|
17 |
+
|
18 |
+
# Subida de archivo CSV
|
19 |
+
uploaded_file = st.file_uploader("Sube un archivo CSV", type=["csv"])
|
20 |
if uploaded_file is not None:
|
21 |
# Leer el archivo CSV
|
22 |
df = pd.read_csv(uploaded_file)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
|
24 |
+
# Solicitar un query al usuario
|
25 |
+
query = st.text_input("Por favor ingresa tu consulta:")
|
26 |
+
|
27 |
+
if query:
|
28 |
+
# Crear el prompt para calcular la similitud del coseno
|
29 |
+
prompt = f"""
|
30 |
+
Con la columna 'job_title' del csv, tiene que calcular los cosine similarity score entre cada registro y el query,
|
31 |
+
tiene que crear una columna nueva 'Score' con dichos scores y además tiene que ordenar los registros de mayor a menor valor de 'Score'.
|
32 |
+
El query es: {query}
|
33 |
+
"""
|
34 |
+
|
35 |
+
# Llamar al modelo Llama con el prompt
|
36 |
+
response = llm(prompt)
|
37 |
+
|
38 |
+
# Mostrar la respuesta del modelo
|
39 |
+
st.write("Respuesta del modelo:", response)
|
40 |
+
|
41 |
+
# Aquí puedes procesar la respuesta para extraer los scores y ordenar los registros
|
42 |
+
# Esto asume que el modelo te devuelve una respuesta estructurada en un formato que puedes procesar
|