Postero
PosterO prompt-config package.
PosterOAgent ¶
Bases: BaseLayoutAgent[RawPosterOResponse]
High-level PosterO runner for prompt construction, parsing, and retries.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
ModelLike
|
Optional Pydantic AI model object or provider model id. |
None
|
config
|
PosterOConfig
|
Runtime prompt and parser configuration. |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If config options are unsupported. |
Examples:
>>> from pydantic_ai.models.test import TestModel
>>> from postero.config import PosterOConfig
>>> agent = PosterOAgent(model=TestModel(custom_output_args={"text": "<svg></svg>"}), config=PosterOConfig())
>>> isinstance(agent, PosterOAgent)
True
Source code in models/postero/src/postero/agent.py
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 | |
__init__ ¶
__init__(
*, model: ModelLike = None, config: PosterOConfig
) -> None
Create a PosterO runner from explicit config.
Source code in models/postero/src/postero/agent.py
60 61 62 63 64 65 66 67 68 | |
build_prompt ¶
build_prompt(
query_record: PosterORecord,
*,
candidate_records: Sequence[PosterORecord],
labels: Sequence[int | str] | None = None,
seed: int | None = None,
generator: Generator | None = None,
) -> tuple[str, list[PosterORecord]]
Select exemplars and build the provider prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query_record
|
PosterORecord
|
Query poster record. |
required |
candidate_records
|
Sequence[PosterORecord]
|
Candidate exemplar records. |
required |
labels
|
Sequence[int | str] | None
|
Optional labels to allocate. |
None
|
seed
|
int | None
|
Optional deterministic seed for random selection. |
None
|
generator
|
Generator | None
|
Optional torch generator. Takes precedence over |
None
|
Returns:
| Type | Description |
|---|---|
tuple[str, list[PosterORecord]]
|
Prompt text and selected exemplars. |
Source code in models/postero/src/postero/agent.py
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | |
run_sync ¶
run_sync(
query_record: PosterORecord,
*,
candidate_records: Sequence[PosterORecord],
labels: Sequence[int | str] | None = None,
model: ModelLike = None,
seed: int | None = None,
generator: Generator | None = None,
model_settings: ModelSettings | None = None,
) -> PosterOOutput
Run the configured provider until enough valid SVGs are parsed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query_record
|
PosterORecord
|
Query poster record. |
required |
candidate_records
|
Sequence[PosterORecord]
|
Candidate exemplar records. |
required |
labels
|
Sequence[int | str] | None
|
Optional labels to allocate. |
None
|
model
|
ModelLike
|
Optional per-call provider override. |
None
|
seed
|
int | None
|
Optional deterministic seed. |
None
|
generator
|
Generator | None
|
Optional torch generator. Takes precedence over |
None
|
model_settings
|
ModelSettings | None
|
Optional provider sampling settings. |
None
|
Returns:
| Type | Description |
|---|---|
PosterOOutput
|
Parsed PosterO output. |
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If no valid response is parsed within |
Source code in models/postero/src/postero/agent.py
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | |
__call__ ¶
__call__(
*,
query_record: PosterORecord,
candidate_records: Sequence[PosterORecord],
batch_size: int = 1,
seed: int | None = None,
generator: Generator | None = None,
condition_type: str
| ConditionType = ConditionType.content_image,
labels: Int[Tensor, "batch elements"]
| list[int | str]
| None = None,
bbox: Float[Tensor, "batch elements 4"]
| Sequence[ArrayLikeInput]
| None = None,
mask: Bool[Tensor, "batch elements"]
| Sequence[ArrayLikeInput]
| None = None,
num_elements: int
| list[int]
| Int[Tensor, "batch"]
| None = None,
box_format: str | BoxFormat = BoxFormat.xywh,
normalized: bool = True,
canvas_size: tuple[int, int] | None = None,
num_inference_steps: int | None = None,
output_type: str | OutputType = OutputType.dataclass,
return_intermediates: bool = False,
model: ModelLike = None,
model_settings: ModelSettings | None = None,
) -> LayoutGenerationOutput | LayoutOutputDict
Generate a poster layout through the shared public surface.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query_record
|
PosterORecord
|
Query poster record with content-aware regions. |
required |
candidate_records
|
Sequence[PosterORecord]
|
Candidate records for retrieval. |
required |
batch_size
|
int
|
Shared API batch size. PosterO supports |
1
|
seed
|
int | None
|
Optional deterministic seed. |
None
|
generator
|
Generator | None
|
Optional torch generator. Takes precedence over |
None
|
condition_type
|
str | ConditionType
|
|
content_image
|
labels
|
Int[Tensor, 'batch elements'] | list[int | str] | None
|
Optional labels to allocate. |
None
|
bbox
|
Float[Tensor, 'batch elements 4'] | Sequence[ArrayLikeInput] | None
|
Accepted for shared interface compatibility. |
None
|
mask
|
Bool[Tensor, 'batch elements'] | Sequence[ArrayLikeInput] | None
|
Accepted for shared interface compatibility. |
None
|
num_elements
|
int | list[int] | Int[Tensor, 'batch'] | None
|
Accepted for shared interface compatibility. |
None
|
box_format
|
str | BoxFormat
|
Public input box format name. |
xywh
|
normalized
|
bool
|
Accepted for shared interface compatibility. |
True
|
canvas_size
|
tuple[int, int] | None
|
Optional canvas override; must match config. |
None
|
num_inference_steps
|
int | None
|
Accepted for shared interface compatibility. |
None
|
output_type
|
str | OutputType
|
|
dataclass
|
return_intermediates
|
bool
|
Whether to include prompt/parser metadata. |
False
|
model
|
ModelLike
|
Optional per-call provider override. |
None
|
model_settings
|
ModelSettings | None
|
Optional provider settings override. |
None
|
Returns:
| Type | Description |
|---|---|
LayoutGenerationOutput | LayoutOutputDict
|
Shared layout output dataclass or dictionary. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If shared arguments request unsupported behavior. |
RuntimeError
|
If provider responses cannot be parsed. |
Source code in models/postero/src/postero/agent.py
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | |
save_pretrained ¶
save_pretrained(
save_directory: str | PathLike[str],
) -> None
Persist prompt and parser configuration without provider state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
save_directory
|
str | PathLike[str]
|
Target directory for |
required |
Returns:
| Type | Description |
|---|---|
None
|
None. |
Source code in models/postero/src/postero/agent.py
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 | |
from_pretrained
classmethod
¶
from_pretrained(
pretrained_model_name_or_path: str | PathLike[str],
*,
model: ModelLike = None,
) -> "PosterOAgent"
Load saved PosterO prompt and parser configuration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
pretrained_model_name_or_path
|
str | PathLike[str]
|
Directory containing
|
required |
model
|
ModelLike
|
Replacement provider model. |
None
|
Returns:
| Type | Description |
|---|---|
'PosterOAgent'
|
Configured PosterO agent. |
Source code in models/postero/src/postero/agent.py
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 | |
resolve_model ¶
resolve_model(model: ModelLike = None) -> ModelLike
Resolve explicit model, environment model, or Pydantic default.
Source code in models/postero/src/postero/agent.py
299 300 301 302 303 | |
PosterOConfig ¶
Bases: BaseModel
Runtime prompt, retrieval, parser, and provider settings.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dataset_name
|
Poster dataset name. Public aliases are normalized through
|
required | |
structure
|
Prompt serialization structure. |
required | |
injection
|
Available-area injection strategy. |
required | |
pool_strategy
|
Candidate pool strategy. |
required | |
rank_strategy
|
Exemplar ranking strategy. |
required | |
sample_size
|
Number of candidate records considered before ranking. |
required | |
num_return
|
Maximum provider attempts for one public call. |
required | |
n_valid_layouts
|
Number of valid parsed layouts requested. |
required | |
canvas_size
|
Canvas size as |
required | |
temperature
|
Provider sampling temperature. |
required | |
top_p
|
Provider nucleus sampling value. |
required | |
max_tokens
|
Maximum response tokens requested from a provider. |
required | |
frequency_penalty
|
Provider frequency penalty. |
required | |
presence_penalty
|
Provider presence penalty. |
required | |
stop_token
|
Provider stop token. |
required | |
label_rback
|
Whether parser labels are mapped back to configured ids. |
required | |
prompt_target
|
Structured response target. |
required | |
id2label
|
Public label ids. Defaults preserve PosterO issue mappings. |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If a closed mode or dataset name is unsupported. |
Examples:
>>> config = PosterOConfig(dataset_name="pku")
>>> config.id2label[1]
'text'
Source code in models/postero/src/postero/config.py
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | |
normalize_dataset
classmethod
¶
normalize_dataset(value: DatasetName | str) -> DatasetName
Normalize poster dataset aliases at the config boundary.
Source code in models/postero/src/postero/config.py
83 84 85 86 87 | |
normalize_structure
classmethod
¶
normalize_structure(
value: PosterOStructure | str,
) -> PosterOStructure
Normalize prompt structure.
Source code in models/postero/src/postero/config.py
89 90 91 92 93 | |
normalize_injection
classmethod
¶
normalize_injection(
value: PosterOInjection | str,
) -> PosterOInjection
Normalize available-area injection mode.
Source code in models/postero/src/postero/config.py
95 96 97 98 99 | |
normalize_pool_strategy
classmethod
¶
normalize_pool_strategy(
value: PosterOPoolStrategy | str,
) -> PosterOPoolStrategy
Normalize pool strategy.
Source code in models/postero/src/postero/config.py
101 102 103 104 105 106 107 | |
normalize_rank_strategy
classmethod
¶
normalize_rank_strategy(
value: PosterORankStrategy | str,
) -> PosterORankStrategy
Normalize rank strategy.
Source code in models/postero/src/postero/config.py
109 110 111 112 113 114 115 | |
normalize_prompt_target
classmethod
¶
normalize_prompt_target(
value: PromptTarget | str,
) -> PromptTarget
Normalize prompt target.
Source code in models/postero/src/postero/config.py
117 118 119 120 121 | |
fill_id2label ¶
fill_id2label() -> 'PosterOConfig'
Fill dataset-specific label ids when no explicit map is stored.
Source code in models/postero/src/postero/config.py
123 124 125 126 127 128 129 130 131 132 133 134 | |
AvailableRegion ¶
Bases: BaseModel
One available poster area in pixel ltrb coordinates.
Source code in models/postero/src/postero/records.py
14 15 16 17 18 19 | |
PosterLayoutElement ¶
Bases: BaseModel
One poster layout element in pixel ltrb coordinates.
Source code in models/postero/src/postero/records.py
22 23 24 25 26 27 28 29 30 | |
PosterORecord ¶
Bases: BaseModel
One poster prompt or exemplar record.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id
|
Stable record id used in parity reports. |
required | |
dataset
|
Dataset key. |
required | |
poster_path
|
Optional source image path. |
required | |
canvas_size
|
Canvas size as |
required | |
available_regions
|
Content-aware available regions. |
required | |
elements
|
Ground-truth or generated layout elements. |
required | |
features
|
Optional precomputed retrieval feature vector. |
required | |
metrics
|
Optional quality metrics used by pool filtering. |
required | |
metadata
|
Extra non-runtime metadata. |
required |
Source code in models/postero/src/postero/records.py
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | |
agent ¶
Provider-agnostic Pydantic AI wrapper for PosterO.
PosterOAgent ¶
Bases: BaseLayoutAgent[RawPosterOResponse]
High-level PosterO runner for prompt construction, parsing, and retries.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
ModelLike
|
Optional Pydantic AI model object or provider model id. |
None
|
config
|
PosterOConfig
|
Runtime prompt and parser configuration. |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If config options are unsupported. |
Examples:
>>> from pydantic_ai.models.test import TestModel
>>> from postero.config import PosterOConfig
>>> agent = PosterOAgent(model=TestModel(custom_output_args={"text": "<svg></svg>"}), config=PosterOConfig())
>>> isinstance(agent, PosterOAgent)
True
Source code in models/postero/src/postero/agent.py
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 | |
__init__ ¶
__init__(
*, model: ModelLike = None, config: PosterOConfig
) -> None
Create a PosterO runner from explicit config.
Source code in models/postero/src/postero/agent.py
60 61 62 63 64 65 66 67 68 | |
build_prompt ¶
build_prompt(
query_record: PosterORecord,
*,
candidate_records: Sequence[PosterORecord],
labels: Sequence[int | str] | None = None,
seed: int | None = None,
generator: Generator | None = None,
) -> tuple[str, list[PosterORecord]]
Select exemplars and build the provider prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query_record
|
PosterORecord
|
Query poster record. |
required |
candidate_records
|
Sequence[PosterORecord]
|
Candidate exemplar records. |
required |
labels
|
Sequence[int | str] | None
|
Optional labels to allocate. |
None
|
seed
|
int | None
|
Optional deterministic seed for random selection. |
None
|
generator
|
Generator | None
|
Optional torch generator. Takes precedence over |
None
|
Returns:
| Type | Description |
|---|---|
tuple[str, list[PosterORecord]]
|
Prompt text and selected exemplars. |
Source code in models/postero/src/postero/agent.py
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | |
run_sync ¶
run_sync(
query_record: PosterORecord,
*,
candidate_records: Sequence[PosterORecord],
labels: Sequence[int | str] | None = None,
model: ModelLike = None,
seed: int | None = None,
generator: Generator | None = None,
model_settings: ModelSettings | None = None,
) -> PosterOOutput
Run the configured provider until enough valid SVGs are parsed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query_record
|
PosterORecord
|
Query poster record. |
required |
candidate_records
|
Sequence[PosterORecord]
|
Candidate exemplar records. |
required |
labels
|
Sequence[int | str] | None
|
Optional labels to allocate. |
None
|
model
|
ModelLike
|
Optional per-call provider override. |
None
|
seed
|
int | None
|
Optional deterministic seed. |
None
|
generator
|
Generator | None
|
Optional torch generator. Takes precedence over |
None
|
model_settings
|
ModelSettings | None
|
Optional provider sampling settings. |
None
|
Returns:
| Type | Description |
|---|---|
PosterOOutput
|
Parsed PosterO output. |
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If no valid response is parsed within |
Source code in models/postero/src/postero/agent.py
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | |
__call__ ¶
__call__(
*,
query_record: PosterORecord,
candidate_records: Sequence[PosterORecord],
batch_size: int = 1,
seed: int | None = None,
generator: Generator | None = None,
condition_type: str
| ConditionType = ConditionType.content_image,
labels: Int[Tensor, "batch elements"]
| list[int | str]
| None = None,
bbox: Float[Tensor, "batch elements 4"]
| Sequence[ArrayLikeInput]
| None = None,
mask: Bool[Tensor, "batch elements"]
| Sequence[ArrayLikeInput]
| None = None,
num_elements: int
| list[int]
| Int[Tensor, "batch"]
| None = None,
box_format: str | BoxFormat = BoxFormat.xywh,
normalized: bool = True,
canvas_size: tuple[int, int] | None = None,
num_inference_steps: int | None = None,
output_type: str | OutputType = OutputType.dataclass,
return_intermediates: bool = False,
model: ModelLike = None,
model_settings: ModelSettings | None = None,
) -> LayoutGenerationOutput | LayoutOutputDict
Generate a poster layout through the shared public surface.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query_record
|
PosterORecord
|
Query poster record with content-aware regions. |
required |
candidate_records
|
Sequence[PosterORecord]
|
Candidate records for retrieval. |
required |
batch_size
|
int
|
Shared API batch size. PosterO supports |
1
|
seed
|
int | None
|
Optional deterministic seed. |
None
|
generator
|
Generator | None
|
Optional torch generator. Takes precedence over |
None
|
condition_type
|
str | ConditionType
|
|
content_image
|
labels
|
Int[Tensor, 'batch elements'] | list[int | str] | None
|
Optional labels to allocate. |
None
|
bbox
|
Float[Tensor, 'batch elements 4'] | Sequence[ArrayLikeInput] | None
|
Accepted for shared interface compatibility. |
None
|
mask
|
Bool[Tensor, 'batch elements'] | Sequence[ArrayLikeInput] | None
|
Accepted for shared interface compatibility. |
None
|
num_elements
|
int | list[int] | Int[Tensor, 'batch'] | None
|
Accepted for shared interface compatibility. |
None
|
box_format
|
str | BoxFormat
|
Public input box format name. |
xywh
|
normalized
|
bool
|
Accepted for shared interface compatibility. |
True
|
canvas_size
|
tuple[int, int] | None
|
Optional canvas override; must match config. |
None
|
num_inference_steps
|
int | None
|
Accepted for shared interface compatibility. |
None
|
output_type
|
str | OutputType
|
|
dataclass
|
return_intermediates
|
bool
|
Whether to include prompt/parser metadata. |
False
|
model
|
ModelLike
|
Optional per-call provider override. |
None
|
model_settings
|
ModelSettings | None
|
Optional provider settings override. |
None
|
Returns:
| Type | Description |
|---|---|
LayoutGenerationOutput | LayoutOutputDict
|
Shared layout output dataclass or dictionary. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If shared arguments request unsupported behavior. |
RuntimeError
|
If provider responses cannot be parsed. |
Source code in models/postero/src/postero/agent.py
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | |
save_pretrained ¶
save_pretrained(
save_directory: str | PathLike[str],
) -> None
Persist prompt and parser configuration without provider state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
save_directory
|
str | PathLike[str]
|
Target directory for |
required |
Returns:
| Type | Description |
|---|---|
None
|
None. |
Source code in models/postero/src/postero/agent.py
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 | |
from_pretrained
classmethod
¶
from_pretrained(
pretrained_model_name_or_path: str | PathLike[str],
*,
model: ModelLike = None,
) -> "PosterOAgent"
Load saved PosterO prompt and parser configuration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
pretrained_model_name_or_path
|
str | PathLike[str]
|
Directory containing
|
required |
model
|
ModelLike
|
Replacement provider model. |
None
|
Returns:
| Type | Description |
|---|---|
'PosterOAgent'
|
Configured PosterO agent. |
Source code in models/postero/src/postero/agent.py
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 | |
resolve_model ¶
resolve_model(model: ModelLike = None) -> ModelLike
Resolve explicit model, environment model, or Pydantic default.
Source code in models/postero/src/postero/agent.py
299 300 301 302 303 | |
config ¶
Configuration for PosterO prompt construction and parsing.
PosterOConfig ¶
Bases: BaseModel
Runtime prompt, retrieval, parser, and provider settings.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dataset_name
|
Poster dataset name. Public aliases are normalized through
|
required | |
structure
|
Prompt serialization structure. |
required | |
injection
|
Available-area injection strategy. |
required | |
pool_strategy
|
Candidate pool strategy. |
required | |
rank_strategy
|
Exemplar ranking strategy. |
required | |
sample_size
|
Number of candidate records considered before ranking. |
required | |
num_return
|
Maximum provider attempts for one public call. |
required | |
n_valid_layouts
|
Number of valid parsed layouts requested. |
required | |
canvas_size
|
Canvas size as |
required | |
temperature
|
Provider sampling temperature. |
required | |
top_p
|
Provider nucleus sampling value. |
required | |
max_tokens
|
Maximum response tokens requested from a provider. |
required | |
frequency_penalty
|
Provider frequency penalty. |
required | |
presence_penalty
|
Provider presence penalty. |
required | |
stop_token
|
Provider stop token. |
required | |
label_rback
|
Whether parser labels are mapped back to configured ids. |
required | |
prompt_target
|
Structured response target. |
required | |
id2label
|
Public label ids. Defaults preserve PosterO issue mappings. |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If a closed mode or dataset name is unsupported. |
Examples:
>>> config = PosterOConfig(dataset_name="pku")
>>> config.id2label[1]
'text'
Source code in models/postero/src/postero/config.py
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | |
normalize_dataset
classmethod
¶
normalize_dataset(value: DatasetName | str) -> DatasetName
Normalize poster dataset aliases at the config boundary.
Source code in models/postero/src/postero/config.py
83 84 85 86 87 | |
normalize_structure
classmethod
¶
normalize_structure(
value: PosterOStructure | str,
) -> PosterOStructure
Normalize prompt structure.
Source code in models/postero/src/postero/config.py
89 90 91 92 93 | |
normalize_injection
classmethod
¶
normalize_injection(
value: PosterOInjection | str,
) -> PosterOInjection
Normalize available-area injection mode.
Source code in models/postero/src/postero/config.py
95 96 97 98 99 | |
normalize_pool_strategy
classmethod
¶
normalize_pool_strategy(
value: PosterOPoolStrategy | str,
) -> PosterOPoolStrategy
Normalize pool strategy.
Source code in models/postero/src/postero/config.py
101 102 103 104 105 106 107 | |
normalize_rank_strategy
classmethod
¶
normalize_rank_strategy(
value: PosterORankStrategy | str,
) -> PosterORankStrategy
Normalize rank strategy.
Source code in models/postero/src/postero/config.py
109 110 111 112 113 114 115 | |
normalize_prompt_target
classmethod
¶
normalize_prompt_target(
value: PromptTarget | str,
) -> PromptTarget
Normalize prompt target.
Source code in models/postero/src/postero/config.py
117 118 119 120 121 | |
fill_id2label ¶
fill_id2label() -> 'PosterOConfig'
Fill dataset-specific label ids when no explicit map is stored.
Source code in models/postero/src/postero/config.py
123 124 125 126 127 128 129 130 131 132 133 134 | |
enums ¶
Closed string modes used by the PosterO package.
PosterOStructure ¶
Bases: StrEnum
Prompt structure options.
Source code in models/postero/src/postero/enums.py
11 12 13 14 15 | |
PosterOInjection ¶
Bases: StrEnum
Available-area injection options.
Source code in models/postero/src/postero/enums.py
18 19 20 21 22 23 24 | |
PosterOPoolStrategy ¶
Bases: StrEnum
Candidate-pool construction strategies.
Source code in models/postero/src/postero/enums.py
27 28 29 30 31 32 33 | |
PosterORankStrategy ¶
Bases: StrEnum
Exemplar ranking strategies.
Source code in models/postero/src/postero/enums.py
36 37 38 39 40 41 42 | |
OutputType ¶
Bases: StrEnum
Public return container names.
Source code in models/postero/src/postero/enums.py
45 46 47 48 49 | |
PromptTarget ¶
Bases: StrEnum
Structured response target requested from the language model.
Source code in models/postero/src/postero/enums.py
52 53 54 55 56 | |
coerce_enum ¶
coerce_enum(
value: str | EnumT, enum_type: type[EnumT]
) -> EnumT
Normalize a public string-or-enum value.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
value
|
str | EnumT
|
String or enum value. |
required |
enum_type
|
type[EnumT]
|
Expected enum type. |
required |
Returns:
| Type | Description |
|---|---|
EnumT
|
Normalized enum value. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the string does not belong to |
Examples:
>>> coerce_enum("plain", PosterOStructure)
<PosterOStructure.plain: 'plain'>
Source code in models/postero/src/postero/enums.py
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | |
exemplars ¶
Exemplar selection for PosterO prompts.
select_exemplars ¶
select_exemplars(
query: PosterORecord,
candidates: Sequence[PosterORecord],
*,
config: PosterOConfig,
seed: int | None = None,
generator: Generator | None = None,
) -> list[PosterORecord]
Select prompt exemplars from in-memory records.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query
|
PosterORecord
|
Query record. |
required |
candidates
|
Sequence[PosterORecord]
|
Candidate exemplar records. |
required |
config
|
PosterOConfig
|
Prompt/retrieval configuration. |
required |
seed
|
int | None
|
Optional deterministic seed. |
None
|
generator
|
Generator | None
|
Optional torch generator. Takes precedence over |
None
|
Returns:
| Type | Description |
|---|---|
list[PosterORecord]
|
Selected exemplar records in prompt order. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If no candidates survive filtering. |
Source code in models/postero/src/postero/exemplars.py
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | |
parser ¶
SVG response parsing for PosterO.
ParsedPosterElement ¶
Bases: BaseModel
One parsed PosterO SVG element.
Source code in models/postero/src/postero/parser.py
17 18 19 20 21 22 23 | |
ParseDiagnostics ¶
Bases: BaseModel
Parser diagnostics recorded in intermediates.
Source code in models/postero/src/postero/parser.py
26 27 28 29 30 31 32 33 | |
extract_svg ¶
extract_svg(text: str) -> str
Extract the first SVG block from provider text.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
text
|
str
|
Raw provider response. |
required |
Returns:
| Type | Description |
|---|---|
str
|
SVG XML string. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If no SVG block is present. |
Source code in models/postero/src/postero/parser.py
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | |
parse_svg_response ¶
parse_svg_response(
text: str, *, config: PosterOConfig
) -> tuple[
list[ParsedPosterElement], list[ParseDiagnostics]
]
Parse provider SVG into PosterO elements.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
text
|
str
|
Raw provider response. |
required |
config
|
PosterOConfig
|
Parser configuration. |
required |
Returns:
| Type | Description |
|---|---|
tuple[list[ParsedPosterElement], list[ParseDiagnostics]]
|
Parsed elements and diagnostics. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If SVG is missing, invalid, or contains unknown labels. |
Examples:
>>> from postero.config import PosterOConfig
>>> parse_svg_response('<svg><rect data-label="text_1" x="0" y="0" width="10" height="20"/></svg>', config=PosterOConfig())[0][0].label
1
Source code in models/postero/src/postero/parser.py
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | |
normalize_generated_label ¶
normalize_generated_label(
label: str, *, config: PosterOConfig
) -> str
Normalize generated element labels before id lookup.
Source code in models/postero/src/postero/parser.py
120 121 122 123 124 125 | |
prompts ¶
Prompt construction for PosterO.
build_prompt ¶
build_prompt(
query: PosterORecord,
exemplars: Sequence[PosterORecord],
*,
config: PosterOConfig,
labels: Sequence[int | str] | None = None,
) -> str
Build a deterministic PosterO prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query
|
PosterORecord
|
Query poster record. |
required |
exemplars
|
Sequence[PosterORecord]
|
Selected in-context records. |
required |
config
|
PosterOConfig
|
Prompt configuration. |
required |
labels
|
Sequence[int | str] | None
|
Optional labels to allocate. Defaults to labels from |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Full prompt bytes as a Python string. |
Source code in models/postero/src/postero/prompts.py
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | |
records ¶
Typed in-memory records consumed by PosterO prompts.
AvailableRegion ¶
Bases: BaseModel
One available poster area in pixel ltrb coordinates.
Source code in models/postero/src/postero/records.py
14 15 16 17 18 19 | |
PosterLayoutElement ¶
Bases: BaseModel
One poster layout element in pixel ltrb coordinates.
Source code in models/postero/src/postero/records.py
22 23 24 25 26 27 28 29 30 | |
PosterORecord ¶
Bases: BaseModel
One poster prompt or exemplar record.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id
|
Stable record id used in parity reports. |
required | |
dataset
|
Dataset key. |
required | |
poster_path
|
Optional source image path. |
required | |
canvas_size
|
Canvas size as |
required | |
available_regions
|
Content-aware available regions. |
required | |
elements
|
Ground-truth or generated layout elements. |
required | |
features
|
Optional precomputed retrieval feature vector. |
required | |
metrics
|
Optional quality metrics used by pool filtering. |
required | |
metadata
|
Extra non-runtime metadata. |
required |
Source code in models/postero/src/postero/records.py
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | |
record_from_mapping ¶
record_from_mapping(
row: Mapping[str, JSONValue],
*,
id2label: Mapping[int, str],
) -> PosterORecord
Build a PosterORecord from a lightweight mapping.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
row
|
Mapping[str, JSONValue]
|
Mapping with optional |
required |
id2label
|
Mapping[int, str]
|
Public id-to-label mapping used for integer validation. |
required |
Returns:
| Type | Description |
|---|---|
PosterORecord
|
Normalized |
Raises:
| Type | Description |
|---|---|
ValueError
|
If an integer label is not present in |
Source code in models/postero/src/postero/records.py
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | |
record_to_mapping ¶
record_to_mapping(
record: PosterORecord,
) -> dict[str, JSONValue]
Serialize a record to a JSON-compatible mapping.
Source code in models/postero/src/postero/records.py
100 101 102 | |
labels_for_record ¶
labels_for_record(record: PosterORecord) -> list[int | str]
Return element labels in record order.
Source code in models/postero/src/postero/records.py
105 106 107 | |
schemas ¶
Pydantic schemas for PosterO structured responses.
RawPosterOResponse ¶
Bases: BaseModel
Structured model response before SVG parsing.
Source code in models/postero/src/postero/schemas.py
19 20 21 22 | |
PosterOOutput ¶
Bases: BaseModel
Parsed PosterO response with prompt metadata.
Source code in models/postero/src/postero/schemas.py
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | |
to_layout_generation_output ¶
to_layout_generation_output(
*, return_intermediates: bool = True
) -> LayoutGenerationOutput
Convert parsed PosterO output to the shared layout schema.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
return_intermediates
|
bool
|
Whether to attach prompt/parser metadata. |
True
|
Returns:
| Type | Description |
|---|---|
LayoutGenerationOutput
|
|
Source code in models/postero/src/postero/schemas.py
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | |
merged_output ¶
merged_output(
outputs: Sequence[PosterOOutput],
*,
config: PosterOConfig,
) -> PosterOOutput
Merge parsed candidates into one public output.
Source code in models/postero/src/postero/schemas.py
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | |
serialization ¶
SVG and prompt-fragment serialization for PosterO.
TreeNode
dataclass
¶
Simple containment tree node used by hierarchical prompts.
Source code in models/postero/src/postero/serialization.py
20 21 22 23 24 25 26 | |
label_name ¶
label_name(
label: int | str, id2label: Mapping[int, str]
) -> str
Return a display label for an integer or string label.
Source code in models/postero/src/postero/serialization.py
29 30 31 32 33 | |
build_hierarchy ¶
build_hierarchy(
elements: Sequence[PosterLayoutElement],
*,
containment_noise: float = 20.0,
) -> list[TreeNode]
Build a shallow containment hierarchy from element boxes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
elements
|
Sequence[PosterLayoutElement]
|
Layout elements. |
required |
containment_noise
|
float
|
Pixel tolerance used for containment checks. |
20.0
|
Returns:
| Type | Description |
|---|---|
list[TreeNode]
|
Root nodes with child nodes attached to the smallest containing parent. |
Source code in models/postero/src/postero/serialization.py
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | |
serialize_plain_svg ¶
serialize_plain_svg(
record: PosterORecord, config: PosterOConfig
) -> tuple[str, str]
Serialize a record as a flat SVG example.
Returns:
| Type | Description |
|---|---|
str
|
Pair of |
str
|
text and svg is the deterministic XML fragment. |
Source code in models/postero/src/postero/serialization.py
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | |
serialize_hierarchical_svg ¶
serialize_hierarchical_svg(
record: PosterORecord, config: PosterOConfig
) -> tuple[str, str]
Serialize a record as a hierarchy-aware SVG example.
Source code in models/postero/src/postero/serialization.py
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | |
build_svg_head ¶
build_svg_head(canvas_size: tuple[int, int]) -> str
Return the SVG opening tag for canvas_size.
Source code in models/postero/src/postero/serialization.py
101 102 103 104 | |
build_svg_description ¶
build_svg_description(
svg: str, record: PosterORecord, config: PosterOConfig
) -> str
Return the reference prompt-facing SVG head for one exemplar.
Source code in models/postero/src/postero/serialization.py
107 108 109 110 111 112 113 114 115 116 117 118 119 120 | |
build_available_area_polygons ¶
build_available_area_polygons(
regions: Sequence[AvailableRegion],
*,
config: PosterOConfig | None = None,
) -> str
Serialize available regions in deterministic prompt order.
Source code in models/postero/src/postero/serialization.py
123 124 125 126 127 128 129 | |
build_final_svg_prompt ¶
build_final_svg_prompt(
labels: Sequence[int | str],
record: PosterORecord,
config: PosterOConfig,
) -> str
Build the final allocation prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
labels
|
Sequence[int | str]
|
Labels to allocate. |
required |
record
|
PosterORecord
|
Query record with canvas and available regions. |
required |
config
|
PosterOConfig
|
Prompt configuration. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Deterministic final prompt text. |
Examples:
>>> from postero.config import PosterOConfig
>>> from postero.records import PosterORecord
>>> build_final_svg_prompt([1], PosterORecord(id="q", dataset="pku"), PosterOConfig()).startswith("Final:")
True
Source code in models/postero/src/postero/serialization.py
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | |
serialize_record ¶
serialize_record(
record: PosterORecord, config: PosterOConfig
) -> tuple[str, str]
Serialize a record using the configured structure.
Source code in models/postero/src/postero/serialization.py
170 171 172 173 174 175 176 177 | |
vendor_parity ¶
Small deterministic PosterO parity fixtures.
parity_config ¶
parity_config() -> PosterOConfig
Return the deterministic prompt/parser parity configuration.
Source code in models/postero/src/postero/vendor_parity.py
34 35 36 37 38 39 40 41 42 43 44 | |
fixture_records ¶
fixture_records() -> tuple[
PosterORecord, list[PosterORecord]
]
Return query and candidate records shared by tests and scripts.
Source code in models/postero/src/postero/vendor_parity.py
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | |
golden_prompt ¶
golden_prompt() -> str
Return the deterministic prompt fixture for parity tests.
Source code in models/postero/src/postero/vendor_parity.py
83 84 85 86 | |
implementation_reference ¶
implementation_reference() -> dict[
str, str | list[str] | list[int] | list[list[float]]
]
Return prompt, selection, and parser metadata from this package.
Source code in models/postero/src/postero/vendor_parity.py
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | |
implementation_retry_calls ¶
implementation_retry_calls() -> int
Run this package's retry loop and return provider call count.
Source code in models/postero/src/postero/vendor_parity.py
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | |