in pyrit/orchestrator/multi_turn/red_teaming_orchestrator.py [0:0]
def _handle_file_response(self, last_response_from_attack_target, feedback):
# This method handles the case where the attack target
# does not respond with text output, but other modalities.
# If the response type is not text, the request should have succeeded.
if last_response_from_attack_target.response_error != "none":
raise RuntimeError(
"Request to target failed despite the returned data type "
f"{last_response_from_attack_target.converted_value_data_type}: "
f"{last_response_from_attack_target.response_error}"
)
# The last response was successful and the response type is not text.
# If the use_score_as_feedback flag is set, we can use the score rationale as feedback.
base_error_message = (
"The attack target does not respond with text output, "
"so the scoring rationale is the only textual feedback "
"that can be passed to the red teaming chat. "
)
if not self._use_score_as_feedback:
raise ValueError(
f"{base_error_message}"
"However, the use_score_as_feedback flag is set to False so it cannot be utilized."
)
if not feedback:
raise ValueError(f"{base_error_message}" "However, no scoring rationale was provided by the scorer.")
return feedback