Delen via


Logic Apps toevoegen als invoegtoepassingen

Vaak hebt u in een onderneming al een set werkstromen die echt werk uitvoeren in Logic Apps. Deze kunnen worden gebruikt door andere automatiseringsservices of krachtige front-endtoepassingen waarmee mensen communiceren. In Semantic Kernel kunt u dezelfde werkstromen toevoegen als plug-ins, zodat uw agents ze ook kunnen gebruiken.

Neem bijvoorbeeld de Logic Apps-werkstromen die door het Semantische kernelteam worden gebruikt om vragen over nieuwe PULL's te beantwoorden. Met de volgende werkstromen heeft een agent alles wat nodig is om codewijzigingen op te halen, gerelateerde bestanden te zoeken en foutenlogboeken te controleren.

Logic Apps

  • Bestanden zoeken: codefragmenten zoeken die relevant zijn voor een bepaald probleem
  • Bestand ophalen: de inhoud van een bestand ophalen in de GitHub-opslagplaats
  • Pull-gegevens ophalen : om de details van een pull-aanvraag op te halen (bijvoorbeeld de titel, beschrijving en auteur van de pull-aanvraag)
  • PULL-bestanden ophalen: om de bestanden op te halen die zijn gewijzigd in een pull-aanvraag
  • Build- en testfouten ophalen: om de build- en testfouten op te halen voor een bepaalde GitHub-actieuitvoering
  • Logboekbestand ophalen: het logboekbestand ophalen voor een bepaalde GitHub-actieuitvoering

Het gebruik van Logic Apps voor Semantische Kernel-invoegtoepassingen is ook een uitstekende manier om te profiteren van de meer dan 1400 connectors die beschikbaar zijn in Logic Apps. Dit betekent dat u eenvoudig verbinding kunt maken met een groot aantal services en systemen zonder code te schrijven.

Belangrijk

Tegenwoordig kunt u alleen standaard Logic Apps (ook wel logic apps met één tenant genoemd) toevoegen als invoegtoepassingen. Logic Apps voor verbruik zijn binnenkort beschikbaar.

Logic Apps importeren als invoegtoepassingen

Als u Logic Apps-werkstromen wilt toevoegen aan Semantische kernel, gebruikt u dezelfde methoden als het laden in een OpenAPI-specificaties. Hieronder ziet u een voorbeeldcode.

await kernel.ImportPluginFromOpenApiAsync(
    pluginName: "openapi_plugin",
    uri: new Uri("https://example.azurewebsites.net/swagger.json"),
    executionParameters: new OpenApiFunctionExecutionParameters()
    {
        // Determines whether payload parameter names are augmented with namespaces.
        // Namespaces prevent naming conflicts by adding the parent parameter name
        // as a prefix, separated by dots
        EnablePayloadNamespacing = true
    }
);

Logic Apps instellen voor Semantische kernel

Voordat u een logische app als invoegtoepassing kunt importeren, moet u eerst de logische app instellen om toegankelijk te zijn via Semantische kernel. Dit omvat het inschakelen van metagegevenseindpunten en het configureren van uw toepassing voor Easy Auth voordat u de logische app eindelijk importeert als een invoegtoepassing met verificatie.

Metagegevenseindpunten inschakelen

Voor de eenvoudigste installatie kunt u niet-geverifieerde toegang tot de metagegevenseindpunten voor uw logische app inschakelen. Hierdoor kunt u uw logische app als invoegtoepassing importeren in Semantic Kernel zonder dat u een aangepaste HTTP-client hoeft te maken om verificatie voor de eerste import af te handelen.

In het onderstaande host.json-bestand worden twee niet-geverifieerde eindpunten gemaakt. U kunt dit doen in Azure Portal door naar de kudu-console te gaan en het host.json bestand te bewerken dat zich bevindt op C:\home\site\wwwroot\host.json.

{ 
  "version": "2.0", 
  "extensionBundle": { 
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Workflows", 
    "version": "[1.*, 2.0.0)" 
  }, 
  "extensions": { 
    "http": { 
      "routePrefix": "" 
    }, 
    "workflow": { 
      "MetadataEndpoints": { 
        "plugin": { 
          "enable": true, 
          "Authentication":{ 
              "Type":"Anonymous" 
          } 
        }, 
        "openapi": { 
          "enable": true, 
          "Authentication":{ 
              "Type":"Anonymous" 
          } 
        } 
      }, 
      "Settings": { 
        "Runtime.Triggers.RequestTriggerDefaultApiVersion": "2020-05-01-preview" 
      } 
    } 
  } 
} 

Uw toepassing configureren voor Easy Auth

U wilt nu uw werkstromen voor logische apps beveiligen, zodat alleen geautoriseerde gebruikers er toegang toe hebben. U kunt dit doen door Easy Auth in te schakelen voor uw logische app. Hierdoor kunt u hetzelfde verificatiemechanisme gebruiken als uw andere Azure-services, zodat u uw beveiligingsbeleid eenvoudiger kunt beheren.

Raadpleeg deze zelfstudie met de titel Triggerwerkstromen in Standaard logische apps met Easy Auth voor een uitgebreid overzicht van het instellen van Easy Auth.

