import torch from fastapi import FastAPI from pydantic import BaseModel from transformers import AutoModelForCausalLM, AutoTokenizer app = FastAPI() # Laad jouw eigen getrainde model in model_path = "./SpaceStar-0.01-Final" tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained(model_path).to("cpu") class ChatRequest(BaseModel): message: str system_prompt: str = "Je bent SpaceStar 0.01, een geavanceerde AI-assistent die gespecialiseerd is in programmeren, wiskunde en communicatie in het Nederlands en Engels." @app.post("/chat") async def chat(request: ChatRequest): # Formatteer het gesprek in de Qwen-stijl messages = [ {"role": "system", "content": request.system_prompt}, {"role": "user", "content": request.message} ] text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) model_inputs = tokenizer([text], return_tensors="pt").to("cpu") # Genereer het antwoord generated_ids = model.generate( **model_inputs, max_new_tokens=256, temperature=0.7, top_p=0.9 ) # Filter de input-tokens weg zodat we alleen het antwoord overhouden generated_ids = [ output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids) ] response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] return {"response": response} @app.get("/") def home(): return {"status": "SpaceStar 0.01 is online and ready!"}