Spaces:
Paused
Paused
| from fastapi import FastAPI | |
| from fastapi.responses import HTMLResponse | |
| from pydantic import BaseModel | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| import torch | |
| app = FastAPI() | |
| MODEL_NAME = "Qwen/Qwen2.5-0.5B-Instruct" | |
| tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) | |
| model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, torch_dtype="auto") | |
| class ChatRequest(BaseModel): | |
| message: str | |
| async def chat(request: ChatRequest): | |
| messages = [ | |
| { | |
| "role": "system", | |
| "content": "Kamu adalah FAREL AI, sebuah kecerdasan buatan buatan Muhammad Farel. Selalu perkenalkan dirimu sebagai FAREL AI. Kamu diciptakan, dikembangkan, dan dibuat sepenuhnya oleh Muhammad Farel. Jika ada yang bertanya tentang siapa pembuatmu atau siapa penciptamu, jawablah dengan tegas dan singkat bahwa penciptamu adalah Muhammad Farel." | |
| }, | |
| {"role": "user", "content": request.message} | |
| ] | |
| text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) | |
| model_inputs = tokenizer([text], return_tensors="pt") | |
| generated_ids = model.generate( | |
| **model_inputs, | |
| max_new_tokens=256, | |
| do_sample=True, | |
| top_p=0.9, | |
| temperature=0.4 # Diturunkan ke 0.4 agar model lebih patuh pada perintah sistem dan tidak melantur | |
| ) | |
| 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} | |
| async def get_index(): | |
| with open("index.html", "r", encoding="utf-8") as f: | |
| return f.read() |