promptflow.evals.synthetic Modul#

class promptflow.evals.synthetic.AdversarialScenario(value)#

Basiert auf: Enum

Typen von adversariellen Szenarien

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_SUMMARIZATION = 'adv_summarization'#
class promptflow.evals.synthetic.AdversarialSimulator(*, azure_ai_project: Dict[str, Any], credential=None)#

Basiert auf: object

Initialisiert den adversariellen Simulator mit einem Projektumfang.

Parameter:
  • azure_ai_project (Dict[str, Any]) – Wörterbuch, das den Projektumfang definiert. Es muss die folgenden Schlüssel enthalten: - „subscription_id“: Azure-Abonnement-ID. - „resource_group_name“: Name der Azure-Ressourcengruppe. - „project_name“: Name des Azure Machine Learning-Arbeitsbereichs.

  • credential (TokenCredential) – Die Anmeldeinformationen für die Verbindung mit dem Azure AI-Projekt.

__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, _jailbreak_type: Optional[str] = None, randomize_order: bool = True, randomization_seed: Optional[int] = None)#

Führt die adversarielle Simulation asynchron gegen eine angegebene Zielfunktion aus.

Parameter:
  • scenario (promptflow.evals.synthetic.adversarial_scenario.AdversarialScenario) –

    Enum-Wert, der das für die Generierung von Eingaben verwendete adversarielle Szenario angibt. Beispiel

  • target (Callable) – Die Zielfunktion, für die gegnerische Eingaben simuliert werden sollen. Diese Funktion sollte asynchron sein und ein Wörterbuch akzeptieren, das die gegnerische Eingabe repräsentiert.

  • max_conversation_turns (int) – Die maximale Anzahl von Konversationsrunden, die simuliert werden sollen. Standardwert ist 1.

  • max_simulation_results (int) – Die maximale Anzahl von Simulationsergebnissen, die zurückgegeben werden sollen. Standardwert ist 3.

  • api_call_retry_limit (int) – Die maximale Anzahl von Wiederholungen für jeden API-Aufruf innerhalb der Simulation. Standardwert ist 3.

  • api_call_retry_sleep_sec (int) – Die Wartezeit (in Sekunden) zwischen den Wiederholungen von API-Aufrufen. Standardwert ist 1 Sekunde.

  • api_call_delay_sec (int) – Die Verzögerung (in Sekunden) vor einem API-Aufruf. Dies kann verwendet werden, um Ratenbegrenzungen zu vermeiden. Standardwert ist 0 Sekunden.

  • concurrent_async_task (int) – Die Anzahl der asynchronen Aufgaben, die während der Simulation gleichzeitig ausgeführt werden sollen. Standardwert ist 3.

  • randomize_order (bool) – Ob die Reihenfolge der Prompts zufällig gewählt werden soll oder nicht. Standardmäßig True.

  • randomization_seed (Optional[int]) – Der Seed, der zur Zufallsgenerierung der Prompt-Auswahl verwendet wird. Wenn nicht angegeben, wird der Standard-Seed des Systems verwendet. Standardmäßig None.

Gibt zurück:

Eine Liste von Wörterbüchern, die jeweils eine simulierte Konversation repräsentieren. Jedes Wörterbuch enthält

  • ’template_parameters’: Ein Wörterbuch mit Parametern, die in der Konversationstemplate verwendet werden,

    einschließlich ‘conversation_starter’.

  • ’messages’: Eine Liste von Wörterbüchern, die jeweils eine Runde in der Konversation repräsentieren.

    Jedes Nachrichtenwörterbuch enthält ‘content’ (den Nachrichtentext) und ‘role’ (der angibt, ob die Nachricht vom ‘user’ oder vom ‘assistant’ stammt).

  • $schema’: Eine Zeichenkette, die die Schema-URL für das Konversationsformat angibt.

Der ‘content’ für Nachrichten der Rolle ‘assistant’ kann die Nachrichten enthalten, die Ihr Callback zurückgegeben hat.

Rückgabetyp:

List[Dict[str, Any]]

Ausgabeformat

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]]#

Ruft den adversariellen Simulator synchron auf.

