Spaces:
Sleeping
Sleeping
File size: 2,354 Bytes
bec3852 1860099 bec3852 4ddd510 325b992 bec3852 c478c9d 581c82f 4ddd510 bec3852 7db4d16 8517578 d751e33 8517578 4ddd510 565090b 88f9f20 4ddd510 88f9f20 bec3852 bb4b951 1860099 bb4b951 a7f4c99 bec3852 4ddd510 565090b 4ddd510 565090b bec3852 4ddd510 c478c9d |
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 |
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
@model_validator(mode='before')
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}")
|