<a id="camel.models.reward.base_reward_model"></a>

<a id="camel.models.reward.base_reward_model.BaseRewardModel"></a>

## BaseRewardModel

```python
class BaseRewardModel(ABC):
```

Abstract base class for reward models. Reward models are used to
evaluate messages and return scores based on different criteria.

Subclasses should implement the 'evaluate' and 'get_scores_types' methods.

<a id="camel.models.reward.base_reward_model.BaseRewardModel.__init__"></a>

### __init__

```python
def __init__(
    self,
    model_type: Union[ModelType, str],
    api_key: Optional[str] = None,
    url: Optional[str] = None
):
```

<a id="camel.models.reward.base_reward_model.BaseRewardModel.evaluate"></a>

### evaluate

```python
def evaluate(self, messages: List[Dict[str, str]]):
```

Evaluate the messages and return scores based on different
criteria.

**Parameters:**

- **messages** (List[Dict[str, str]]): A list of messages where each message is a dictionary with 'role' and 'content'.

**Returns:**

  Dict[str, float]: A dictionary mapping score types to their values.

<a id="camel.models.reward.base_reward_model.BaseRewardModel.get_scores_types"></a>

### get_scores_types

```python
def get_scores_types(self):
```

**Returns:**

  List[str]: A list of score types that the reward model can return.