Voor degenen die al bekend zijn met Easy Auth (en al een Entra-client-app hebben die u wilt gebruiken), is dit de configuratie die u wilt posten naar Azure-beheer.

#!/bin/bash

# Variables
subscription_id="[SUBSCRIPTION_ID]"
resource_group="[RESOURCE_GROUP]"
app_name="[APP_NAME]"
api_version="2022-03-01"
arm_token="[ARM_TOKEN]"
tenant_id="[TENANT_ID]"
aad_client_id="[AAD_CLIENT_ID]"
object_ids=("[OBJECT_ID_FOR_USER1]" "[OBJECT_ID_FOR_USER2]" "[OBJECT_ID_FOR_APP1]")

# Convert the object_ids array to a JSON array
object_ids_json=$(printf '%s\n' "${object_ids[@]}" | jq -R . | jq -s .)

# Request URL
url="https://management.azure.com/subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.Web/sites/$app_name/config/authsettingsV2?api-version=$api_version"

# JSON payload
json_payload=$(cat <<EOF
{
    "properties": {
        "platform": {
            "enabled": true,
            "runtimeVersion": "~1"
        },
        "globalValidation": {
            "requireAuthentication": true,
            "unauthenticatedClientAction": "AllowAnonymous"
        },
        "identityProviders": {
            "azureActiveDirectory": {
                "enabled": true,
                "registration": {
                    "openIdIssuer": "https://sts.windows.net/$tenant_id/",
                    "clientId": "$aad_client_id"
                },
                "validation": {
                    "jwtClaimChecks": {},
                    "allowedAudiences": [
                        "api://$aad_client_id"
                    ],
                    "defaultAuthorizationPolicy": {
                        "allowedPrincipals": {
                            "identities": $object_ids_json
                        }
                    }
                }
            },
            "facebook": {
                "enabled": false,
                "registration": {},
                "login": {}
            },
            "gitHub": {
                "enabled": false,
                "registration": {},
                "login": {}
            },
            "google": {
                "enabled": false,
                "registration": {},
                "login": {},
                "validation": {}
            },
            "twitter": {
                "enabled": false,
                "registration": {}
            },
            "legacyMicrosoftAccount": {
                "enabled": false,
                "registration": {},
                "login": {},
                "validation": {}
            },
            "apple": {
                "enabled": false,
                "registration": {},
                "login": {}
            }
        }
    }
}
EOF
)

# HTTP PUT request
curl -X PUT "$url" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $arm_token" \
    -d "$json_payload"

Logic Apps gebruiken met Semantic Kernel als invoegtoepassing

Nu uw logische app is beveiligd en de metagegevenseindpunten zijn ingeschakeld, hebt u alle harde onderdelen voltooid. U kunt uw logische app nu importeren als een invoegtoepassing in Semantic Kernel met behulp van de OpenAPI-importmethode.

Wanneer u uw invoegtoepassing maakt, moet u een aangepaste HTTP-client opgeven die de verificatie voor uw logische app kan verwerken. Hierdoor kunt u de invoegtoepassing in uw AI-agents gebruiken zonder dat u zich zorgen hoeft te maken over de verificatie.

Hieronder ziet u een voorbeeld in C# dat gebruikmaakt van interactieve verificatie om een token te verkrijgen en de gebruiker te verifiëren voor de logische app.

string ClientId = "[AAD_CLIENT_ID]";
string TenantId = "[TENANT_ID]";
string Authority = $"https://login.microsoftonline.com/{TenantId}";
string[] Scopes = new string[] { "api://[AAD_CIENT_ID]/SKLogicApp" };

var app = PublicClientApplicationBuilder.Create(ClientId)
            .WithAuthority(Authority)
            .WithDefaultRedirectUri() // Uses http://localhost for a console app
            .Build();

AuthenticationResult authResult = null;
try
{
    authResult = await app.AcquireTokenInteractive(Scopes).ExecuteAsync();
}
catch (MsalException ex)
{
    Console.WriteLine("An error occurred acquiring the token: " + ex.Message);
}

// Add the plugin to the kernel with a custom HTTP client for authentication
kernel.Plugins.Add(await kernel.ImportPluginFromOpenApiAsync(
    pluginName: "[NAME_OF_PLUGIN]",
    uri: new Uri("https://[LOGIC_APP_NAME].azurewebsites.net/swagger.json"),
    executionParameters: new OpenApiFunctionExecutionParameters()
    {
        HttpClient = new HttpClient()
        {
            DefaultRequestHeaders =
            {
                Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken)
            }
        },
    }
));

Volgende stappen

Nu u weet hoe u een invoegtoepassing maakt, kunt u nu leren hoe u deze kunt gebruiken met uw AI-agent. Afhankelijk van het type functies dat u aan uw invoegtoepassingen hebt toegevoegd, zijn er verschillende patronen die u moet volgen. Raadpleeg het artikel over het ophalen van functies voor het ophalen van functies . Raadpleeg het artikel over het gebruik van taakautomatiseringsfuncties voor taakautomatiseringsfuncties .