import pandas as pd from langchain.chains import LLMChain from langchain_huggingface import HuggingFacePipeline from transformers import LlamaForCausalLM, LlamaTokenizer from langchain.llms import HuggingFaceHub from huggingface_hub import login import streamlit as st import sys # Inicialización de Hugging Face huggingface_token = st.secrets["SECRET"] login(huggingface_token) # Cargar el archivo CSV uploaded_file = st.file_uploader("Sube un archivo CSV con la columna 'job_title':", type=["csv"]) if uploaded_file: df = pd.read_csv(uploaded_file) st.dataframe(df) # Ingreso del query query = "aspiring human resources specialist" # Crear un modelo LLaMA model_name = "meta-llama/Llama-3.2-1B" modelo = LlamaForCausalLM.from_pretrained(model_name) try: tokenizer = LlamaTokenizer.from_pretrained(model_name, force_download=True) print("Vocab file:", tokenizer.vocab_file) # Depurar el archivo de vocabulario except Exception as e: print(f"Error al cargar el tokenizador: {e}") sys.exit(1) # Crear una cadena LLM con LangChain llm = HuggingFaceHub(modelo, tokenizer) chain = LLMChain(llm) def calcular_similitud(texto): prompt = f"Calcular el cosine similarity score entre '{query}' y '{texto}'. Responde con el score como un valor numérico entre 0 y 1." resultado = chain.run(prompt) return float(resultado) # Calcular la similitud para cada job title df['Score'] = df['job_title'].apply(calcular_similitud) # Reportar los resultados print(df) else: st.write("No se ha subido un archivo")