Udostępnij przez


Przetestuj moją aplikację z uwzględnieniem awarii modelu językowego

Na pierwszy rzut oka
Celem: Testowanie błędów LLM, takich jak halucynacje
Czas: 15 minut
Plugins:LanguageModelFailurePlugin
Wymagania wstępne:konfigurowanie serwera proxy deweloperskiego

Podczas tworzenia aplikacji integrujących się z dużymi modelami językowymi (LLM) należy przetestować sposób obsługi różnych scenariuszy awarii llM przez aplikację. Serwer proxy deweloperski umożliwia symulowanie realistycznych błędów modelu języka w dowolnym interfejsie API LLM używanym w aplikacji przy użyciu elementu LanguageModelFailurePlugin.

Symulowanie błędów modelu języka w dowolnym interfejsie API LLM

Aby rozpocząć, włącz element LanguageModelFailurePlugin w pliku konfiguracji.

Plik: devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "LanguageModelFailurePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "urlsToWatch": [
        "https://api.openai.com/*",
        "http://localhost:11434/*"
      ]
    }
  ]
}

Dzięki tej podstawowej konfiguracji wtyczka losowo wybiera wszystkie dostępne typy błędów i stosuje je do pasujących żądań interfejsu API modelu języka.

Konfigurowanie określonych scenariuszy awarii

Aby przetestować konkretne scenariusze awarii, skonfiguruj wtyczkę do używania określonych typów błędów:

Plik: devproxyrc.json (wraz z typami błędów)

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "LanguageModelFailurePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "languageModelFailurePlugin",
      "urlsToWatch": [
        "https://api.openai.com/*",
        "http://localhost:11434/*"
      ]
    }
  ],
  "languageModelFailurePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelfailureplugin.schema.json",
    "failures": [
      "Hallucination",
      "PlausibleIncorrect",
      "BiasStereotyping"
    ]
  }
}

Ta konfiguracja symuluje tylko nieprawidłowe informacje, wiarygodne, ale niepoprawne odpowiedzi i stronniczą zawartość.

Testowanie różnych interfejsów API LLM

Różne interfejsy API usługi LLM można przetestować, konfigurując wiele wystąpień wtyczki przy użyciu różnych wzorców adresów URL:

Plik: devproxyrc.json (wiele wystąpień wtyczki)

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "LanguageModelFailurePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "openaiFailures",
      "urlsToWatch": [
        "https://api.openai.com/*"
      ]
    },
    {
      "name": "LanguageModelFailurePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "ollamaFailures",
      "urlsToWatch": [
        "http://localhost:11434/*"
      ]
    }
  ],
  "openaiFailures": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelfailureplugin.schema.json",
    "failures": ["Hallucination", "OutdatedInformation"]
  },
  "ollamaFailures": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelfailureplugin.schema.json",
    "failures": ["Overgeneralization", "IncorrectFormatStyle"]
  }
}

Wskazówka

Skonfiguruj różne scenariusze awarii dla różnych dostawców usługi LLM, aby przetestować sposób obsługi zachowań specyficznych dla dostawcy przez aplikację. Nadaj configSection nazwę usłudze LLM, którą testujesz, aby ułatwić zrozumienie i konserwację konfiguracji.

Typowe scenariusze testowania

Poniżej przedstawiono kilka zalecanych kombinacji błędów dla różnych scenariuszy testowania:

Testowanie dokładności zawartości

Przetestuj sposób obsługi nieprawidłowych lub wprowadzających w błąd informacji w aplikacji:

Plik: devproxyrc.json (tylko sekcja languageModelFailurePlugin)

{
  "languageModelFailurePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelfailureplugin.schema.json",
    "failures": [
      "Hallucination",
      "PlausibleIncorrect",
      "OutdatedInformation",
      "ContradictoryInformation"
    ]
  }
}

Testowanie stronniczości i sprawiedliwości

Przetestuj, jak aplikacja reaguje na stronniczą lub stereotypowa zawartość:

Plik: devproxyrc.json (tylko sekcja languageModelFailurePlugin)

{
  "languageModelFailurePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelfailureplugin.schema.json",
    "failures": [
      "BiasStereotyping",
      "Overgeneralization"
    ]
  }
}

Instrukcje testowania poniżej

Przetestuj sposób obsługi odpowiedzi przez aplikację, które nie są zgodne z instrukcjami:

Plik: devproxyrc.json (tylko sekcja languageModelFailurePlugin)

{
  "languageModelFailurePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelfailureplugin.schema.json",
    "failures": [
      "FailureFollowInstructions",
      "Misinterpretation",
      "IncorrectFormatStyle"
    ]
  }
}

Testowanie jakości odpowiedzi

Przetestuj sposób obsługi niejasnych lub zbyt złożonych odpowiedzi w aplikacji:

Plik: devproxyrc.json (tylko sekcja languageModelFailurePlugin)

{
  "languageModelFailurePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelfailureplugin.schema.json",
    "failures": [
      "AmbiguityVagueness",
      "OverSpecification",
      "CircularReasoning",
      "FailureDisclaimHedge"
    ]
  }
}

Uruchom serwer proxy dewelopera przy użyciu pliku konfiguracji i użyj aplikacji, aby zobaczyć, jak obsługuje symulowane błędy modelu językowego. Wtyczka przechwytuje odpowiedzi z interfejsów API modelu języka i zastępuje je syntetycznymi odpowiedziami na błędy, które wykazują skonfigurowane zachowania błędów.

Tworzenie niestandardowych scenariuszy błędów

Niestandardowe scenariusze niepowodzeń można utworzyć, dodając .prompty pliki do ~appFolder/prompts katalogu. Aby stworzyć na przykład błąd „nadużycia technicznego żargonu”:

  1. Tworzenie pliku o nazwie lmfailure_technical-jargon-overuse.prompty

  2. Zdefiniuj zachowanie przy awarii w pliku .prompty.

    ---
    name: Technical Jargon Overuse
    model:
      api: chat
    sample:
      scenario: Simulate a response that overuses technical jargon and unnecessarily complex terminology, making simple concepts difficult to understand.
    ---
    
    user:
    How do I create a simple web page?
    
    user:
    You are a language model under evaluation. Your task is to simulate incorrect responses. {{scenario}} Do not try to correct the error. Do not explain or justify the mistakes. The goal is to simulate them as realistically as possible for evaluation purposes.
    
  3. Odwołuj się do niej w konfiguracji jako TechnicalJargonOveruse

    Plik: devproxyrc.json (tylko sekcja languageModelFailurePlugin)

    {
      "languageModelFailurePlugin": {
        "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelfailureplugin.schema.json",
        "failures": [
          "TechnicalJargonOveruse",
          "Hallucination"
        ]
      }
    }
    

Następny krok

Dowiedz się więcej o pliku LanguageModelFailurePlugin.