Udostępnij przez


Umiejętności poznawcze warunkowe

Umiejętność warunkowa umożliwia scenariusze usługi Azure AI Search, które wymagają operacji logicznej w celu określenia danych do przypisania do danych wyjściowych. Te scenariusze obejmują filtrowanie, przypisywanie wartości domyślnej i scalanie danych na podstawie warunku.

Poniższy pseudokod demonstruje, co osiąga umiejętność warunkowa:

if (condition) 
    { output = whenTrue } 
else 
    { output = whenFalse } 

Uwaga

Ta umiejętność nie jest powiązana z narzędziami Foundry Tools. Nie można go spełnić i nie ma kluczowego wymagania narzędzia Foundry Tools.

@odata.type

Microsoft.Skills.Util.ConditionalSkill

Pola oceniane

Ta umiejętność jest specjalna, ponieważ jego dane wejściowe są oceniane pola.

Następujące elementy są prawidłowymi wartościami wyrażenia:

  • Ścieżki adnotacji (ścieżki w wyrażeniach muszą być rozdzielane przez "$(" i ")")
    Przykłady:

        "= $(/document)"
        "= $(/document/content)"
    
  • Literały (ciągi, liczby, true, false, null)
    Przykłady:

       "= 'this is a string'"   // string (note the single quotation marks)
       "= 34"                   // number
       "= true"                 // Boolean
       "= null"                 // null value
    
  • Wyrażenia używające operatorów porównania (==, !=, =, >>= , <=, <)
    Przykłady:

        "= $(/document/language) == 'en'"
        "= $(/document/sentiment) >= 0.5"
    
  • Wyrażenia używające operatorów logicznych (&&, ||, !, ^)
    Przykłady:

        "= $(/document/language) == 'en' && $(/document/sentiment) > 0.5"
        "= !true"
    
  • Wyrażenia używające operatorów liczbowych (+, -, *, /, %)
    Przykłady:

        "= $(/document/sentiment) + 0.5"         // addition
        "= $(/document/totalValue) * 1.10"       // multiplication
        "= $(/document/lengthInMeters) / 0.3049" // division
    

Ponieważ umiejętności warunkowe obsługują ocenę, można jej używać w scenariuszach przekształcania pomocniczego. Zobacz na przykład definicję umiejętności 4.

Dane wejściowe umiejętności

W danych wejściowych jest rozróżniana wielkość liter.

Dane wejściowe opis
warunek / stan / kondycja (select according to the specific context) Te dane wejściowe to oceniane pole , które reprezentuje warunek do obliczenia. Ten warunek powinien mieć wartość logiczną (prawda lub fałsz).
Przykłady:
= prawda
"= $(/document/language) =='fr'"
= $(/document/pages/*/language) == $(/document/expectedLanguage)
whenTrue Te dane wejściowe to pole oceniane, które reprezentuje wartość, która ma zostać zwrócona, jeśli warunek zostanie obliczony na wartość true. Ciągi stałe powinny być zwracane w pojedynczych cudzysłowach (" i ").
Przykładowe wartości:
= 'umowa'
"= $(/document/contractType)"
"= $(/document/entities/*)"
whenFalse Te dane wejściowe to oceniane pole , które reprezentuje wartość, która ma zostać zwrócona, jeśli warunek zostanie obliczony na wartość false.
Przykładowe wartości:
= 'kontrakt'
"= $(/document/contractType)"
"= $(/document/entities/*)"

Dane wyjściowe umiejętności

Istnieje jedno wyjście o nazwie "output". Zwraca wartość whenFalse , jeśli warunek ma wartość false lub whenTrue , jeśli warunek ma wartość true.

Przykłady

Przykładowa definicja umiejętności 1. Filtrowanie dokumentów w celu zwrócenia tylko dokumentów francuskich

Poniższe dane wyjściowe zwracają tablicę zdań ("/document/frenchSentences"), jeśli język dokumentu jest francuski. Jeśli język nie jest francuski, wartość jest ustawiona na wartość null.

{
    "@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
    "context": "/document",
    "inputs": [
        { "name": "condition", "source": "= $(/document/language) == 'fr'" },
        { "name": "whenTrue", "source": "/document/sentences" },
        { "name": "whenFalse", "source": "= null" }
    ],
    "outputs": [ { "name": "output", "targetName": "frenchSentences" } ]
}

Jeśli element "/document/frenchSentences" jest używany jako kontekst innej umiejętności, ta umiejętność jest uruchamiana tylko wtedy, gdy wartość "/document/frenchSentences" nie jest ustawiona na wartość null.

Przykładowa definicja umiejętności 2: ustaw wartość domyślną dla wartości, która nie istnieje

Poniższe dane wyjściowe tworzą adnotację ("/document/languageWithDefault"), która jest ustawiona na język dokumentu lub na wartość "es", jeśli język nie jest ustawiony.

{
    "@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
    "context": "/document",
    "inputs": [
        { "name": "condition", "source": "= $(/document/language) == null" },
        { "name": "whenTrue", "source": "= 'es'" },
        { "name": "whenFalse", "source": "= $(/document/language)" }
    ],
    "outputs": [ { "name": "output", "targetName": "languageWithDefault" } ]
}

Przykładowa definicja umiejętności 3: scalanie wartości z dwóch pól do jednego

W tym przykładzie niektóre zdania mają właściwość frenchSentiment . Zawsze, gdy właściwość frenchSentiment ma wartość null, chcemy użyć wartości englishSentiment. Przypisujemy dane wyjściowe do elementu członkowskiego o nazwie sentiment ("/document/sentences/*/sentiment").

{
    "@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
    "context": "/document/sentences/*",
    "inputs": [
        { "name": "condition", "source": "= $(/document/sentences/*/frenchSentiment) == null" },
        { "name": "whenTrue", "source": "/document/sentences/*/englishSentiment" },
        { "name": "whenFalse", "source": "/document/sentences/*/frenchSentiment" }
    ],
    "outputs": [ { "name": "output", "targetName": "sentiment" } ]
}

Przykład przekształcenia

Przykładowa definicja umiejętności 4: Przekształcanie danych w jednym polu

W tym przykładzie otrzymujemy tonację z zakresu od 0 do 1. Chcemy przekształcić go w przedziały od -1 do 1. Aby wykonać tę drobną transformację, możemy użyć umiejętności warunkowych.

W tym przykładzie nie używamy warunkowego aspektu umiejętności, ponieważ warunek jest zawsze spełniony.

{
    "@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
    "context": "/document/sentences/*",
    "inputs": [
        { "name": "condition", "source": "= true" },
        { "name": "whenTrue", "source": "= $(/document/sentences/*/sentiment) * 2 - 1" },
        { "name": "whenFalse", "source": "= 0" }
    ],
    "outputs": [ { "name": "output", "targetName": "normalizedSentiment" } ]
}

Specjalne uwagi

Niektóre parametry są oceniane, dlatego należy zachować szczególną ostrożność, aby postępować zgodnie z udokumentowanym wzorcem. Wyrażenia muszą zaczynać się od znaku równości. Ścieżka musi być rozdzielana znakami "$(" i ")". Pamiętaj, aby umieścić ciągi w pojedynczych cudzysłowach. Ułatwia to ewaluatorowi rozróżnienie ciągów i rzeczywistych ścieżek i operatorów. Ponadto pamiętaj, aby umieścić białe znaki wokół operatorów (na przykład znak "*" w ścieżce oznacza coś innego niż mnożenie).

Następne kroki