import os import requests from fastapi import FastAPI, Form from fastapi.responses import HTMLResponse, JSONResponse OLLAMA_URL = os.getenv("OLLAMA_URL", "http://127.0.0.1:11434") MODEL = os.getenv("OLLAMA_MODEL", "qwen2.5:0.5b") APP_KEY = os.getenv("APP_KEY", "") app = FastAPI(title="Ollama Qwen Demo") def run_prompt(prompt: str, key: str = "") -> dict: if APP_KEY and key != APP_KEY: return {"error": "Unauthorized"} try: res = requests.post( f"{OLLAMA_URL}/api/generate", json={"model": MODEL, "prompt": prompt, "stream": False}, timeout=180, ) res.raise_for_status() return {"response": res.json().get("response", "")} except Exception as exc: return {"error": str(exc)} @app.get("/", response_class=HTMLResponse) def index() -> str: return f""" Ollama Qwen Demo

Ollama Qwen Demo

Model: {MODEL}

""" @app.post("/chat", response_class=HTMLResponse) def chat_form(prompt: str = Form(...), key: str = Form(default="")) -> str: result = run_prompt(prompt, key) output = result.get("response") or result.get("error", "No response") return f""" ← Back

Response

{output}
""" @app.post("/api/chat") def chat_api(payload: dict) -> JSONResponse: prompt = str(payload.get("prompt", "")) key = str(payload.get("key", "")) return JSONResponse(run_prompt(prompt, key))