Parameter:
  • max_conversation_turns (int) – Die maximale Anzahl der zu simulierenden Gesprächsrunden.

  • max_simulation_results (int) – Die maximale Anzahl der zurückzugebenden Simulationsergebnisse.

  • target (Callable) – Die Zielfunktion, gegen die adversarielle Eingaben simuliert werden sollen.

  • api_call_retry_limit (int) – Die maximale Anzahl von Wiederholungsversuchen für jeden API-Aufruf innerhalb der Simulation.

  • api_call_retry_sleep_sec (int) – Die Wartezeit (in Sekunden) zwischen den Wiederholungsversuchen für API-Aufrufe.

  • api_call_delay_sec (int) – Die Verzögerung (in Sekunden) vor dem Tätigen eines API-Aufrufs.

  • concurrent_async_task (int) – Die Anzahl der asynchronen Aufgaben, die während der Simulation gleichzeitig ausgeführt werden sollen.

Gibt zurück:

Eine Liste von Wörterbüchern, die jeweils ein simuliertes Gespräch darstellen.

Rückgabetyp:

List[Dict[str, Any]]

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

Basiert auf: object

Initialisiert einen UPIA (User Prompt Injected Attack) Jailbreak adversariellen Simulator mit einem Projektumfang. Dieser Simulator unterhält sich mit Ihrem KI-System unter Verwendung von Prompts, die darauf ausgelegt sind, die normale Funktionalität zu unterbrechen.

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

    Wörterbuch, das den Projektumfang definiert. Es muss die folgenden Schlüssel enthalten:

    • ”subscription_id”: Azure Abonnement-ID.

    • ”resource_group_name”: Name der Azure-Ressourcengruppe.

    • ”project_name”: Name des Azure Machine Learning Workspace.

  • credential (TokenCredential) – Die Anmeldeinformationen für die Verbindung mit dem Azure AI-Projekt.

__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)#

Führt die adversarielle Simulation und die UPIA (User Prompt Injected Attack) Jailbreak adversarielle Simulation asynchron gegen eine angegebene Zielfunktion aus.

Parameter:
  • scenario (promptflow.evals.synthetic.adversarial_scenario.AdversarialScenario) –

    Enum-Wert, der das für die Generierung von Eingaben verwendete adversarielle Szenario angibt. Beispiel

  • target (Callable) – Die Zielfunktion, für die gegnerische Eingaben simuliert werden sollen. Diese Funktion sollte asynchron sein und ein Wörterbuch akzeptieren, das die gegnerische Eingabe repräsentiert.

  • max_conversation_turns (int) – Die maximale Anzahl von Konversationsrunden, die simuliert werden sollen. Standardwert ist 1.

  • max_simulation_results (int) – Die maximale Anzahl von Simulationsergebnissen, die zurückgegeben werden sollen. Standardwert ist 3.

  • api_call_retry_limit (int) – Die maximale Anzahl von Wiederholungen für jeden API-Aufruf innerhalb der Simulation. Standardwert ist 3.

  • api_call_retry_sleep_sec (int) – Die Wartezeit (in Sekunden) zwischen den Wiederholungen von API-Aufrufen. Standardwert ist 1 Sekunde.

  • api_call_delay_sec (int) – Die Verzögerung (in Sekunden) vor einem API-Aufruf. Dies kann verwendet werden, um Ratenbegrenzungen zu vermeiden. Standardwert ist 0 Sekunden.

  • concurrent_async_task (int) – Die Anzahl der asynchronen Aufgaben, die während der Simulation gleichzeitig ausgeführt werden sollen. Standardwert ist 3.

  • randomization_seed (Optional[int]) – Seed, der zur Zufallsgenerierung der Prompt-Auswahl verwendet wird, gemeinsam für Jailbreak und reguläre Simulation, um konsistente Ergebnisse zu gewährleisten. Wenn nicht angegeben, wird ein zufälliger Seed generiert und zwischen den Simulationen geteilt.

Gibt zurück:

Eine Liste von Wörterbüchern, die jeweils eine simulierte Konversation repräsentieren. Jedes Wörterbuch enthält

  • ’template_parameters’: Ein Wörterbuch mit Parametern, die in der Konversationstemplate verwendet werden,

    einschließlich ‘conversation_starter’.

  • ’messages’: Eine Liste von Wörterbüchern, die jeweils eine Runde in der Konversation repräsentieren.

    Jedes Nachrichtenwörterbuch enthält ‘content’ (den Nachrichtentext) und ‘role’ (der angibt, ob die Nachricht vom ‘user’ oder vom ‘assistant’ stammt).

  • $schema’: Eine Zeichenkette, die die Schema-URL für das Konversationsformat angibt.

