promptflow.evals.synthetic.direct_attack_simulator 模块#

class promptflow.evals.synthetic.direct_attack_simulator.DirectAttackSimulator(*, azure_ai_project: Dict[str, Any], credential=None)#

基类:object

初始化一个具有项目范围的 UPIA(用户提示注入攻击)越狱对抗模拟器。此模拟器使用旨在中断正常功能的提示与您的 AI 系统对话。

参数:
  • azure_ai_project (Dict[str, Any]) –

    定义项目范围的字典。它必须包含以下键

    • ”subscription_id”:Azure 订阅 ID。

    • ”resource_group_name”:Azure 资源组的名称。

    • ”project_name”:Azure 机器学习工作区的名称。

  • credential (TokenCredential) – 用于连接到 Azure AI 项目的凭据。

__call__(*, scenario: AdversarialScenario, 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(用户提示注入攻击)越狱对抗模拟,针对指定的目标函数。

参数:
  • 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]) – 用于随机化提示选择的种子,由越狱模拟和常规模拟共享,以确保结果一致。如果未提供,将生成一个随机种子并在模拟之间共享。

返回:

字典列表,每个字典代表一个模拟对话。每个字典包含

  • “template_parameters”:一个字典,其中包含对话模板中使用的参数,

    包括“conversation_starter”。

  • “messages”:一个字典列表,每个字典代表对话中的一轮。

    每个消息字典包括“content”(消息文本)和“role”(指示消息是来自“user”还是“assistant”)。

  • $schema”:一个字符串,指示对话格式的模式 URL。

“assistant”角色消息的“content”可能包含您的回调返回的消息。

返回类型:

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'
    }]
}
promptflow.evals.synthetic.direct_attack_simulator.monitor_adversarial_scenario(func) Callable#

用于监控对抗场景的装饰器。

参数:

func (Callable) – 要装饰的函数。

返回:

被装饰的函数。

返回类型:

可调用