def _map_sample()

in ultravox/tools/ds_tool/ds_tool.py [0:0]


    def _map_sample(self, sample, exclude_fields):
        # using a Jinja template for some added flexibility, template can include variables and functions
        # e.g., {{ text }} or {{ text_proc.format_asr_text(text) }}
        try:
            rendered = apply_jinja_template(self.template, sample, exclude_fields)
        except text_proc.FormatASRError as e:
            print(f"Format ASR Error {e}. Filtering out sample.")
            sample[self.new_column_name] = None
            return sample

        if self.json_mode:
            turns = yaml.safe_load(rendered)
            assert isinstance(turns, list)
            assert all(isinstance(turn, dict) for turn in turns)
            assert len(turns) > 0
            assert turns[-1].get("role", None) == "user"
        else:
            turns = [{"role": "user", "content": rendered}]

        sample[self.new_column_name] = chat_client.chat_completion(
            model=self.language_model,
            messages=turns,
            max_tokens=self.max_tokens,
            temperature=self.temperature,
        )

        return sample