File size: 1,754 Bytes
8fb6433 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | export const PROMPT_OPTIMIZER_BACKENDS = Object.freeze(["direct", "mcp", "disabled"]);
export const PROMPT_OPTIMIZER_API_FORMATS = Object.freeze(["openai", "responses", "gemini"]);
export function normalizePromptOptimizerBackend(value) {
const backend = String(value ?? "direct").trim().toLowerCase();
return PROMPT_OPTIMIZER_BACKENDS.includes(backend) ? backend : "direct";
}
export function normalizePromptOptimizerApiFormat(value) {
const format = String(value ?? "openai").trim().toLowerCase();
return PROMPT_OPTIMIZER_API_FORMATS.includes(format) ? format : "openai";
}
export function directOptimizerConfigurationError(config = {}) {
if (!String(config.api_url ?? "").trim()) return "Direct API URL is not configured.";
if (!String(config.model ?? "").trim()) return "Direct API model is not configured.";
if (normalizePromptOptimizerApiFormat(config.api_format) === "gemini"
&& !String(config.api_key ?? "").trim()) {
return "Gemini Native requires an API key.";
}
return "";
}
export function makeDirectPromptOptimizeRequest({config, instruction, context, resources = []}) {
const error = directOptimizerConfigurationError(config);
if (error) throw new Error(`${error} Open ComfyUI Settings → MiniMax H3 Context Loop → Prompt optimizer.`);
return {
api_format: normalizePromptOptimizerApiFormat(config.api_format),
api_url: String(config.api_url ?? "").trim(),
api_key: String(config.api_key ?? ""),
model: String(config.model ?? "").trim(),
allow_media: config.allow_media === true,
resources: config.allow_media === true ? resources : [],
instruction: String(instruction ?? "").trim(),
context,
};
}
|