Source code for pe.llm.llm

from abc import ABC, abstractmethod
from functools import reduce


[docs] class LLM(ABC): """The abstract class for large language models (LLMs)."""
[docs] @abstractmethod def get_responses(self, requests, **generation_args): """Get the responses from the LLM. :param requests: The requests :type requests: list[:py:class:`pe.llm.request.Request`] :param \\*\\*generation_args: The generation arguments :type \\*\\*generation_args: str :return: The responses :rtype: list[str] """ ...
@property def generation_arg_map(self): """Get the mapping from the generation arguments to arguments for this specific LLM. :return: The mapping from the generation arguments to the large language model arguments :rtype: dict """ return {}
[docs] def get_generation_args(self, *args): """Get the generation arguments from a list of dictionaries. :param \\*args: A list of generation arguments. The later ones will overwrite the earlier ones. :type \\*args: dict :return: The generation arguments :rtype: dict """ generation_args = reduce(lambda x, y: {**x, **y}, args) generation_args = { k if k not in self.generation_arg_map else self.generation_arg_map[k]: v for k, v in generation_args.items() } return generation_args