From 08f3a80169a5e661333ef45f29bcf6ebade8bebe Mon Sep 17 00:00:00 2001 From: Karl Date: Wed, 18 Jun 2025 16:58:20 +0100 Subject: [PATCH] add selecting the topic when doing random prompt --- ai_frame_image_server.py | 7 +++++-- libs/generic.py | 5 +++++ libs/ollama.py | 18 +++++++++++++----- templates/create_image.html | 13 +++++++++++++ 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/ai_frame_image_server.py b/ai_frame_image_server.py index 9ff113b..39428c5 100644 --- a/ai_frame_image_server.py +++ b/ai_frame_image_server.py @@ -19,6 +19,7 @@ from libs.generic import ( get_details_from_png, get_current_version, load_models_from_config, + load_topics_from_config ) from libs.comfyui import cancel_current_job, create_image, select_model from libs.ollama import create_prompt_on_openwebui @@ -122,9 +123,10 @@ def create(): if request.method == "POST": prompt = request.form.get("prompt") selected_workflow, model = select_model(request.form.get("model") or "Random") + topic = request.form.get("topic") if not prompt: - prompt = create_prompt_on_openwebui(user_config["comfyui"]["prompt"]) + prompt = create_prompt_on_openwebui(user_config["comfyui"]["prompt"], topic) # Start generation in background threading.Thread(target=lambda: create_image(prompt, model)).start() @@ -158,8 +160,9 @@ def create_image_endpoint() -> str: if user_config["frame"]["create_requires_auth"] == "True" and not session.get('authenticated'): return redirect(url_for("login")) models = load_models_from_config() + topics = load_topics_from_config() - return render_template("create_image.html", models=models) + return render_template("create_image.html", models=models, topics=topics) if user_config["frame"]["auto_regen"] == "True": diff --git a/libs/generic.py b/libs/generic.py index e80504d..42f1509 100644 --- a/libs/generic.py +++ b/libs/generic.py @@ -105,6 +105,11 @@ def load_models_from_config(): all_models = flux_models + sdxl_models return all_models +def load_topics_from_config(): + topics = user_config["comfyui"]["topics"].split(", ") + return topics + + user_config = load_config() output_folder = user_config["comfyui"]["output_dir"] \ No newline at end of file diff --git a/libs/ollama.py b/libs/ollama.py index 3bdb462..18b6be3 100644 --- a/libs/ollama.py +++ b/libs/ollama.py @@ -12,15 +12,23 @@ LOG_FILE = "./prompts_log.jsonl" user_config = load_config() output_folder = user_config["comfyui"]["output_dir"] -def create_prompt_on_openwebui(prompt: str) -> str: +def create_prompt_on_openwebui(prompt: str, topic: str = "random") -> str: """Sends prompt to OpenWebui and returns the generated response.""" + topic_instruction = "" + selected_topic = "" # Unique list of recent prompts recent_prompts = list(set(load_recent_prompts())) - # Decide on whether to include a topic (e.g., 30% chance to include) - topics = [t.strip() for t in user_config["comfyui"]["topics"].split(",") if t.strip()] - topic_instruction = "" - if random.random() < 0.5 and topics: + if topic == "random": + topics = [t.strip() for t in user_config["comfyui"]["topics"].split(",") if t.strip()] selected_topic = random.choice(topics) + elif topic != "": + selected_topic = topic + else: + # Decide on whether to include a topic (e.g., 30% chance to include) + topics = [t.strip() for t in user_config["comfyui"]["topics"].split(",") if t.strip()] + if random.random() < 0.3 and topics: + selected_topic = random.choice(topics) + if selected_topic != "": topic_instruction = f" Incorporate the theme of '{selected_topic}' into the new prompt." user_content = ( diff --git a/templates/create_image.html b/templates/create_image.html index 4023a68..3c01f9c 100644 --- a/templates/create_image.html +++ b/templates/create_image.html @@ -144,6 +144,17 @@ + + + @@ -183,9 +194,11 @@ function randomPrompt() { showSpinner(); const model = document.getElementById('model-select').value; + const topic = document.getElementById('topic-select').value; // this line was missing const formData = new URLSearchParams(); formData.append('model', model); + formData.append('topic', topic); // include topic in request fetch('/create', { method: 'POST',