87 lines
2.8 KiB
Python
87 lines
2.8 KiB
Python
# 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
|
|
|
|
|
|
class Prompter(ABC):
|
|
"""
|
|
Abstract base class that defines the interface for all prompters.
|
|
Prompters are used to generate the prompts for the language models.
|
|
"""
|
|
|
|
@abstractmethod
|
|
def aggregation_prompt(self, state_dicts: List[Dict], **kwargs) -> str:
|
|
"""
|
|
Generate a aggregation prompt for the language model.
|
|
|
|
:param state_dicts: The thought states that should be aggregated.
|
|
:type state_dicts: List[Dict]
|
|
:param kwargs: Additional keyword arguments.
|
|
:return: The aggregation prompt.
|
|
:rtype: str
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def improve_prompt(self, **kwargs) -> str:
|
|
"""
|
|
Generate an improve prompt for the language model.
|
|
The thought state is unpacked to allow for additional keyword arguments
|
|
and concrete implementations to specify required arguments explicitly.
|
|
|
|
:param kwargs: Additional keyword arguments.
|
|
:return: The improve prompt.
|
|
:rtype: str
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def generate_prompt(self, num_branches: int, **kwargs) -> str:
|
|
"""
|
|
Generate a generate prompt for the language model.
|
|
The thought state is unpacked to allow for additional keyword arguments
|
|
and concrete implementations to specify required arguments explicitly.
|
|
|
|
:param num_branches: The number of responses the prompt should ask the LM to generate.
|
|
:type num_branches: int
|
|
:param kwargs: Additional keyword arguments.
|
|
:return: The generate prompt.
|
|
:rtype: str
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def validation_prompt(self, **kwargs) -> str:
|
|
"""
|
|
Generate a validation prompt for the language model.
|
|
The thought state is unpacked to allow for additional keyword arguments
|
|
and concrete implementations to specify required arguments explicitly.
|
|
|
|
:param kwargs: Additional keyword arguments.
|
|
:return: The validation prompt.
|
|
:rtype: str
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def score_prompt(self, state_dicts: List[Dict], **kwargs) -> str:
|
|
"""
|
|
Generate a score prompt for the language model.
|
|
|
|
:param state_dicts: The thought states that should be scored,
|
|
if more than one, they should be scored together.
|
|
:type state_dicts: List[Dict]
|
|
:param kwargs: Additional keyword arguments.
|
|
:return: The score prompt.
|
|
:rtype: str
|
|
"""
|
|
pass
|