Spaces:
Sleeping
Sleeping
from fastapi import FastAPI, Request | |
from transformers import AutoTokenizer, AutoModelForCausalLM | |
import torch | |
print("COSMOS Llama Chatbot is starting...") | |
model_id = "ytu-ce-cosmos/Turkish-Llama-8b-DPO-v0.1" | |
print("Model loading started") | |
tokenizer = AutoTokenizer.from_pretrained(model_id) | |
model = AutoModelForCausalLM.from_pretrained( | |
model_id, | |
torch_dtype=torch.bfloat16, | |
device_map="auto", | |
) | |
print("Model loading completed") | |
# bu mesaj değiştirilebilir ve chatbotun başlangıç mesajı olarak kullanılabilir | |
initial_message = [ | |
{"role": "system", "content": "Sen bir yapay zeka asistanısın. Kullanıcı sana bir görev verecek. Amacın görevi olabildiğince sadık bir şekilde tamamlamak."} | |
# Görevi yerine getirirken adım adım düşün ve adımlarını gerekçelendir. | |
] | |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
print("Selected device:", device) | |
app = FastAPI() | |
def home(): | |
return {"hello": "Bitfumes"} | |
async def ask(request: Request): | |
data = await request.json() | |
prompt = data.get("prompt") | |
if not prompt: | |
return {"error": "Prompt is missing"} | |
print("Device of the model:", model.device) | |
messages = initial_message.copy() | |
messages.append({"role": "user", "content": f"{prompt}"}) | |
print("Messages:", messages) | |
print("Tokenizer process started") | |
input_ids = tokenizer.apply_chat_template( | |
messages, | |
add_generation_prompt=True, | |
return_tensors="pt" | |
).to(model.device) | |
terminators = [ | |
tokenizer.eos_token_id, | |
tokenizer.convert_tokens_to_ids("<|eot_id|>") | |
] | |
print("Tokenizer process completed") | |
print("Model process started") | |
outputs = model.generate( | |
input_ids, | |
max_new_tokens=256, | |
eos_token_id=terminators, | |
do_sample=True, | |
temperature=0.6, | |
top_p=0.9, | |
) | |
response = outputs[0][input_ids.shape[-1]:] | |
print("Tokenizer decode process started") | |
answer = tokenizer.decode(response, skip_special_tokens=True) | |
return {"answer": answer} |