ai / app.py
fareldevelopers's picture
Update app.py
d6313bb verified
Raw
History Blame Contribute Delete
1.77 kB
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
@app.post("/api/chat")
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}
@app.get("/", response_class=HTMLResponse)
async def get_index():
with open("index.html", "r", encoding="utf-8") as f:
return f.read()