Clean up Insta/OF softcore prompts
This commit is contained in:
@@ -153,9 +153,10 @@ camera controls are preserved. Negative prompts stay separate.
|
|||||||
|
|
||||||
Important behavior:
|
Important behavior:
|
||||||
|
|
||||||
- Age wording is preserved deliberately. Phrases like `21-year-old adult`,
|
- Concrete age wording is preserved deliberately. Phrases like
|
||||||
`late 20s adult woman`, and `all participants 21+ and visibly adult` are kept
|
`25-year-old adult woman` and `late 60s adult man` are kept because they help
|
||||||
because they help avoid unwanted young-looking outputs.
|
avoid unwanted young-looking outputs, while generic adult boilerplate is
|
||||||
|
omitted from the Krea2 rewrite.
|
||||||
- Trigger words are removed by default because Krea2 prompting generally reads
|
- Trigger words are removed by default because Krea2 prompting generally reads
|
||||||
better as natural language. Enable `preserve_trigger` if you still need a LoRA
|
better as natural language. Enable `preserve_trigger` if you still need a LoRA
|
||||||
trigger in the positive prompt.
|
trigger in the positive prompt.
|
||||||
@@ -200,6 +201,9 @@ It outputs:
|
|||||||
- `shared_descriptor`
|
- `shared_descriptor`
|
||||||
- `metadata_json`
|
- `metadata_json`
|
||||||
|
|
||||||
|
The positive Insta/OF outputs do not embed an `Avoid:` section; use the matching
|
||||||
|
negative prompt outputs when wiring the sampler.
|
||||||
|
|
||||||
`SxCP Insta/OF Options` outputs `options_json`, which can be connected to the
|
`SxCP Insta/OF Options` outputs `options_json`, which can be connected to the
|
||||||
pair node. Defaults are set so the softcore prompt is solo while the hardcore
|
pair node. Defaults are set so the softcore prompt is solo while the hardcore
|
||||||
prompt can include partners. It also defaults the camera to handheld selfie
|
prompt can include partners. It also defaults the camera to handheld selfie
|
||||||
@@ -214,7 +218,9 @@ Options:
|
|||||||
`use_counts`. The pair mode always keeps at least one adult woman as the
|
`use_counts`. The pair mode always keeps at least one adult woman as the
|
||||||
primary creator so the shared descriptor remains valid.
|
primary creator so the shared descriptor remains valid.
|
||||||
- `softcore_level`: `social_tease`, `lingerie_tease`, `implied_nude`, or
|
- `softcore_level`: `social_tease`, `lingerie_tease`, `implied_nude`, or
|
||||||
`explicit_tease`.
|
`explicit_tease`. Insta/OF softcore uses dedicated outfit pools so teaser
|
||||||
|
prompts do not randomly pull hardcore-adjacent harness, nude accessory,
|
||||||
|
microwear, or shirtless partner styling.
|
||||||
- `hardcore_level`: `explicit` or `hardcore`.
|
- `hardcore_level`: `explicit` or `hardcore`.
|
||||||
- `softcore_expression_intensity`: `0.0` is mild/controlled, `0.5` is sensual,
|
- `softcore_expression_intensity`: `0.0` is mild/controlled, `0.5` is sensual,
|
||||||
`1.0` strongly favors more heated softcore faces.
|
`1.0` strongly favors more heated softcore faces.
|
||||||
|
|||||||
+4
-4
@@ -347,7 +347,7 @@ def _insta_pair_to_krea(row: dict[str, Any], detail_level: str, style_mode: str)
|
|||||||
)
|
)
|
||||||
same_soft_cast = options.get("softcore_cast") == "same_as_hardcore"
|
same_soft_cast = options.get("softcore_cast") == "same_as_hardcore"
|
||||||
soft_cast_presence = (
|
soft_cast_presence = (
|
||||||
"The same listed adult cast is present together in this softcore version in a non-explicit teaser pose, with no sex act or genital contact"
|
"The same cast is present together in a non-explicit teaser pose, with no sex act or genital contact"
|
||||||
if same_soft_cast
|
if same_soft_cast
|
||||||
else "The softcore version focuses on Woman A alone"
|
else "The softcore version focuses on Woman A alone"
|
||||||
)
|
)
|
||||||
@@ -361,7 +361,7 @@ def _insta_pair_to_krea(row: dict[str, Any], detail_level: str, style_mode: str)
|
|||||||
partner_pose = ""
|
partner_pose = ""
|
||||||
|
|
||||||
soft_parts = [
|
soft_parts = [
|
||||||
f"A visibly adult creator, {descriptor}",
|
descriptor,
|
||||||
f"Shared cast descriptors: {soft_cast_descriptor_text}" if same_soft_cast and soft_cast_descriptor_text else "",
|
f"Shared cast descriptors: {soft_cast_descriptor_text}" if same_soft_cast and soft_cast_descriptor_text else "",
|
||||||
f"Softcore primary creator descriptor: {soft_cast_descriptor_text}" if not same_soft_cast and soft_cast_descriptor_text else "",
|
f"Softcore primary creator descriptor: {soft_cast_descriptor_text}" if not same_soft_cast and soft_cast_descriptor_text else "",
|
||||||
soft_cast_presence,
|
soft_cast_presence,
|
||||||
@@ -377,9 +377,9 @@ def _insta_pair_to_krea(row: dict[str, Any], detail_level: str, style_mode: str)
|
|||||||
soft_style if detail_level != "concise" else "",
|
soft_style if detail_level != "concise" else "",
|
||||||
]
|
]
|
||||||
hard_parts = [
|
hard_parts = [
|
||||||
f"The same visibly adult creator, {descriptor}, is the visually central woman in a consensual explicit adult {hard_level or 'hardcore'} scene",
|
f"The primary creator remains {descriptor}, visually central in a {hard_level or 'hardcore'} scene",
|
||||||
f"{'Shared' if same_soft_cast else 'Hardcore'} cast descriptors: {cast_descriptor_text}" if cast_descriptor_text else "",
|
f"{'Shared' if same_soft_cast else 'Hardcore'} cast descriptors: {cast_descriptor_text}" if cast_descriptor_text else "",
|
||||||
f"all participants are 21+ and visibly adult; the cast includes {hard_cast_text}" if hard_cast_text else "all participants are 21+ and visibly adult",
|
f"The cast includes {hard_cast_text}" if hard_cast_text else "",
|
||||||
_clean(hard.get("role_graph")),
|
_clean(hard.get("role_graph")),
|
||||||
f"The sexual action is {hard.get('item')}" if hard.get("item") else "",
|
f"The sexual action is {hard.get('item')}" if hard.get("item") else "",
|
||||||
f"set in {hard_scene}" if hard_scene else "",
|
f"set in {hard_scene}" if hard_scene else "",
|
||||||
|
|||||||
+144
-13
@@ -2571,9 +2571,9 @@ def build_prompt_from_configs(
|
|||||||
|
|
||||||
INSTA_OF_SOFT_LEVELS = {
|
INSTA_OF_SOFT_LEVELS = {
|
||||||
"social_tease": "Instagram-style thirst-trap post, suggestive but non-explicit, polished social feed energy",
|
"social_tease": "Instagram-style thirst-trap post, suggestive but non-explicit, polished social feed energy",
|
||||||
"lingerie_tease": "premium OF teaser set, lingerie-focused, sensual and intimate but without explicit sex",
|
"lingerie_tease": "premium OF teaser set, lingerie-focused, sensual and intimate",
|
||||||
"implied_nude": "implied nude creator set, strategically covered body, sensual but no visible sex act",
|
"implied_nude": "implied nude creator set, strategically covered body and intimate teaser framing",
|
||||||
"explicit_tease": "explicit adult tease, nudity can be visible, but no penetration or partnered sex act",
|
"explicit_tease": "stronger adult teaser set with bolder nude-adjacent styling and solo-tease framing",
|
||||||
}
|
}
|
||||||
|
|
||||||
INSTA_OF_HARDCORE_LEVELS = {
|
INSTA_OF_HARDCORE_LEVELS = {
|
||||||
@@ -2593,9 +2593,114 @@ INSTA_OF_NEGATIVE = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
INSTA_OF_SOFT_NEGATIVE = (
|
INSTA_OF_SOFT_NEGATIVE = (
|
||||||
INSTA_OF_NEGATIVE + ", explicit intercourse, penetration, oral sex, cumshot, genital contact, group sex"
|
INSTA_OF_NEGATIVE
|
||||||
|
+ ", explicit intercourse, penetration, oral sex, cumshot, genital contact, group sex, "
|
||||||
|
"shirtless partner, bare-chested partner, partner nudity"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
INSTA_OF_SOFTCORE_SUBCATEGORY_BY_LEVEL = {
|
||||||
|
"social_tease": "Casual clothes / Smart casual",
|
||||||
|
"lingerie_tease": "Provocative erotic clothes / Provocative lingerie",
|
||||||
|
"implied_nude": "Provocative erotic clothes / Provocative lingerie",
|
||||||
|
"explicit_tease": "Provocative erotic clothes / Sheer exposed",
|
||||||
|
}
|
||||||
|
|
||||||
|
INSTA_OF_SOFTCORE_OUTFITS = {
|
||||||
|
"social_tease": [
|
||||||
|
"cropped fitted tee, low-rise jeans, delicate jewelry, and polished feed-post styling",
|
||||||
|
"oversized off-shoulder sweater with fitted shorts and soft lounge socks",
|
||||||
|
"ribbed tank top, mini skirt, hoop earrings, and casual creator styling",
|
||||||
|
"silky camisole tucked into relaxed trousers with a subtle waist chain",
|
||||||
|
"sporty crop top, bike shorts, clean sneakers, and glossy social-feed styling",
|
||||||
|
"button-down shirt tied at the waist over a fitted bralette and denim shorts",
|
||||||
|
"body-hugging knit dress with bare shoulders and simple heels",
|
||||||
|
"relaxed hoodie half-zipped over a crop top with high-cut shorts",
|
||||||
|
],
|
||||||
|
"lingerie_tease": [
|
||||||
|
"black lace lingerie set with opaque cups, high-waisted briefs, garter straps, and sheer robe",
|
||||||
|
"satin bralette and matching high-waisted panties under an oversized shirt",
|
||||||
|
"lace bodysuit with opaque cups, soft stockings, and delicate garter details",
|
||||||
|
"silk slip dress with thin straps, thigh slit, and subtle lace trim",
|
||||||
|
"matching balconette bra and brief set under a loosely draped satin robe",
|
||||||
|
"velvet lingerie set with covered cups, garter belt, sheer stockings, and small gold accents",
|
||||||
|
"mesh robe over a covered lace teddy, styled as a premium non-explicit teaser",
|
||||||
|
"structured corset top with opaque panels, matching briefs, and sheer stockings",
|
||||||
|
],
|
||||||
|
"implied_nude": [
|
||||||
|
"oversized white shirt slipping off one shoulder, body mostly covered, bare legs, and soft sheets",
|
||||||
|
"towel wrap held across the chest and hips, implied nude but fully covered",
|
||||||
|
"satin sheet wrapped around the body with shoulders and legs visible but intimate areas covered",
|
||||||
|
"open robe held closed by hand, implied nude beneath without explicit exposure",
|
||||||
|
"bath towel and damp hair after a shower, covered chest and hips, intimate creator styling",
|
||||||
|
"soft blanket wrapped around the body, bare shoulders visible, sensual but covered",
|
||||||
|
],
|
||||||
|
"explicit_tease": [
|
||||||
|
"sheer robe over matching lingerie with intimate areas obscured by lace pattern and pose",
|
||||||
|
"wet-look bodysuit with opaque panels, high-cut legs, and glossy club-light styling",
|
||||||
|
"transparent mesh dress over covered lingerie, posed as an adult teaser without sex act",
|
||||||
|
"lace teddy with strategic opaque embroidery, garter straps, and sheer stockings",
|
||||||
|
"bare-shoulder robe opened around covered lingerie, explicit adult tease without partnered contact",
|
||||||
|
"strappy lingerie set with covered cups and high-waisted bottoms, styled as a stronger solo teaser",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
INSTA_OF_SOFTCORE_POSES = {
|
||||||
|
"social_tease": [
|
||||||
|
"taking a mirror selfie with one hip angled and relaxed social-feed confidence",
|
||||||
|
"leaning against a doorway with one hand holding the phone and a casual teasing smile",
|
||||||
|
"sitting on the edge of the bed for a polished outfit-check selfie",
|
||||||
|
"standing by the window with shoulders relaxed and body angled toward the phone",
|
||||||
|
"posing in a clean feed-post stance with one hand at the waist",
|
||||||
|
"stretching one arm above the head in a casual morning selfie pose",
|
||||||
|
],
|
||||||
|
"lingerie_tease": [
|
||||||
|
"taking a mirror lingerie selfie with one hip angled and the outfit clearly visible",
|
||||||
|
"kneeling on the bed in a covered lingerie teaser pose with hands kept on fabric",
|
||||||
|
"leaning against the vanity with the robe draped around covered lingerie",
|
||||||
|
"standing in a three-quarter lingerie outfit-check pose with legs softly crossed",
|
||||||
|
"sitting on the bed with stockings and garter details visible, non-explicit and posed",
|
||||||
|
"turning slightly over one shoulder to show the lingerie silhouette",
|
||||||
|
],
|
||||||
|
"implied_nude": [
|
||||||
|
"holding the towel or sheet securely in place while posing for an implied nude selfie",
|
||||||
|
"sitting under soft sheets with shoulders visible and the body strategically covered",
|
||||||
|
"standing by the bathroom mirror with a towel wrapped around the body",
|
||||||
|
"reclining under a satin sheet with intimate areas fully obscured",
|
||||||
|
"holding an open robe closed in a covered implied nude teaser pose",
|
||||||
|
"looking into the phone camera while wrapped in a blanket with bare shoulders visible",
|
||||||
|
],
|
||||||
|
"explicit_tease": [
|
||||||
|
"posing in a stronger adult teaser stance with covered lingerie and no partnered contact",
|
||||||
|
"kneeling on the bed with a sheer robe arranged around covered lingerie",
|
||||||
|
"standing close to the mirror with the outfit framed boldly but non-explicitly",
|
||||||
|
"leaning forward slightly with hands on the robe and intimate areas obscured",
|
||||||
|
"sitting at the vanity in a bolder covered lingerie pose with direct eye contact",
|
||||||
|
"arching subtly in a solo adult tease while the styling keeps explicit anatomy obscured",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
INSTA_OF_SOFTCORE_PARTNER_WOMEN_OUTFITS = [
|
||||||
|
"satin slip dress under an oversized shirt",
|
||||||
|
"soft cardigan over a camisole with relaxed trousers",
|
||||||
|
"fitted crop top with high-waisted jeans",
|
||||||
|
"silky robe over a covered bralette and lounge shorts",
|
||||||
|
"bodycon mini dress with simple heels",
|
||||||
|
"ribbed tank top with joggers and delicate jewelry",
|
||||||
|
"oversized tee with fitted shorts and lounge socks",
|
||||||
|
"button-down shirt with a fitted skirt",
|
||||||
|
]
|
||||||
|
|
||||||
|
INSTA_OF_SOFTCORE_PARTNER_MEN_OUTFITS = [
|
||||||
|
"fitted black tee with dark jeans",
|
||||||
|
"buttoned linen shirt with chinos",
|
||||||
|
"hoodie and joggers",
|
||||||
|
"open overshirt over a fitted tank with relaxed trousers",
|
||||||
|
"gym tee with track pants and a towel over one shoulder",
|
||||||
|
"casual knit shirt with tailored trousers",
|
||||||
|
"dark crewneck sweater with jeans",
|
||||||
|
"short-sleeve button-up shirt with relaxed shorts",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def build_insta_of_options_json(
|
def build_insta_of_options_json(
|
||||||
softcore_cast: str = "solo",
|
softcore_cast: str = "solo",
|
||||||
@@ -2772,6 +2877,25 @@ SOFTCORE_CAST_POSES = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def _insta_of_softcore_category(level: str) -> tuple[str, str]:
|
||||||
|
subcategory = INSTA_OF_SOFTCORE_SUBCATEGORY_BY_LEVEL.get(
|
||||||
|
level,
|
||||||
|
INSTA_OF_SOFTCORE_SUBCATEGORY_BY_LEVEL["lingerie_tease"],
|
||||||
|
)
|
||||||
|
category, _subcategory = subcategory.split(" / ", 1)
|
||||||
|
return category, subcategory
|
||||||
|
|
||||||
|
|
||||||
|
def _insta_of_softcore_outfit(rng: random.Random, level: str) -> str:
|
||||||
|
pool = INSTA_OF_SOFTCORE_OUTFITS.get(level, INSTA_OF_SOFTCORE_OUTFITS["lingerie_tease"])
|
||||||
|
return g.choose(rng, pool)
|
||||||
|
|
||||||
|
|
||||||
|
def _insta_of_softcore_pose(rng: random.Random, level: str) -> str:
|
||||||
|
pool = INSTA_OF_SOFTCORE_POSES.get(level, INSTA_OF_SOFTCORE_POSES["lingerie_tease"])
|
||||||
|
return g.choose(rng, pool)
|
||||||
|
|
||||||
|
|
||||||
def _insta_of_partner_styling(
|
def _insta_of_partner_styling(
|
||||||
seed_config: dict[str, int],
|
seed_config: dict[str, int],
|
||||||
seed: int,
|
seed: int,
|
||||||
@@ -2784,10 +2908,10 @@ def _insta_of_partner_styling(
|
|||||||
outfits: list[str] = []
|
outfits: list[str] = []
|
||||||
for index in range(max(0, women_count - 1)):
|
for index in range(max(0, women_count - 1)):
|
||||||
label = chr(ord("B") + index)
|
label = chr(ord("B") + index)
|
||||||
outfits.append(f"Woman {label} wears {g.choose(content_rng, g.WOMEN_CLOTHES_MINIMAL)}")
|
outfits.append(f"Woman {label} wears {g.choose(content_rng, INSTA_OF_SOFTCORE_PARTNER_WOMEN_OUTFITS)}")
|
||||||
for index in range(max(0, men_count)):
|
for index in range(max(0, men_count)):
|
||||||
label = chr(ord("A") + index)
|
label = chr(ord("A") + index)
|
||||||
outfits.append(f"Man {label} wears {g.choose(content_rng, g.MEN_CLOTHES_MINIMAL)}")
|
outfits.append(f"Man {label} wears {g.choose(content_rng, INSTA_OF_SOFTCORE_PARTNER_MEN_OUTFITS)}")
|
||||||
return {
|
return {
|
||||||
"outfits": outfits,
|
"outfits": outfits,
|
||||||
"pose": g.choose(pose_rng, SOFTCORE_CAST_POSES),
|
"pose": g.choose(pose_rng, SOFTCORE_CAST_POSES),
|
||||||
@@ -2819,10 +2943,13 @@ def build_insta_of_pair(
|
|||||||
hard_women_count, hard_men_count = _insta_of_hardcore_counts(options)
|
hard_women_count, hard_men_count = _insta_of_hardcore_counts(options)
|
||||||
active_trigger = trigger.strip() or g.TRIGGER
|
active_trigger = trigger.strip() or g.TRIGGER
|
||||||
parsed_seed_config = _parse_seed_config(seed_config)
|
parsed_seed_config = _parse_seed_config(seed_config)
|
||||||
|
softcore_level_key = str(options["softcore_level"])
|
||||||
|
soft_category, soft_subcategory = _insta_of_softcore_category(softcore_level_key)
|
||||||
|
soft_content_rng = _axis_rng(parsed_seed_config, "content", seed, row_number + 311)
|
||||||
|
|
||||||
soft_row = build_prompt(
|
soft_row = build_prompt(
|
||||||
category="Provocative erotic clothes",
|
category=soft_category,
|
||||||
subcategory=RANDOM_SUBCATEGORY,
|
subcategory=soft_subcategory,
|
||||||
row_number=row_number,
|
row_number=row_number,
|
||||||
start_index=start_index,
|
start_index=start_index,
|
||||||
seed=seed,
|
seed=seed,
|
||||||
@@ -2845,6 +2972,11 @@ def build_insta_of_pair(
|
|||||||
expression_intensity=options["softcore_expression_intensity"],
|
expression_intensity=options["softcore_expression_intensity"],
|
||||||
character_profile=character_profile or "",
|
character_profile=character_profile or "",
|
||||||
)
|
)
|
||||||
|
soft_row["item"] = _insta_of_softcore_outfit(soft_content_rng, softcore_level_key)
|
||||||
|
soft_row["pose"] = _insta_of_softcore_pose(soft_content_rng, softcore_level_key)
|
||||||
|
soft_row["item_label"] = "Insta/OF softcore outfit"
|
||||||
|
soft_row["custom_item"] = "insta_of_softcore_outfit"
|
||||||
|
soft_row["softcore_outfit_policy"] = "insta_of_safe_softcore"
|
||||||
hard_row = build_prompt(
|
hard_row = build_prompt(
|
||||||
category="Hardcore sexual poses",
|
category="Hardcore sexual poses",
|
||||||
subcategory=RANDOM_SUBCATEGORY,
|
subcategory=RANDOM_SUBCATEGORY,
|
||||||
@@ -2919,7 +3051,7 @@ def build_insta_of_pair(
|
|||||||
else f"non-explicit teaser setup with the same adult cast as the hardcore version: {_insta_of_cast_phrase(hard_women_count, hard_men_count)}"
|
else f"non-explicit teaser setup with the same adult cast as the hardcore version: {_insta_of_cast_phrase(hard_women_count, hard_men_count)}"
|
||||||
)
|
)
|
||||||
soft_cast_presence = (
|
soft_cast_presence = (
|
||||||
"Show the same listed adult cast together in the softcore version, present in the same location in a non-explicit teaser pose with no sex act or genital contact. "
|
"Keep the same cast together in the softcore version in a non-explicit teaser pose with no sex act or genital contact. "
|
||||||
if options["softcore_cast"] == "same_as_hardcore"
|
if options["softcore_cast"] == "same_as_hardcore"
|
||||||
else "Keep the softcore version focused on Woman A alone. "
|
else "Keep the softcore version focused on Woman A alone. "
|
||||||
)
|
)
|
||||||
@@ -2939,8 +3071,8 @@ def build_insta_of_pair(
|
|||||||
f"Outfit: {soft_row['item']}. Pose: {soft_row['pose']}. Setting: {soft_row['scene_text']}. "
|
f"Outfit: {soft_row['item']}. Pose: {soft_row['pose']}. Setting: {soft_row['scene_text']}. "
|
||||||
f"Facial expression: {soft_row['expression']}. Composition: {soft_row['composition']}. "
|
f"Facial expression: {soft_row['expression']}. Composition: {soft_row['composition']}. "
|
||||||
f"{soft_camera_sentence}"
|
f"{soft_camera_sentence}"
|
||||||
"Keep the softcore version adult-only, consensual, seductive, creator-shot, and non-explicit. "
|
"Keep the softcore version seductive, creator-shot, and non-explicit. "
|
||||||
f"{soft_row['positive_suffix']} Avoid: {INSTA_OF_SOFT_NEGATIVE}."
|
f"{soft_row['positive_suffix']}."
|
||||||
)
|
)
|
||||||
hard_prompt = (
|
hard_prompt = (
|
||||||
f"Insta/OF hardcore mode: {platform_style}. Shared primary creator descriptor: {descriptor}. "
|
f"Insta/OF hardcore mode: {platform_style}. Shared primary creator descriptor: {descriptor}. "
|
||||||
@@ -2950,8 +3082,7 @@ def build_insta_of_pair(
|
|||||||
f"Role graph: {hard_row['role_graph']} Sexual scene: {hard_row['item']}. "
|
f"Role graph: {hard_row['role_graph']} Sexual scene: {hard_row['item']}. "
|
||||||
f"Setting: {hard_scene}. Facial expressions: {hard_row['expression']}. Composition: {hard_composition}. "
|
f"Setting: {hard_scene}. Facial expressions: {hard_row['expression']}. Composition: {hard_composition}. "
|
||||||
f"{hard_camera_sentence}"
|
f"{hard_camera_sentence}"
|
||||||
"All participants are consenting adults 21+. "
|
f"{hard_row['positive_suffix']}."
|
||||||
f"{hard_row['positive_suffix']} Avoid: {INSTA_OF_NEGATIVE}."
|
|
||||||
)
|
)
|
||||||
if extra_positive.strip():
|
if extra_positive.strip():
|
||||||
soft_prompt = f"{soft_prompt.rstrip()} {extra_positive.strip()}"
|
soft_prompt = f"{soft_prompt.rstrip()} {extra_positive.strip()}"
|
||||||
|
|||||||
Reference in New Issue
Block a user