promptflow.evals.synthetic.direct_attack_simulator Modul#

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

Basiert auf: object

Initialisiert einen UPIA (User Prompt Injected Attack) Jailbreak Adversarial 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 gegnerische Simulation und die UPIA (User Prompt Injected Attack) Jailbreak gegnerische Simulation asynchron gegen eine angegebene Ziel-Funktion 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]) – Der Seed, der zur Randomisierung der Prompt-Auswahl verwendet wird und sowohl für Jailbreak- als auch für normale Simulationen freigegeben wird, um konsistente Ergebnisse zu gewährleisten. Wenn nicht angegeben, wird ein zufälliger Seed generiert und zwischen den Simulationen freigegeben.

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

Dekorator zur Überwachung von gegnerischen Szenarien.

Parameter:

func (Callable) – Die zu dekorierende Funktion.

Gibt zurück:

Die dekorierte Funktion.

Rückgabetyp:

Callable