Spaces:
Sleeping
Sleeping
File size: 3,052 Bytes
2a0f243 cf47d83 69e3a41 3d477e1 ea3c34e 69e3a41 2a0f243 85ec4d4 b99eeda b1382eb 251623f 2a0f243 ea3c34e a77f2b3 ea3c34e 70ed6f0 b99eeda ea3c34e b99eeda a3bc7ec ea3c34e b99eeda ea3c34e a3bc7ec ea3c34e 904cf6c ea3c34e 5d3dc3e ea3c34e b99eeda ea3c34e b99eeda ea3c34e 4fd169c ea3c34e 69302d4 105c4c8 b99eeda 4fd169c ea3c34e 2b5a681 ea3c34e b99eeda ea3c34e b99eeda ea3c34e 2b5a681 ea3c34e 2b5a681 |
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
import streamlit as st
from huggingface_hub import login
import pandas as pd
from threading import Thread
# Token Secret de Hugging Face
huggingface_token = st.secrets["HUGGINGFACEHUB_API_TOKEN"]
login(huggingface_token)
# Cambiar a la versi贸n Meta Llama 3.1 1B
model_id = "meta-llama/Llama-3.2-1B"
# Cargar el tokenizador y el modelo
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
tokenizer.pad_token = tokenizer.eos_token
# Definir longitud m谩xima de tokens
MAX_INPUT_TOKEN_LENGTH = 4096
def generate_response(input_text, temperature=0.7, max_new_tokens=100):
"""Funci贸n de generaci贸n de texto con el modelo."""
input_ids = tokenizer.encode(input_text, return_tensors='pt').to(model.device)
streamer = TextIteratorStreamer(tokenizer, timeout=10.0, skip_prompt=True, skip_special_tokens=True)
generate_kwargs = dict(
input_ids=input_ids,
streamer=streamer,
max_new_tokens=max_new_tokens,
do_sample=True,
top_k=50,
top_p=0.9,
temperature=temperature,
eos_token_id=[tokenizer.eos_token_id]
)
# Generaci贸n de texto en un hilo separado
t = Thread(target=model.generate, kwargs=generate_kwargs)
t.start()
outputs = []
for text in streamer:
outputs.append(text)
# Devolver la respuesta completa
return "".join(outputs)
def main():
st.title("Chat con Meta Llama 3.2 1B")
# Subir archivo CSV
uploaded_file = st.file_uploader("Por favor, sube un archivo CSV para iniciar:", type=["csv"])
if uploaded_file is not None:
df = pd.read_csv(uploaded_file)
query = "aspiring human resources specialist"
st.write("Archivo CSV cargado exitosamente:")
st.write(df.head()) # Mostrar las primeras filas del dataframe
job_titles = df['job_title'].tolist()
# Prompt mejorado
initial_prompt = f"I have a list of job titles: {job_titles}. Please give me the first job title from the list."
st.write(f"Query: {query}")
st.write(f"Prompt inicial: {initial_prompt}")
# Generar la respuesta del modelo
if st.button("Generar respuesta"):
with st.spinner("Generando respuesta..."):
response = generate_response(initial_prompt, temperature=0.7)
if response:
st.write(f"Respuesta del modelo: {response}")
else:
st.warning("No se pudo generar una respuesta.")
# Terminar la conversaci贸n
st.success("La conversaci贸n ha terminado.")
# Opci贸n para reiniciar o finalizar
if st.button("Iniciar nueva conversaci贸n"):
st.experimental_rerun()
elif st.button("Terminar"):
st.stop()
if __name__ == "__main__":
main()
|