Skip to content

decoder

dandy.llm.decoder.decoder

Decoder

Source code in dandy/llm/decoder/decoder.py
def __init__(
        self,
        recorder_event_id: str,
        llm_service_mixin: LlmServiceMixin,
) -> None:
    self.recorder_event_id = recorder_event_id
    self._llm_service_mixin = llm_service_mixin
    self.llm_config = self._llm_service_mixin.get_llm_config()
    self._llm_connector = None

    self.keys_description = None
    self.keys_values = None

recorder_event_id = recorder_event_id instance-attribute

llm_config = self._llm_service_mixin.get_llm_config() instance-attribute

keys_description = None instance-attribute

keys_values = None instance-attribute

__getitem__

Source code in dandy/llm/decoder/decoder.py
def __getitem__(self, item: str) -> Any:
    return self.keys_values[item]

as_enum

Source code in dandy/llm/decoder/decoder.py
def as_enum(self) -> Enum:
    return Enum(
        f'{self.__class__.__name__}Enum',
        {value[0]: key for key, value in self._keyed_mapping.items()},
    )

process

Source code in dandy/llm/decoder/decoder.py
def process(
        self,
        prompt: Prompt | str,
        keys_description: str,
        keys_values: dict[str, Any],
        max_return_values: int | None = None,
) -> DecoderValuesIntel:
    for key in keys_values:
        if not isinstance(key, str):
            message = f'all keys in `keys_values` must be strings to be decoded, found {key} ({type(key)}).'
            raise DecoderCriticalError(message)

    self.keys_description = keys_description
    self.keys_values = keys_values

    decoder_values_intel = DecoderValuesIntel()
    chosen_mappings = {}

    recorder_add_process_decoder_value_event(
        decoder=self,
        event_id=self.recorder_event_id,
    )

    for decoder_enum in self._process_decoder_prompt_to_intel(
            prompt, max_return_values
    ):
        decoder_value = self._get_selected_value(decoder_enum.value)

        decoder_values_intel.append(decoder_value)
        chosen_mappings[decoder_value] = str(
            self._get_selected_key(decoder_enum.value)
        )

    if chosen_mappings:
        recorder_add_chosen_values_event(
            chosen_values_keys=chosen_mappings,
            event_id=self.recorder_event_id,
        )

    return decoder_values_intel