Skip to content

_pop

ModelPayloadKobold

Bases: ModelPayloadRootKobold

Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
class ModelPayloadKobold(ModelPayloadRootKobold):
    prompt: str | None = None
    """The prompt for the text generation."""

prompt class-attribute instance-attribute

prompt: str | None = None

The prompt for the text generation.

NoValidRequestFoundKobold

Bases: NoValidRequestFound

Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
class NoValidRequestFoundKobold(NoValidRequestFound):
    max_context_length: int | None = Field(default=None)
    """How many waiting requests were skipped because they demanded a higher max_context_length than what this
    worker provides."""
    max_length: int | None = Field(default=None)
    """How many waiting requests were skipped because they demanded a higher max_length than what this
    worker provides."""
    matching_softprompt: int | None = Field(default=None)
    """How many waiting requests were skipped because they demanded an available soft-prompt which this worker does not
    have."""

    @override
    @classmethod
    def get_api_model_name(cls) -> str | None:
        return "NoValidRequestFoundKobold"

max_context_length class-attribute instance-attribute

max_context_length: int | None = Field(default=None)

How many waiting requests were skipped because they demanded a higher max_context_length than what this worker provides.

max_length class-attribute instance-attribute

max_length: int | None = Field(default=None)

How many waiting requests were skipped because they demanded a higher max_length than what this worker provides.

matching_softprompt class-attribute instance-attribute

matching_softprompt: int | None = Field(default=None)

How many waiting requests were skipped because they demanded an available soft-prompt which this worker does not have.

get_api_model_name classmethod

get_api_model_name() -> str | None
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@override
@classmethod
def get_api_model_name(cls) -> str | None:
    return "NoValidRequestFoundKobold"

TextGenerateJobPopResponse

Bases: HordeResponseBaseModel, ResponseRequiringFollowUpMixin, ExtraSourceImageMixin

Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
class TextGenerateJobPopResponse(
    HordeResponseBaseModel,
    ResponseRequiringFollowUpMixin,
    ExtraSourceImageMixin,
):
    payload: ModelPayloadKobold
    """The settings for this text generation."""
    id_: JobID | None = Field(default=None, alias="id")
    """The UUID for this text generation."""
    ids: list[JobID]
    """The UUIDs for this text generations."""
    skipped: NoValidRequestFoundKobold = Field(NoValidRequestFoundKobold())
    """The skipped requests that were not valid for this worker."""
    softprompt: str | None = Field(default=None)
    """The soft prompt requested for this generation."""
    model: str | None = Field(default=None)
    """The model requested for this generation."""
    ttl: int | None = None
    """The amount of seconds before this job is considered stale and aborted."""

    @field_validator("id_", mode="before")
    def validate_id(cls, v: str | JobID) -> JobID | str:
        if isinstance(v, str) and v == "":
            logger.warning("Job ID is empty")
            return JobID(root=uuid.uuid4())

        return v

    @model_validator(mode="after")
    def ids_present(self) -> TextGenerateJobPopResponse:
        """Ensure that either id_ or ids is present."""
        if self.model is None:
            if self.skipped.is_empty():
                logger.debug("No model or skipped data found in response.")
            else:
                logger.debug("No model found in response.")
            return self

        if self.id_ is None and len(self.ids) == 0:
            raise ValueError("Neither id_ nor ids were present in the response.")

        if len(self.ids) > 1:
            logger.debug("Sorting IDs")
            self.ids.sort()

        return self

    @override
    @classmethod
    def get_api_model_name(cls) -> str | None:
        return "GenerationPayloadKobold"

    @override
    @classmethod
    def get_follow_up_default_request_type(cls) -> type[TextGenerateStatusRequest]:
        return TextGenerateStatusRequest

    @override
    @classmethod
    def get_follow_up_failure_cleanup_request_type(cls) -> type[DeleteTextGenerateRequest]:
        return DeleteTextGenerateRequest

    @override
    def get_follow_up_returned_params(self, *, as_python_field_name: bool = False) -> list[dict[str, object]]:
        if as_python_field_name:
            return [{"id_": self.id_}]
        return [{"id": self.id_}]

    @override
    async def async_download_additional_data(self, client_session: aiohttp.ClientSession) -> None:
        await self.async_download_extra_source_images(client_session)

    @override
    def download_additional_data(self) -> None:
        raise NotImplementedError("This method has not been implemented for this class.")

    def __eq__(self, value: object) -> bool:
        if not isinstance(value, TextGenerateJobPopResponse):
            return False

        if self.ids:
            return all(id_ in value.ids for id_ in self.ids)

        return self.id_ == value.id_

    def __hash__(self) -> int:
        if self.ids:
            return hash(tuple(self.ids))

        return hash(self.id_)

payload instance-attribute

payload: ModelPayloadKobold

The settings for this text generation.

id_ class-attribute instance-attribute

id_: JobID | None = Field(default=None, alias='id')

The UUID for this text generation.

ids instance-attribute

ids: list[JobID]

The UUIDs for this text generations.

skipped class-attribute instance-attribute

skipped: NoValidRequestFoundKobold = Field(NoValidRequestFoundKobold())

The skipped requests that were not valid for this worker.

softprompt class-attribute instance-attribute

