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