Spaces:
Sleeping
Sleeping
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 | |
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) | |