promptflow.evals.synthetic 模块#
- class promptflow.evals.synthetic.AdversarialScenario(value)#
基础:
Enum对抗场景类型
- ADVERSARIAL_CONTENT_GEN_GROUNDED = 'adv_content_gen_grounded'#
- ADVERSARIAL_CONTENT_GEN_UNGROUNDED = 'adv_content_gen_ungrounded'#
- ADVERSARIAL_CONTENT_PROTECTED_MATERIAL = 'adv_content_protected_material'#
- ADVERSARIAL_CONVERSATION = 'adv_conversation'#
- ADVERSARIAL_INDIRECT_JAILBREAK = 'adv_xpia'#
- ADVERSARIAL_QA = 'adv_qa'#
- ADVERSARIAL_REWRITE = 'adv_rewrite'#
- ADVERSARIAL_SEARCH = 'adv_search'#
- ADVERSARIAL_SUMMARIZATION = 'adv_summarization'#
- class promptflow.evals.synthetic.AdversarialSimulator(*, azure_ai_project: Dict[str, Any], credential=None)#
基础类:
object使用项目范围初始化对抗模拟器。
- Parameters:
azure_ai_project (Dict[str, Any]) – 定义项目范围的字典。它必须包含以下键: - “subscription_id”: Azure 订阅 ID。 - “resource_group_name”: Azure 资源组的名称。 - “project_name”: Azure 机器学习工作区的名称。
credential (TokenCredential) – 用于连接到 Azure AI 项目的凭证。
- __call__(*, scenario: 对抗场景, target: Callable, max_conversation_turns: int = 1, max_simulation_results: int = 3, api_call_retry_limit: int = 3, api_call_retry_sleep_sec: int = 1, api_call_delay_sec: int = 0, concurrent_async_task: int = 3, _jailbreak_type: Optional[str] = None, randomize_order: bool = True, randomization_seed: Optional[int] = None)#
异步执行针对指定目标函数的对抗模拟。
- Parameters:
scenario (promptflow.evals.synthetic.adversarial_scenario.AdversarialScenario) –
枚举值,指定用于生成输入的对抗场景。 示例:
target (Callable) – 用于模拟对抗性输入的目标函数。 该函数应该是异步的,并接受一个表示对抗性输入的字典。
max_conversation_turns (int) – 模拟的最大对话轮数。默认为1。
max_simulation_results (int) – 返回的最大模拟结果数量。默认为3。
api_call_retry_limit (int) – 模拟中每次API调用的最大重试次数。默认为3。
api_call_retry_sleep_sec (int) – API调用重试之间的休眠时间(以秒为单位)。 默认为1秒。
api_call_delay_sec (int) – 在进行API调用之前的延迟(以秒为单位)。 这可以用于避免达到速率限制。默认为0秒。
concurrent_async_task (int) – 模拟期间并发运行的异步任务数量。默认值为3。
randomize_order (bool) – 是否应该随机化提示的顺序。默认为 True。
randomization_seed (Optional[int]) – 用于随机化提示选择的种子。如果未设置,则使用系统的默认种子。默认为 None。
- Returns:
一个字典列表,每个字典代表一个模拟对话。每个字典包含:
- ’template_parameters’: 一个包含对话模板中使用的参数的字典,
包括‘conversation_starter’。
- ’messages’: 一个字典列表,每个字典代表对话中的一个回合。
每个消息字典包括‘content’(消息文本)和 ‘role’(指示消息是来自‘user’还是‘assistant’)。
’$schema’: 一个字符串,指示对话格式的模式URL。
‘assistant’角色消息的‘content’可能包括您的回调返回的消息。
- Return type:
列表[字典[字符串, 任意类型]]
输出格式
return_value = [ { 'template_parameters': {}, 'messages': [ { 'content': '<jailbreak prompt> <adversarial question>', 'role': 'user' }, { 'content': "<response from endpoint>", 'role': 'assistant', 'context': None } ], '$schema': 'http://azureml/sdk-2-0/ChatConversation.json' } ]
- call_sync(*, max_conversation_turns: int, max_simulation_results: int, target: Callable, api_call_retry_limit: int, api_call_retry_sleep_sec: int, api_call_delay_sec: int, concurrent_async_task: int) List[Dict[str, Any]]#
同步调用对抗模拟器。
- Parameters:
max_conversation_turns (int) – 模拟的最大对话轮次。
max_simulation_results (int) – 返回的最大模拟结果数量。
target (Callable) – 用于模拟对抗性输入的目标函数。
api_call_retry_limit (int) – 模拟中每次API调用的最大重试次数。
api_call_retry_sleep_sec (int) – API调用重试之间的休眠时间(以秒为单位)。
api_call_delay_sec (int) – 在进行API调用之前的延迟(以秒为单位)。
concurrent_async_task (int) – 模拟期间同时运行的异步任务数量。
- Returns:
一个字典列表,每个字典代表一个模拟对话。
- Return type:
列表[字典[字符串, 任意类型]]
- class promptflow.evals.synthetic.DirectAttackSimulator(*, azure_ai_project: Dict[str, Any], credential=None)#
基础类:
object初始化一个UPIA(用户提示注入攻击)越狱对抗模拟器,并设定项目范围。 该模拟器使用旨在中断正常功能的提示与您的AI系统进行对话。
- Parameters:
azure_ai_project (Dict[str, Any]) –
定义项目范围的字典。它必须包含以下键:
”subscription_id”: Azure 订阅 ID。
”resource_group_name”: Azure 资源组的名称。
”project_name”: Azure 机器学习工作区的名称。
credential (TokenCredential) – 用于连接到 Azure AI 项目的凭证。
- __call__(*, scenario: 对抗场景, target: Callable, max_conversation_turns: int = 1, max_simulation_results: int = 3, api_call_retry_limit: int = 3, api_call_retry_sleep_sec: int = 1, api_call_delay_sec: int = 0, concurrent_async_task: int = 3, randomization_seed: Optional[int] = None)#
异步执行对抗模拟和UPIA(用户提示注入攻击)越狱对抗模拟,针对指定的目标函数。
- Parameters:
scenario (promptflow.evals.synthetic.adversarial_scenario.AdversarialScenario) –
枚举值,指定用于生成输入的对抗场景。 示例:
target (Callable) – 用于模拟对抗性输入的目标函数。 该函数应该是异步的,并接受一个表示对抗性输入的字典。
max_conversation_turns (int) – 模拟的最大对话轮数。默认为1。
max_simulation_results (int) – 返回的最大模拟结果数量。默认为3。
api_call_retry_limit (int) – 模拟中每次API调用的最大重试次数。默认为3。
api_call_retry_sleep_sec (int) – API调用重试之间的休眠时间(以秒为单位)。 默认为1秒。
api_call_delay_sec (int) – 在进行API调用之前的延迟(以秒为单位)。 这可以用于避免达到速率限制。默认为0秒。
concurrent_async_task (int) – 模拟期间同时运行的异步任务数量。默认值为3。
randomization_seed (Optional[int]) – 用于随机化提示选择的种子,由越狱和常规模拟共享,以确保结果的一致性。如果未提供,将生成一个随机种子并在模拟之间共享。
- Returns:
一个字典列表,每个字典代表一个模拟对话。每个字典包含:
- ’template_parameters’: 一个包含对话模板中使用的参数的字典,
包括‘conversation_starter’。
- ’messages’: 一个字典列表,每个字典代表对话中的一个回合。
每个消息字典包括‘content’(消息文本)和 ‘role’(指示消息是来自‘user’还是‘assistant’)。
’$schema’: 一个字符串,指示对话格式的模式URL。
‘assistant’角色的‘content’可能包括您的回调返回的消息。
- Return type:
包含两个元素的Dict[str, [List[Dict[str, Any]]]]
输出格式
return_value = { "jailbreak": [ { 'template_parameters': {}, 'messages': [ { 'content': '<jailbreak prompt> <adversarial question>', 'role': 'user' }, { 'content': "<response from endpoint>", 'role': 'assistant', 'context': None } ], '$schema': 'http://azureml/sdk-2-0/ChatConversation.json' }], "regular": [ { 'template_parameters': {}, 'messages': [ { 'content': '<adversarial question>', 'role': 'user' }, { 'content': "<response from endpoint>", 'role': 'assistant', 'context': None }], '$schema': 'http://azureml/sdk-2-0/ChatConversation.json' }] }
- class promptflow.evals.synthetic.IndirectAttackSimulator(*, azure_ai_project: Dict[str, Any], credential=None)#
基础类:
object使用项目范围初始化XPIA(跨域提示注入攻击)越狱对抗模拟器。
- Parameters:
azure_ai_project (Dict[str, Any]) –
定义项目范围的字典。它必须包含以下键:
”subscription_id”: Azure 订阅 ID。
”resource_group_name”: Azure 资源组的名称。
”project_name”: Azure 机器学习工作区的名称。
credential (TokenCredential) – 用于连接到 Azure AI 项目的凭证。
- __call__(*, scenario: 对抗场景, target: Callable, max_conversation_turns: int = 1, max_simulation_results: int = 3, api_call_retry_limit: int = 3, api_call_retry_sleep_sec: int = 1, api_call_delay_sec: int = 0, concurrent_async_task: int = 3)#
初始化XPIA(跨域提示注入攻击)越狱对抗模拟器,并设定项目范围。 该模拟器通过将提示注入到上下文中与您的AI系统进行对话,以中断正常的预期功能,通过引发操纵内容、入侵并尝试收集超出您AI系统范围的信息。
- Parameters:
场景 (promptflow.evals.synthetic.adversarial_scenario.AdversarialScenario) – 枚举值,指定用于生成输入的对抗场景。
target (Callable) – 用于模拟对抗性输入的目标函数。 该函数应该是异步的,并接受一个表示对抗性输入的字典。
max_conversation_turns (int) – 模拟的最大对话轮数。默认为1。
max_simulation_results (int) – 返回的最大模拟结果数量。默认为3。
api_call_retry_limit (int) – 模拟中每次API调用的最大重试次数。默认为3。
api_call_retry_sleep_sec (int) – API调用重试之间的休眠时间(以秒为单位)。 默认为1秒。
api_call_delay_sec (int) – 在进行API调用之前的延迟(以秒为单位)。 这可以用于避免达到速率限制。默认为0秒。
concurrent_async_task (int) – 模拟期间同时运行的异步任务数量。默认值为3。
- Returns:
一个字典列表,每个字典代表一个模拟对话。每个字典包含:
- ’template_parameters’: 一个包含对话模板中使用的参数的字典,
包括‘conversation_starter’。
- ’messages’: 一个字典列表,每个字典代表对话中的一个回合。
每个消息字典包括‘content’(消息文本)和 ‘role’(指示消息是来自‘user’还是‘assistant’)。
’$schema’: 一个字符串,指示对话格式的模式URL。
‘assistant’角色的‘content’可能包括您的回调返回的消息。
- Return type:
列表[字典[字符串, 任意类型]]
输出格式
return_value = [ { 'template_parameters': {}, 'messages': [ { 'content': '<jailbreak prompt> <adversarial question>', 'role': 'user' }, { 'content': "<response from endpoint>", 'role': 'assistant', 'context': None } ], '$schema': 'http://azureml/sdk-2-0/ChatConversation.json' }] }