Der ‘content’ für Nachrichten der Rolle ‘assistant’ kann die Nachrichten enthalten, die Ihr Callback zurückgegeben hat.

Rückgabetyp:

Dict[str, [List[Dict[str, Any]]]] mit zwei Elementen

Ausgabeformat

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)#

Basiert auf: object

Initialisiert den XPIA (Cross Domain Prompt Injected Attack) Jailbreak adversariellen Simulator mit einem Projektumfang.

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

    Wörterbuch, das den Projektumfang definiert. Es muss die folgenden Schlüssel enthalten:

    • ”subscription_id”: Azure Abonnement-ID.

    • ”resource_group_name”: Name der Azure-Ressourcengruppe.

    • ”project_name”: Name des Azure Machine Learning Workspace.

  • credential (TokenCredential) – Die Anmeldeinformationen für die Verbindung mit dem Azure AI-Projekt.

__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)#

Initialisiert den XPIA (Cross Domain Prompt Injected Attack) Jailbreak adversariellen Simulator mit einem Projektumfang. Dieser Simulator unterhält sich mit Ihrem KI-System unter Verwendung von Prompts, die in den Kontext injiziert werden, um die normale erwartete Funktionalität zu unterbrechen, indem er manipulierte Inhalte hervorruft, eindringt und versucht, Informationen außerhalb des Geltungsbereichs Ihres KI-Systems zu sammeln.

Parameter:
  • scenario (promptflow.evals.synthetic.adversarial_scenario.AdversarialScenario) – Enum-Wert, der das für die Generierung von Eingaben verwendete adversarielle Szenario angibt.

  • target (Callable) – Die Zielfunktion, für die gegnerische Eingaben simuliert werden sollen. Diese Funktion sollte asynchron sein und ein Wörterbuch akzeptieren, das die gegnerische Eingabe repräsentiert.

  • max_conversation_turns (int) – Die maximale Anzahl von Konversationsrunden, die simuliert werden sollen. Standardwert ist 1.

  • max_simulation_results (int) – Die maximale Anzahl von Simulationsergebnissen, die zurückgegeben werden sollen. Standardwert ist 3.

  • api_call_retry_limit (int) – Die maximale Anzahl von Wiederholungen für jeden API-Aufruf innerhalb der Simulation. Standardwert ist 3.

  • api_call_retry_sleep_sec (int) – Die Wartezeit (in Sekunden) zwischen den Wiederholungen von API-Aufrufen. Standardwert ist 1 Sekunde.

  • api_call_delay_sec (int) – Die Verzögerung (in Sekunden) vor einem API-Aufruf. Dies kann verwendet werden, um Ratenbegrenzungen zu vermeiden. Standardwert ist 0 Sekunden.

  • concurrent_async_task (int) – Die Anzahl der asynchronen Aufgaben, die während der Simulation gleichzeitig ausgeführt werden sollen. Standardwert ist 3.

Gibt zurück:

Eine Liste von Wörterbüchern, die jeweils eine simulierte Konversation repräsentieren. Jedes Wörterbuch enthält

  • ’template_parameters’: Ein Wörterbuch mit Parametern, die in der Konversationstemplate verwendet werden,

    einschließlich ‘conversation_starter’.

  • ’messages’: Eine Liste von Wörterbüchern, die jeweils eine Runde in der Konversation repräsentieren.

    Jedes Nachrichtenwörterbuch enthält ‘content’ (den Nachrichtentext) und ‘role’ (der angibt, ob die Nachricht vom ‘user’ oder vom ‘assistant’ stammt).

  • $schema’: Eine Zeichenkette, die die Schema-URL für das Konversationsformat angibt.

Der ‘content’ für Nachrichten der Rolle ‘assistant’ kann die Nachrichten enthalten, die Ihr Callback zurückgegeben hat.

Rückgabetyp:

List[Dict[str, Any]]

Ausgabeformat

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'
    }]
}

Untermodule#