import os import streamlit as st from fastapi import FastAPI from pydantic import BaseModel import uvicorn import threading from transformers import AutoTokenizer import torch # ======== Cargar el modelo DialoGPT ========= tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium") # ======== Definir API con FastAPI ========= app = FastAPI() class Message(BaseModel): text: str @app.post("/chat") def chat(msg: Message): """Genera respuesta basada en el input del usuario.""" input_text = msg.text # Texto de entrada print(f"Mensaje recibido: {input_text}") # Codificar el texto de entrada y agregar el token de fin de secuencia inputs = tokenizer.encode(input_text + tokenizer.eos_token, return_tensors="pt") # Generar la respuesta response_ids = model.generate(inputs, max_length=100, # Longitud máxima de la respuesta pad_token_id=tokenizer.eos_token_id, no_repeat_ngram_size=2, # Evitar repeticiones top_p=0.95, # Top-p sampling para mayor diversidad top_k=60) # Top-k sampling # Decodificar la respuesta generada response_text = tokenizer.decode(response_ids[:, inputs.shape[-1]:][0], skip_special_tokens=True) print(f"Respuesta generada: {response_text}") return {"response": response_text} #young preteen, very slender, fair skin, very large breasts, straight red hair, legs spread putting a finger in the anus and another in the pussy, naked photorealistic, high detail #young preteen, very slender, fair skin, very large breasts, doggy sexy pose, show pussy naked #joven adolescente en posición de perrita sexy, enseñando las nalgas y la vagina # ======== Función para ejecutar FastAPI en segundo plano ========= def run_api(): port = int(os.getenv("PORT", 7860)) uvicorn.run(app, host="0.0.0.0", port=port) threading.Thread(target=run_api, daemon=True).start() # ======== Interfaz con Streamlit ========= st.title("Mi Amigo Virtual 🤖") st.write("Escríbeme algo y te responderé!") user_input = st.text_input("Tú:") if user_input: response = chat(Message(text=user_input)) st.write("🤖:", response["response"])