(
self,
model_callback: CallbackType,
vulnerabilities: Optional[List[BaseVulnerability]] = None,
attacks: Optional[List[BaseAttack]] = None,
simulator_model: DeepEvalBaseLLM = None,
evaluation_model: DeepEvalBaseLLM = None,
framework: Optional[AISafetyFramework] = None,
attacks_per_vulnerability_type: int = 1,
ignore_errors: bool = True,
reuse_simulated_test_cases: bool = False,
metadata: Optional[dict] = None,
_print_assessment: Optional[bool] = True,
_upload_to_confident: Optional[bool] = True,
)
| 69 | ) |
| 70 | |
| 71 | def red_team( |
| 72 | self, |
| 73 | model_callback: CallbackType, |
| 74 | vulnerabilities: Optional[List[BaseVulnerability]] = None, |
| 75 | attacks: Optional[List[BaseAttack]] = None, |
| 76 | simulator_model: DeepEvalBaseLLM = None, |
| 77 | evaluation_model: DeepEvalBaseLLM = None, |
| 78 | framework: Optional[AISafetyFramework] = None, |
| 79 | attacks_per_vulnerability_type: int = 1, |
| 80 | ignore_errors: bool = True, |
| 81 | reuse_simulated_test_cases: bool = False, |
| 82 | metadata: Optional[dict] = None, |
| 83 | _print_assessment: Optional[bool] = True, |
| 84 | _upload_to_confident: Optional[bool] = True, |
| 85 | ): |
| 86 | if not framework and not vulnerabilities: |
| 87 | raise ValueError( |
| 88 | "You must either provide a 'framework' or 'vulnerabilities'" |
| 89 | ) |
| 90 | |
| 91 | if framework and (vulnerabilities or attacks): |
| 92 | raise ValueError( |
| 93 | "You can only pass either 'framework' or 'attacks' and 'vulnerabilities' at the same time" |
| 94 | ) |
| 95 | |
| 96 | if self.async_mode: |
| 97 | validate_model_callback_signature( |
| 98 | model_callback=model_callback, |
| 99 | async_mode=self.async_mode, |
| 100 | ) |
| 101 | loop = get_or_create_event_loop() |
| 102 | return loop.run_until_complete( |
| 103 | self.a_red_team( |
| 104 | model_callback=model_callback, |
| 105 | attacks_per_vulnerability_type=attacks_per_vulnerability_type, |
| 106 | vulnerabilities=vulnerabilities, |
| 107 | framework=framework, |
| 108 | attacks=attacks, |
| 109 | simulator_model=simulator_model, |
| 110 | evaluation_model=evaluation_model, |
| 111 | ignore_errors=ignore_errors, |
| 112 | reuse_simulated_test_cases=reuse_simulated_test_cases, |
| 113 | metadata=metadata, |
| 114 | _print_assessment=_print_assessment, |
| 115 | ) |
| 116 | ) |
| 117 | else: |
| 118 | if framework and not framework._has_dataset: |
| 119 | risk_assessment = self._assess_framework( |
| 120 | model_callback=model_callback, |
| 121 | simulator_model=simulator_model, |
| 122 | evaluation_model=evaluation_model, |
| 123 | framework=framework, |
| 124 | attacks_per_vulnerability_type=attacks_per_vulnerability_type, |
| 125 | ignore_errors=ignore_errors, |
| 126 | reuse_simulated_test_cases=reuse_simulated_test_cases, |
| 127 | metadata=metadata, |
| 128 | ) |
no test coverage detected