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) – 要装饰的函数。
- 返回:
被装饰的函数。
- 返回类型:
可调用