from vllm import LLM from vllm.sampling_params import SamplingParams import mergekit from fastapi import FastAPI from uvicorn import run app = FastAPI() model_name = "Hjgugugjhuhjggg/mergekit-ties-tzamfyy" mergekit_model = mergekit.MergeKitModel(model_name) SYSTEM_PROMPT = "¡Hola! Soy un modelo de lenguaje avanzado. Estoy aquí para ayudarte con cualquier pregunta o tema que desees discutir. ¿En qué puedo ayudarte hoy?" def divide_texto(texto, max_tokens=512): mensajes = [] texto_actual = "" tokens_actuales = 0 for palabra in texto.split(): if tokens_actuales + len(palabra) > max_tokens: mensajes.append(texto_actual.strip()) texto_actual = palabra + " " tokens_actuales = len(palabra) + 1 else: texto_actual += palabra + " " tokens_actuales += len(palabra) + 1 if texto_actual.strip(): mensajes.append(texto_actual.strip()) return mensajes @app.post("/chat") async def chat(texto: str): mensajes = divide_texto(texto) # Nuevo mensaje mensaje = {"role": "user", "content": []} for mensaje_texto in mensajes: mensaje["content"].append({"type": "text", "text": mensaje_texto}) messages = [ {"role": "system", "content": SYSTEM_PROMPT}, mensaje, ] sampling_params = SamplingParams(max_tokens=512) llm = LLM(model=mergekit_model, config_format="llama", load_format="llama", tokenizer_mode="llama", tensor_parallel_size=8) outputs = llm.chat(messages, sampling_params=sampling_params) return {"response": outputs[0].outputs[0].text} if __name__ == "__main__": run(app, host="0.0.0.0", port=8000)