from fastapi import FastAPI, HTTPException from pydantic import BaseModel from transformers import AutoProcessor import os import traceback MODEL_NAME = os.getenv("MODEL_NAME", "HuggingFaceTB/SmolVLM-256M-Instruct") app = FastAPI(title="OpenClaw Vision API") processor = None class AnalyzeRequest(BaseModel): image_url: str user_request: str = "Describe this image." def get_processor(): global processor if processor is None: processor = AutoProcessor.from_pretrained(MODEL_NAME) return processor @app.get("/health") def health(): return { "ok": True, "stage": "processor_lazy", "loaded": processor is not None } @app.post("/analyze") def analyze(req: AnalyzeRequest): try: get_processor() return { "caption": f"processor loaded: {req.image_url}", "ocr_text": "", "objects": [], "layout": "", "confidence_notes": "processor test mode" } except Exception as e: traceback.print_exc() raise HTTPException(status_code=500, detail=str(e))