softprompt: str | None = Field(default=None)

The soft prompt requested for this generation.

model class-attribute instance-attribute

model: str | None = Field(default=None)

The model requested for this generation.

ttl class-attribute instance-attribute

ttl: int | None = None

The amount of seconds before this job is considered stale and aborted.

validate_id

validate_id(v: str | JobID) -> JobID | str
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@field_validator("id_", mode="before")
def validate_id(cls, v: str | JobID) -> JobID | str:
    if isinstance(v, str) and v == "":
        logger.warning("Job ID is empty")
        return JobID(root=uuid.uuid4())

    return v

ids_present

ids_present() -> TextGenerateJobPopResponse

Ensure that either id_ or ids is present.

Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@model_validator(mode="after")
def ids_present(self) -> TextGenerateJobPopResponse:
    """Ensure that either id_ or ids is present."""
    if self.model is None:
        if self.skipped.is_empty():
            logger.debug("No model or skipped data found in response.")
        else:
            logger.debug("No model found in response.")
        return self

    if self.id_ is None and len(self.ids) == 0:
        raise ValueError("Neither id_ nor ids were present in the response.")

    if len(self.ids) > 1:
        logger.debug("Sorting IDs")
        self.ids.sort()

    return self

get_api_model_name classmethod

get_api_model_name() -> str | None
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@override
@classmethod
def get_api_model_name(cls) -> str | None:
    return "GenerationPayloadKobold"

get_follow_up_default_request_type classmethod

get_follow_up_default_request_type() -> type[TextGenerateStatusRequest]
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@override
@classmethod
def get_follow_up_default_request_type(cls) -> type[TextGenerateStatusRequest]:
    return TextGenerateStatusRequest

get_follow_up_failure_cleanup_request_type classmethod

get_follow_up_failure_cleanup_request_type() -> type[DeleteTextGenerateRequest]
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@override
@classmethod
def get_follow_up_failure_cleanup_request_type(cls) -> type[DeleteTextGenerateRequest]:
    return DeleteTextGenerateRequest

get_follow_up_returned_params

get_follow_up_returned_params(*, as_python_field_name: bool = False) -> list[dict[str, object]]
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@override
def get_follow_up_returned_params(self, *, as_python_field_name: bool = False) -> list[dict[str, object]]:
    if as_python_field_name:
        return [{"id_": self.id_}]
    return [{"id": self.id_}]

async_download_additional_data async

async_download_additional_data(client_session: ClientSession) -> None
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@override
async def async_download_additional_data(self, client_session: aiohttp.ClientSession) -> None:
    await self.async_download_extra_source_images(client_session)

download_additional_data

download_additional_data() -> None
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@override
def download_additional_data(self) -> None:
    raise NotImplementedError("This method has not been implemented for this class.")

__eq__

__eq__(value: object) -> bool
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
def __eq__(self, value: object) -> bool:
    if not isinstance(value, TextGenerateJobPopResponse):
        return False

    if self.ids:
        return all(id_ in value.ids for id_ in self.ids)

    return self.id_ == value.id_

__hash__

__hash__() -> int
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
def __hash__(self) -> int:
    if self.ids:
        return hash(tuple(self.ids))

    return hash(self.id_)

TextGenerateJobPopRequest

Bases: BaseAIHordeRequest, APIKeyAllowedInRequestMixin, _PopInputKobold

Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
class TextGenerateJobPopRequest(
    BaseAIHordeRequest,
    APIKeyAllowedInRequestMixin,
    _PopInputKobold,
):
    @override
    @classmethod
    def get_api_model_name(cls) -> str | None:
        return "PopInputKobold"

    @override
    @classmethod
    def get_http_method(cls) -> HTTPMethod:
        return HTTPMethod.POST

    @override
    @classmethod
    def get_api_endpoint_subpath(cls) -> AI_HORDE_API_ENDPOINT_SUBPATH:
        return AI_HORDE_API_ENDPOINT_SUBPATH.v2_generate_text_pop

    @override
    @classmethod
    def get_default_success_response_type(cls) -> type[TextGenerateJobPopResponse]:
        return TextGenerateJobPopResponse

get_api_model_name classmethod

get_api_model_name() -> str | None
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@override
@classmethod
def get_api_model_name(cls) -> str | None:
    return "PopInputKobold"

get_http_method classmethod

get_http_method() -> HTTPMethod
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@override
@classmethod
def get_http_method(cls) -> HTTPMethod:
    return HTTPMethod.POST

get_api_endpoint_subpath classmethod

get_api_endpoint_subpath() -> AI_HORDE_API_ENDPOINT_SUBPATH
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@override
@classmethod
def get_api_endpoint_subpath(cls) -> AI_HORDE_API_ENDPOINT_SUBPATH:
    return AI_HORDE_API_ENDPOINT_SUBPATH.v2_generate_text_pop

get_default_success_response_type classmethod

get_default_success_response_type() -> type[TextGenerateJobPopResponse]
Source code in horde_sdk/ai_horde_api/apimodels/generate/text/_pop.py
@override
@classmethod
def get_default_success_response_type(cls) -> type[TextGenerateJobPopResponse]:
    return TextGenerateJobPopResponse