Centralize formatter target policy
This commit is contained in:
@@ -3,6 +3,11 @@ from __future__ import annotations
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, Callable
|
||||
|
||||
try:
|
||||
from . import formatter_target as target_policy
|
||||
except ImportError: # pragma: no cover - plain-script smoke tests
|
||||
import formatter_target as target_policy
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class KreaFormatRequest:
|
||||
@@ -45,10 +50,11 @@ class KreaFormatDependencies:
|
||||
def format_krea2_prompt_result(request: KreaFormatRequest, deps: KreaFormatDependencies) -> KreaFormatRoute:
|
||||
detail_level = request.detail_level if request.detail_level in ("concise", "balanced", "dense") else "balanced"
|
||||
style_mode = request.style_mode if request.style_mode in ("preserve", "photographic", "minimal") else "preserve"
|
||||
target = request.target if request.target in ("auto", "single", "softcore", "hardcore") else "auto"
|
||||
target = target_policy.normalize_target(request.target)
|
||||
row, method = deps.row_from_inputs(request.source_text, request.metadata_json, request.input_hint)
|
||||
|
||||
if row and row.get("mode") == "Insta/OF":
|
||||
pair_target = target_policy.pair_policy(target)
|
||||
soft_prompt, soft_negative, hard_prompt, hard_negative = deps.insta_pair_to_krea(
|
||||
row,
|
||||
detail_level,
|
||||
@@ -63,8 +69,8 @@ def format_krea2_prompt_result(request: KreaFormatRequest, deps: KreaFormatDepen
|
||||
hard_prompt = f"{hard_prompt.rstrip()} {request.extra_positive.strip()}"
|
||||
soft_prompt = deps.sanitize_prose_text(soft_prompt, triggers=deps.trigger_candidates)
|
||||
hard_prompt = deps.sanitize_prose_text(hard_prompt, triggers=deps.trigger_candidates)
|
||||
selected = hard_prompt if target == "hardcore" else soft_prompt if target == "softcore" else soft_prompt
|
||||
selected_negative = hard_negative if target == "hardcore" else soft_negative
|
||||
selected = hard_prompt if pair_target.selected_side == "hardcore" else soft_prompt
|
||||
selected_negative = hard_negative if pair_target.selected_side == "hardcore" else soft_negative
|
||||
negative = deps.sanitize_negative_text(
|
||||
deps.combine_negative(selected_negative, request.negative_prompt, request.extra_negative)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user