Spaces:
Sleeping
Sleeping
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.") | |