import pandas as pd from langchain.chains import LLMChain from langchain_huggingface import HuggingFacePipeline from transformers import LlamaForCausalLM, AutoTokenizer 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-2-7b" # Usa un nombre de modelo válido en Hugging Face modelo = LlamaForCausalLM.from_pretrained(model_name) try: # Usar AutoTokenizer para manejar automáticamente el tokenizador adecuado tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True) print("Tokenizador cargado con éxito.") except Exception as e: print(f"Error al cargar el tokenizador: {e}") sys.exit(1) # Crear una cadena LLM con LangChain usando HuggingFaceHub llm = HuggingFaceHub(repo_id=model_name, model_kwargs={"device_map": "auto"}) chain = LLMChain(llm=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 st.write(df) else: st.write("No se ha subido un archivo")