azkavyro's picture
Added all files including vyro_workflows
6fecfbe
import os
from . import VyroParams
from dynamicprompts.generators import RandomPromptGenerator
from dynamicprompts.wildcards import WildcardManager
wildcard_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../wildcards')
wm = WildcardManager(wildcard_path)
def calc_prompt(params:VyroParams, prompt_tree:dict) -> (str, str):
"""
Calculates the prompt string from the given VyroParams object.
Updates the params with final_positive_prompt and final_negative_prompt.
Returns:
(str, str): The prompt strings for the positive prompt, negative prompt.
"""
if prompt_tree is None:
raise ValueError("Prompt tree is None")
if params.style is None or params.style == "":
raise ValueError("Style is None")
if params.style not in prompt_tree.keys():
raise ValueError("Style not in prompt tree")
style = prompt_tree[params.style]
rpg = RandomPromptGenerator(wildcard_manager=wm,seed=params.seed)
if not params.is_raw:
final_positive_prompt = rpg.generate(style['prompt'].replace('{prompt}', params.user_prompt))
final_negative_prompt = style['negative_prompt']
if params.user_neg_prompt != "":
final_negative_prompt = f'{params.user_neg_prompt}, {final_negative_prompt}'
final_negative_prompt = rpg.generate(final_negative_prompt)
else:
final_positive_prompt = rpg.generate(params.user_prompt)
final_negative_prompt = rpg.generate(params.user_neg_prompt if params.user_neg_prompt != "" else ' ')
if isinstance(final_positive_prompt, list):
final_positive_prompt = final_positive_prompt[0]
if isinstance(final_negative_prompt, list):
final_negative_prompt = final_negative_prompt[0]
params.final_positive_prompt = final_positive_prompt
params.final_negative_prompt = final_negative_prompt
return (final_positive_prompt, final_negative_prompt)