Add builder generation trace metadata
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 seed_config as seed_policy
|
||||
except ImportError: # pragma: no cover - plain-script smoke tests
|
||||
import seed_config as seed_policy
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class PromptBuildRequest:
|
||||
@@ -77,6 +82,54 @@ class PromptBuildDependencies:
|
||||
normalize_prompt_row: Callable[..., dict[str, Any]]
|
||||
|
||||
|
||||
def _generation_trace(
|
||||
*,
|
||||
row: dict[str, Any],
|
||||
request: PromptBuildRequest,
|
||||
row_number: int,
|
||||
start_index: int,
|
||||
seed: int,
|
||||
category: str,
|
||||
subcategory: str,
|
||||
branch: str,
|
||||
parsed_seed_config: dict[str, Any],
|
||||
clothing: str,
|
||||
poses: str,
|
||||
figure: str,
|
||||
expression_enabled: bool,
|
||||
expression_intensity: float,
|
||||
expression_intensity_source: str,
|
||||
exact_custom_subcategory: bool,
|
||||
) -> dict[str, Any]:
|
||||
trace = {
|
||||
"builder": "prompt_builder",
|
||||
"branch": branch,
|
||||
"source": row.get("source", ""),
|
||||
"category_input": request.category,
|
||||
"subcategory_input": request.subcategory,
|
||||
"category": category,
|
||||
"subcategory": row.get("subcategory") or subcategory,
|
||||
"category_slug": row.get("category_slug", ""),
|
||||
"subcategory_slug": row.get("subcategory_slug", ""),
|
||||
"exact_custom_subcategory": bool(exact_custom_subcategory),
|
||||
"row_number": row_number,
|
||||
"start_index": start_index,
|
||||
"seed": seed,
|
||||
"seed_axes": seed_policy.axis_seed_trace(parsed_seed_config, seed, row_number),
|
||||
"content_seed_axis": row.get("content_seed_axis") or ("pose" if row.get("position_family") else "content"),
|
||||
"clothing": clothing,
|
||||
"poses": poses,
|
||||
"figure": figure,
|
||||
"expression_enabled": bool(expression_enabled),
|
||||
"expression_intensity": expression_intensity,
|
||||
"expression_intensity_source": expression_intensity_source,
|
||||
"trigger": row.get("trigger", ""),
|
||||
}
|
||||
if row.get("cast_count_adjustment"):
|
||||
trace["cast_count_adjustment"] = row.get("cast_count_adjustment")
|
||||
return trace
|
||||
|
||||
|
||||
def build_prompt_result(request: PromptBuildRequest, deps: PromptBuildDependencies) -> PromptBuildRoute:
|
||||
deps.apply_pool_extensions()
|
||||
row_number = max(1, int(request.row_number))
|
||||
@@ -204,6 +257,24 @@ def build_prompt_result(request: PromptBuildRequest, deps: PromptBuildDependenci
|
||||
)
|
||||
row.setdefault("expression_intensity", expression_intensity)
|
||||
row.setdefault("expression_intensity_source", expression_intensity_source)
|
||||
row["generation_trace"] = _generation_trace(
|
||||
row=row,
|
||||
request=request,
|
||||
row_number=row_number,
|
||||
start_index=start_index,
|
||||
seed=seed,
|
||||
category=category,
|
||||
subcategory=subcategory,
|
||||
branch=branch,
|
||||
parsed_seed_config=parsed_seed_config,
|
||||
clothing=clothing,
|
||||
poses=poses,
|
||||
figure=figure,
|
||||
expression_enabled=expression_enabled,
|
||||
expression_intensity=expression_intensity,
|
||||
expression_intensity_source=expression_intensity_source,
|
||||
exact_custom_subcategory=exact_custom_subcategory,
|
||||
)
|
||||
return PromptBuildRoute(
|
||||
row=row,
|
||||
category=category,
|
||||
|
||||
Reference in New Issue
Block a user