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