promptflow.evals.synthetic.adversarial_simulator 模块#
- class promptflow.evals.synthetic.adversarial_simulator.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 (可选[整数]) – 用于随机化提示选择的种子。如果未设置,则使用系统的默认种子。默认为 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:
列表[字典[字符串, 任意类型]]
- promptflow.evals.synthetic.adversarial_simulator.monitor_adversarial_scenario(func) Callable#
通过日志记录监控对抗场景
- Parameters:
func (可调用) – 要监控的函数
- Returns:
装饰后的函数
- Return type:
可调用的