text_utils
Text model group utilities for the v2 API.
Exposes the backend's text model name parsing, group member retrieval, and name composition as API endpoints for the frontend group editing UX.
_COMMON_FIELD_KEYS
module-attribute
_COMMON_FIELD_KEYS = (
"baseline",
"description",
"url",
"nsfw",
"tags",
"style",
"instruct_format",
)
ParsedNameResponse
Bases: BaseModel
Structured result of parsing a text model name.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
ParsedNameInfo
Bases: BaseModel
Parsed name components for a single group member.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
GroupMemberInfo
Bases: BaseModel
A single member of a text model group with parsed name info.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
NameFormatInfo
Bases: BaseModel
Serializable representation of an inferred name format schema.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
GroupMembersResponse
Bases: BaseModel
Full response for a text model group.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
DistinctBaselinesResponse
Bases: BaseModel
Response containing sorted unique baseline values for text models.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
ComposeNameRequest
Bases: BaseModel
Request body for composing a model name from parts.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
ComposeNameResponse
Bases: BaseModel
Response from the name composition endpoint.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
CommonFieldsUpdateRequest
Bases: BaseModel
Request body for batch-updating common fields across a group.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
BatchUpdateResponse
Bases: BaseModel
Response from batch group common field update.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
_get_all_text_models
Load all text generation models as raw dicts.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
_get_group_members
_get_group_members(
all_models: dict[str, dict[str, Any]], group_name: str
) -> list[tuple[str, dict[str, Any]]]
Filter models belonging to a specific group.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
_compute_common_fields
Find fields that are identical across all canonical members.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
_compose_name_from_parts
_compose_name_from_parts(
base_name: str,
size: str,
variant: str | None = None,
version: str | None = None,
quant: str | None = None,
author: str | None = None,
separator: str = "-",
part_order: list[str] | None = None,
) -> str
Compose a model name from structured parts.
When part_order is provided, parts are arranged in that order, using separator. Otherwise uses default: [author/]base{sep}size[{sep}variant][{sep}version][{sep}quant]
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
parse_name
parse_name(
name: Annotated[
str, Query(description="The model name to parse")
],
) -> ParsedNameResponse
Parse a text model name into base name, size, variant, and quantization components.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
get_group
get_group(
group_name: str,
manager: Annotated[
ModelReferenceManager,
Depends(get_model_reference_manager),
],
) -> GroupMembersResponse
Get all models in a text model group with parsed name info and common fields.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
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 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 | |
get_distinct_baselines
get_distinct_baselines(
manager: Annotated[
ModelReferenceManager,
Depends(get_model_reference_manager),
],
) -> DistinctBaselinesResponse
Return sorted unique non-empty baselines from text_generation models.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
compose_name
compose_name(
request: ComposeNameRequest,
manager: Annotated[
ModelReferenceManager,
Depends(get_model_reference_manager),
],
) -> ComposeNameResponse
Compose a model name from base name, size, variant, and quant parts.
Checks whether the composed name already exists in the text_generation category.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
update_group_common_fields
async
update_group_common_fields(
group_name: str,
request: CommonFieldsUpdateRequest,
manager: Annotated[
ModelReferenceManager,
Depends(get_model_reference_manager),
],
apikey: Annotated[str, Depends(header_auth_scheme)],
) -> JSONResponse
Update shared fields across all canonical members of a text model group.
Creates one PendingChangeRecord per canonical member with a shared batch_id.
Source code in src/horde_model_reference/service/v2/routers/text_utils.py
459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 | |