autointent.generation.utterances.UtteranceEvolver#

class autointent.generation.utterances.UtteranceEvolver(generator, prompt_makers, seed=0, async_mode=False)#

Evolutionary strategy to augmenting utterances.

Deeply inspired by DeepEval evolutions. This method takes single utterance and prompts LLM to change it in a specific way.

Parameters:

Usage#

from autointent import Dataset
from autointent.generation import Generator
from autointent.generation.utterances import UtteranceEvolver
from autointent.generation.chat_templates import GoofyEvolution, InformalEvolution

dataset = Dataset.from_json(path_to_json)
generator = Generator()
evolver = UtteranceEvolver(generator, prompt_makers=[GoofyEvolution(), InformalEvolution()])
evolver.augment(dataset)
generator#
prompt_makers#
async_mode = False#
__call__(utterance, intent_data, n_evolutions=1, sequential=False)#

Apply evolutions to the utterance.

Parameters:
  • utterance (str) – Utterance to be evolved.

  • intent_data (autointent.schemas.Intent) – Intent data for which to evolve the utterance.

  • n_evolutions (int) – Number of evolutions to apply.

  • sequential (bool) – Whether to apply evolutions sequentially.

Return type:

list[str]

augment(dataset, split_name=Split.TRAIN, n_evolutions=1, update_split=True, batch_size=4, sequential=False)#

Add LLM-generated samples to some split of dataset.

Parameters:
  • dataset (autointent.Dataset) – Dataset object.

  • split_name (str) – Dataset split (default is TRAIN).

  • n_evolutions (int) – Number of evolutions to apply.

  • update_split (bool) – Whether to update the dataset split.

  • batch_size (int) – Batch size for async generation.

  • sequential (bool) – Whether to apply evolutions sequentially.

Return type:

datasets.Dataset