Delen via


Voorwaardelijke cognitieve vaardigheid

De voorwaardelijke vaardigheid maakt Azure AI Search-scenario's mogelijk waarvoor een Boole-bewerking is vereist om de gegevens te bepalen die moeten worden toegewezen aan een uitvoer. Deze scenario's omvatten filteren, een standaardwaarde toewijzen en gegevens samenvoegen op basis van een voorwaarde.

De volgende pseudocode laat zien wat de voorwaardelijke vaardigheid bereikt:

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

Notitie

Deze vaardigheid is niet gebonden aan Azure AI-services. Het is niet factureerbaar en heeft geen sleutelvereiste voor Azure AI-services.

@odata.type

Microsoft.Skills.Util.ConditionalSkill

Geëvalueerde velden

Deze vaardigheid is speciaal omdat de invoer velden zijn geëvalueerd.

De volgende items zijn geldige waarden van een expressie:

  • Annotatiepaden (paden in expressies moeten worden gescheiden door '$(" en "))
    Voorbeelden:

        "= $(/document)"
        "= $(/document/content)"
    
  • Letterlijke waarden (tekenreeksen, getallen, waar, onwaar, null)
    Voorbeelden:

       "= 'this is a string'"   // string (note the single quotation marks)
       "= 34"                   // number
       "= true"                 // Boolean
       "= null"                 // null value
    
  • Expressies die vergelijkingsoperatoren gebruiken (==, !=, >=, >= <) <
    Voorbeelden:

        "= $(/document/language) == 'en'"
        "= $(/document/sentiment) >= 0.5"
    
  • Expressies die booleaanse operatoren gebruiken (&&, ||, !, ^)
    Voorbeelden:

        "= $(/document/language) == 'en' && $(/document/sentiment) > 0.5"
        "= !true"
    
  • Expressies die gebruikmaken van numerieke operatoren (+, -, *, /, %)
    Voorbeelden:

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

Omdat de voorwaardelijke vaardigheid evaluatie ondersteunt, kunt u deze gebruiken in scenario's met secundaire transformaties. Zie bijvoorbeeld vaardigheidsdefinitie 4.

Invoer van vaardigheden

De invoer is hoofdlettergevoelig.

Invoer Beschrijving
voorwaarde Deze invoer is een geëvalueerd veld dat de voorwaarde aangeeft die moet worden geëvalueerd. Deze voorwaarde moet resulteren in een Booleaanse waarde (waar of onwaar).
Voorbeelden:
"= true"
"= $(/document/language) =='fr'"
"= $(/document/pages/*/language) == $(/document/expectedLanguage)"
whenTrue Deze invoer is een geëvalueerd veld dat de waarde aangeeft die moet worden geretourneerd als de voorwaarde waar is. Constanten moeten tussen enkele aanhalingstekens (' en ') worden geretourneerd.
Voorbeeldwaarden:
"= "contract""
"= $(/document/contractType)"
"= $(/document/entiteiten/*)"
whenFalse Deze invoer is een geëvalueerd veld dat de waarde aangeeft die moet worden geretourneerd als de voorwaarde wordt geëvalueerd op onwaar.
Voorbeeldwaarden:
"= "contract""
"= $(/document/contractType)"
"= $(/document/entiteiten/*)"

Uitvoer van vaardigheden

Er is één uitvoer die simpelweg 'uitvoer' wordt genoemd. Deze retourneert de waarde wanneerFalse als de voorwaarde onwaar is of wanneerTrue als de voorwaarde waar is.

Voorbeelden

Voorbeeld van vaardigheidsdefinitie 1: Documenten filteren om alleen Franse documenten te retourneren

De volgende uitvoer retourneert een matrix met zinnen (/document/frenchSentences) als de taal van het document Frans is. Als de taal geen Frans is, wordt de waarde ingesteld op 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" } ]
}

Als '/document/frenchSentences' wordt gebruikt als de context van een andere vaardigheid, wordt die vaardigheid alleen uitgevoerd als '/document/frenchSentences' niet is ingesteld op null.

Voorbeelddefinitie 2: Een standaardwaarde instellen voor een waarde die niet bestaat

In de volgende uitvoer wordt een aantekening (/document/languageWithDefault) gemaakt die is ingesteld op de taal van het document of op 'es' als de taal niet is ingesteld.

{
    "@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" } ]
}

Voorbeeld van vaardigheidsdefinitie 3: waarden uit twee velden samenvoegen in één

In dit voorbeeld hebben sommige zinnen een frenchSentiment-eigenschap . Wanneer de eigenschap frenchSentiment null is, willen we de englishSentiment-waarde gebruiken. We wijzen de uitvoer toe aan een lid dat sentiment heet ("/document/zinnen/*/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" } ]
}

Voorbeeld van transformatie

Definitie van voorbeeldvaardigheden 4: Gegevenstransformatie in één veld

In dit voorbeeld ontvangen we een gevoel tussen 0 en 1. We willen deze transformeren tussen -1 en 1. We kunnen de voorwaardelijke vaardigheid gebruiken om deze kleine transformatie uit te voeren.

In dit voorbeeld gebruiken we niet het voorwaardelijke aspect van de vaardigheid, omdat de voorwaarde altijd waar is.

{
    "@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" } ]
}

Speciale overwegingen

Sommige parameters worden geëvalueerd, dus u moet vooral voorzichtig zijn om het gedocumenteerde patroon te volgen. Expressies moeten beginnen met een gelijkteken. Een pad moet worden gescheiden door '$(" en ")'. Zorg ervoor dat u tekenreeksen tussen enkele aanhalingstekens plaatst. Dit helpt de evaluator om onderscheid te maken tussen tekenreeksen en werkelijke paden en operators. Zorg er ook voor dat u witruimte rond operators plaatst (bijvoorbeeld een '*' in een pad betekent iets anders dan vermenigvuldigen).

Volgende stappen