from fastapi import FastAPI, HTTPException import base64 import os from contextlib import asynccontextmanager # Global variable to hold the LoRA weights lora_weights = None # Lifespan context manager to handle the application startup @asynccontextmanager async def lifespan(app: FastAPI): global lora_weights lora_path = "./lora_file.pth" # Ensure the correct file name if os.path.exists(lora_path): with open(lora_path, "rb") as f: lora_weights = base64.b64encode(f.read()).decode("utf-8") print("LoRA weights loaded and preprocessed successfully.") else: raise HTTPException(status_code=500, detail="LoRA file not found.") yield # Cleanup if necessary (but not required in this case) # Initialize FastAPI app with lifespan context app = FastAPI(lifespan=lifespan) @app.post("/modify-prompt") async def modify_prompt(prompt: str): global lora_weights if lora_weights is None: raise HTTPException(status_code=500, detail="LoRA weights not loaded.") # Combine prompt with preprocessed LoRA data extended_prompt = { "prompt": prompt, "lora": lora_weights } return extended_prompt