|
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) |