# Copyright (c) 2023 ETH Zurich. # All rights reserved. # # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # # main authors: Robert Gerstenberger, Nils Blach from __future__ import annotations from abc import ABC, abstractmethod from typing import Dict, List, Union class Parser(ABC): """ Abstract base class that defines the interface for all parsers. Parsers are used to parse the responses from the language models. """ @abstractmethod def parse_aggregation_answer( self, states: List[Dict], texts: List[str] ) -> Union[Dict, List[Dict]]: """ Parse the response from the language model for a aggregation prompt. :param states: The thought states used to generate the prompt. :type states: List[Dict] :param texts: The responses to the prompt from the language model. :type texts: List[str] :return: The new thought states after parsing the response from the language model. :rtype: Union[Dict, List[Dict]] """ pass @abstractmethod def parse_improve_answer(self, state: Dict, texts: List[str]) -> Dict: """ Parse the response from the language model for an improve prompt. :param state: The thought state used to generate the prompt. :type state: Dict :param texts: The responses to the prompt from the language model. :type texts: List[str] :return: The new thought state after parsing the response from the language model. :rtype: Dict """ pass @abstractmethod def parse_generate_answer(self, state: Dict, texts: List[str]) -> List[Dict]: """ Parse the response from the language model for a generate prompt. :param state: The thought state used to generate the prompt. :type state: Dict :param texts: The responses to the prompt from the language model. :type texts: List[str] :return: The new thought states after parsing the response from the language model. :rtype: List[Dict] """ pass @abstractmethod def parse_validation_answer(self, state: Dict, texts: List[str]) -> bool: """ Parse the response from the language model for a validation prompt. :param state: The thought state used to generate the prompt. :type state: Dict :param texts: The responses to the prompt from the language model. :type texts: List[str] :return: Whether the thought state is valid or not. :rtype: bool """ pass @abstractmethod def parse_score_answer(self, states: List[Dict], texts: List[str]) -> List[float]: """ Parse the response from the language model for a score prompt. :param states: The thought states used to generate the prompt. :type states: List[Dict] :param texts: The responses to the prompt from the language model. :type texts: List[str] :return: The scores for the thought states. :rtype: List[float] """ pass