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.")