Spaces:
Sleeping
Sleeping
import torch | |
import pandas as pd | |
import streamlit as st | |
from transformers import AutoModelForCausalLM, AutoTokenizer | |
from langchain.llms import HuggingFacePipeline | |
from huggingface_hub import login | |
from pydantic import BaseModel, model_validator | |
# Token secreto de Hugging Face | |
huggingface_token = st.secrets["HUGGINGFACEHUB_API_TOKEN"] | |
login(huggingface_token) | |
# Cargar el modelo Llama 3.1 | |
model_name = "meta-llama/llama-3.1-8b-instruct" | |
model = AutoModelForCausalLM.from_pretrained(model_name) | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
pipe = pipeline("feature-extraction", model=model, tokenizer=tokenizer) | |
# Usar transformers pipeline para cargar el modelo y tokenizer | |
llm_pipeline = HuggingFacePipeline(pipeline=pipe) | |
# Interfaz de Streamlit | |
st.title("Cosine Similarity con Llama 3.1") | |
# Subida de archivo CSV | |
uploaded_file = st.file_uploader("Sube un archivo CSV", type=["csv"]) | |
if uploaded_file is not None: | |
# Leer el archivo CSV | |
df = pd.read_csv(uploaded_file) | |
# Solicitar un query al usuario | |
query = st.text_input("Por favor ingresa tu consulta:") | |
if query: | |
# Crear el prompt para calcular la similitud del coseno | |
prompt = f""" | |
Con la columna 'job_title' del csv, tiene que calcular los cosine similarity score entre cada registro y el query, | |
tiene que crear una columna nueva 'Score' con dichos scores y adem谩s tiene que ordenar los registros de mayor a menor valor de 'Score'. | |
El query es: {query} | |
""" | |
# Llamar al modelo con el prompt | |
try: | |
response = llm_pipeline(prompt) | |
# Mostrar la respuesta del modelo | |
st.write("Respuesta del modelo:", response) | |
except Exception as e: | |
st.error(f"Ocurri贸 un error al procesar el modelo: {str(e)}") | |
# Modelo de validaci贸n de datos con Pydantic | |
class ConsultaModelo(BaseModel): | |
query: str | |
def validar_query(cls, values): | |
query = values.get('query') | |
if not query: | |
raise ValueError("El query no puede estar vac铆o.") | |
return values | |
# Ejemplo de uso del modelo de validaci贸n | |
if query: | |
try: | |
valid_query = ConsultaModelo(query=query) | |
st.success("Consulta v谩lida.") | |
except ValueError as e: | |
st.error(f"Error de validaci贸n: {e}") | |