from flask import Blueprint, request, g from handlers.base import fail, success, check_schema from models.prompt import Prompt from schema.schema import FormatPromptSchema from utils.logging import logging prompt_bp = Blueprint("prompt_bp", __name__) @prompt_bp.post("/format") def format_prompt(): payload = check_schema(FormatPromptSchema, request.get_json()) name = payload["name"] variables = payload["vars"] prompt = Prompt.get_by_name(g.session, name) if not prompt: return fail(404) try: full_prompt = prompt.content % variables return success(result={"full_prompt": full_prompt}) except KeyError: logging.exception("failed to format prompt %s with variables %s", prompt.content, str(variables)) return fail(400, "invalid variables")