| | from fastapi import FastAPI, Form |
| | import torch |
| | from transformers import pipeline |
| |
|
| | app = FastAPI() |
| | pipe = pipeline("text-generation", model="TinyLlama/TinyLlama-1.1B-Chat-v1.0", torch_dtype=torch.bfloat16, device_map="auto") |
| |
|
| | @app.get("/") |
| | def read_root(): |
| | return {"message": "Hello, World!"} |
| |
|
| | @app.get("/items/{item_id}") |
| | def read_item(item_id: int, query_param: str = None): |
| | return {"item_id": item_id, "query_param": query_param} |
| |
|
| | @app.post("/chat") |
| | async def chat(sentence: str = Form(...)): |
| | print("start chat") |
| | if sentence.lower() == "quit": |
| | return {"response": "Chatbot session ended."} |
| |
|
| | messages = [ |
| | { |
| | "role": "system", |
| | "content": "You are a friendly chatbot who always responds in the style of a pirate", |
| | }, |
| | {"role": "user", "content": sentence}, |
| | ] |
| | print("start apply_chat_template") |
| | prompt = pipe.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) |
| | print("start outputs") |
| | outputs = pipe(prompt, max_new_tokens=256, do_sample=True, temperature=0.7, top_k=50, top_p=0.95) |
| | text = outputs[0]["generated_text"] |
| |
|
| | return {"response": text} |
| |
|