Spaces:
Sleeping
Sleeping
File size: 2,864 Bytes
e7196ea ba42f31 146cb3b 0787c00 5d4dbeb 146cb3b e7196ea 0787c00 658473a e7196ea 0787c00 ba42f31 e7196ea ba42f31 146cb3b 0787c00 ba42f31 0787c00 146cb3b 658473a 146cb3b 658473a 3e9c7cc 658473a 146cb3b 3e9c7cc 146cb3b 3e9c7cc 146cb3b fcf77ef 3e9c7cc 146cb3b 3e9c7cc 146cb3b 3e9c7cc 658473a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import streamlit as st
import pandas as pd
import torch
from langchain import LLMChain, PromptTemplate
from langchain.llms import HuggingFaceHub
from sentence_transformers import SentenceTransformer, util
# Configuraci贸n de la app
st.title("Subida de archivo CSV e interacci贸n con Llama 3.1")
# Subir archivo CSV
uploaded_file = st.file_uploader("Sube un archivo CSV", type=["csv"])
if uploaded_file is not None:
# Leer el archivo CSV en un DataFrame
df = pd.read_csv(uploaded_file)
# Mostrar una vista previa del archivo
st.write("Vista previa del archivo CSV:")
st.write(df.head())
# Especificar la columna de t铆tulos de trabajo
job_title_column = st.selectbox("Selecciona la columna de t铆tulos de trabajo", df.columns)
# Definir el prompt
prompt = "Toma el query 'aspiring human resources specialist' y calcula el cosine similarity score de cada job_title. Crea una nueva columna 'Score' con dichos valores."
# Procesar el prompt con Langchain cuando se presione el bot贸n
if st.button("Calcular Similitud"):
# Paso 1: Usar Llama para generar texto o aclaraciones
prompt_template = PromptTemplate(
template="El usuario ha subido un CSV con la columna de t铆tulos de trabajo. {user_prompt}",
input_variables=["user_prompt"]
)
# Instancia del modelo Llama en HuggingFace
hf_token = st.secrets["HUGGINGFACEHUB_API_TOKEN"]
llm = HuggingFaceHub(repo_id="meta-llama/LLaMA-3.1-8B-Instruct", huggingfacehub_api_token=hf_token)
llm_chain = LLMChain(llm=llm, prompt=prompt_template)
# Ejecutar Llama
llama_response = llm_chain.run({
"user_prompt": prompt
})
# Mostrar la respuesta generada por Llama
st.write("Respuesta generada por Llama:")
st.write(llama_response)
# Paso 2: Usar Sentence Transformers para calcular la similitud de coseno
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
# Query que queremos comparar
query = "aspiring human resources specialist"
# Obtener embeddings del query
query_embedding = model.encode(query, convert_to_tensor=True)
# Obtener embeddings de los t铆tulos de trabajo
job_titles = df[job_title_column].astype(str).tolist()
job_title_embeddings = model.encode(job_titles, convert_to_tensor=True)
# Calcular la similitud de coseno
cosine_scores = util.pytorch_cos_sim(query_embedding, job_title_embeddings)
# Agregar los puntajes de similitud al DataFrame original
df['Score'] = cosine_scores.squeeze().tolist()
# Mostrar el DataFrame actualizado
st.write("DataFrame con los puntajes de similitud:")
st.write(df)
else:
st.write("Por favor, sube un archivo CSV.")
|