Spaces:
Build error
Build error
| import os | |
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| from sse_starlette.sse import EventSourceResponse | |
| from huggingface_hub import hf_hub_download | |
| from llama_cpp import Llama | |
| app = FastAPI(title="Llama Chat & RAG Engine") | |
| # 1. Define Model Settings | |
| MODEL_REPO = "bartowski/Llama-3.2-3B-Instruct-GGUF" | |
| MODEL_FILE = "Llama-3.2-3B-Instruct-Q4_K_M.gguf" | |
| print("Downloading Llama-3.2-3B weights... (This takes a moment)") | |
| model_path = hf_hub_download(repo_id=MODEL_REPO, filename=MODEL_FILE) | |
| print("Loading model into memory...") | |
| # Llama 3.2 3B uses very little RAM, leaving massive headroom for RAG context | |
| llm = Llama( | |
| model_path=model_path, | |
| n_ctx=4096, | |
| n_threads=2, | |
| n_batch=512, | |
| verbose=False | |
| ) | |
| class GenerateRequest(BaseModel): | |
| prompt: str | |
| max_tokens: int = 1024 | |
| temperature: float = 0.7 # Slightly higher temp for natural chat | |
| def health_check(): | |
| return {"status": "Llama Chat Engine is Online and Ready"} | |
| async def generate(request: GenerateRequest): | |
| # Format the prompt using exact Llama 3 syntax | |
| formatted_prompt = ( | |
| f"<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n" | |
| f"You are a highly intelligent AI assistant.<|eot_id|>" | |
| f"<|start_header_id|>user<|end_header_id|>\n\n" | |
| f"{request.prompt}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n" | |
| ) | |
| def token_generator(): | |
| stream = llm( | |
| formatted_prompt, | |
| max_tokens=request.max_tokens, | |
| temperature=request.temperature, | |
| stream=True | |
| ) | |
| for output in stream: | |
| token = output["choices"][0]["text"] | |
| if token: | |
| yield {"data": token} | |
| return EventSourceResponse(token_generator()) |