Spaces:
Running
Running
| import json | |
| from fastapi import FastAPI, Request | |
| from fastapi.responses import StreamingResponse | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from huggingface_hub import hf_hub_download | |
| from llama_cpp import Llama | |
| app = FastAPI() | |
| # Guarantee seamless web streaming connections from your Vercel frontend | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| print("Downloading highly optimized VibeThinker-3B Q4_K_M GGUF model...") | |
| model_path = hf_hub_download( | |
| repo_id="prithivMLmods/VibeThinker-3B-GGUF", | |
| filename="VibeThinker-3B.Q4_K_M.gguf" | |
| ) | |
| print("Initializing memory-optimized llama.cpp execution runtime...") | |
| llm = Llama( | |
| model_path=model_path, | |
| n_ctx=6144, # Expanded context window from 4096 to 6144 for longer historical tracks | |
| n_batch=32, # Kept at 32 to guarantee flat peak memory profiles | |
| n_threads=2 | |
| ) | |
| def read_root(): | |
| return {"status": "online", "engine": "llama.cpp Memory-Hardened Core"} | |
| async def chat_completions(request: Request): | |
| body = await request.json() | |
| messages = body.get("messages", []) | |
| response = llm.create_chat_completion( | |
| messages=messages, | |
| temperature=0.3, | |
| top_p=0.95, | |
| stream=True, | |
| max_tokens=3072 # Doubled token headroom from 1536 to 3072 | |
| ) | |
| def stream_generator(): | |
| try: | |
| for chunk in response: | |
| delta = chunk.get("choices", [{}])[0].get("delta", {}) | |
| if "content" in delta: | |
| yield f"data: {json.dumps(chunk)}\n\n" | |
| yield "data: [DONE]\n\n" | |
| except Exception as e: | |
| # Catch silent disconnects or timeouts cleanly without crashing the Uvicorn thread | |
| print(f"Streaming trace intercepted safely: {str(e)}") | |
| return | |
| return StreamingResponse(stream_generator(), media_type="text/event-stream") | |
| if __name__ == "__main__": | |
| import uvicorn | |
| uvicorn.run(app, host="0.0.0.0", port=7860) |