Sdílet prostřednictvím


Přidání Logic Apps jako modulů plug-in

V podniku už máte sadu pracovních postupů, které provádějí skutečnou práci v Logic Apps. Ty můžou používat jiné automatizační služby nebo power front-endové aplikace, se kterými lidé pracují. V sémantickém jádru můžete přidat stejné pracovní postupy jako moduly plug-in, aby je mohli používat i vaši agenti.

Podívejte se například na pracovní postupy Logic Apps používané týmem sémantického jádra k zodpovězení otázek týkajících se nových žádostí o přijetí změn. S následujícími pracovními postupy má agent všechno, co potřebuje k načtení změn kódu, vyhledání souvisejících souborů a kontrole protokolů selhání.

Logic Apps

  • Vyhledávací soubory – vyhledání fragmentů kódu, které jsou relevantní pro daný problém
  • Získání souboru – načtení obsahu souboru v úložišti GitHub
  • Získání podrobností o žádosti o přijetí změn – načtení podrobností o žádosti o přijetí změn (např. název žádosti o přijetí změn, popis a autor)
  • Získání souborů PR – načtení souborů, které se změnily v žádosti o přijetí změn
  • Získání selhání sestavení a testu – načtení selhání sestavení a testu pro dané spuštění akce GitHubu
  • Získání souboru protokolu – načtení souboru protokolu pro dané spuštění akce GitHubu

Využití modulů plug-in Logic Apps pro sémantické jádro je také skvělým způsobem, jak využít více než 1 400 konektorů dostupných v Logic Apps. To znamená, že se můžete snadno připojit k široké škále služeb a systémů bez psaní kódu.

Důležité

Dnes můžete jako moduly plug-in přidat jenom standardní Logic Apps (označované také jako Logic Apps s jedním tenantem). Služba Consumption Logic Apps bude brzy k dispozici.

Import Logic Apps jako modulů plug-in

Pokud chcete přidat pracovní postupy Logic Apps do sémantického jádra, použijete stejné metody jako načítání ve specifikacích OpenAPI. Níže je uvedený ukázkový kód.

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
    }
);

Nastavení Logic Apps pro sémantické jádro

Než budete moct importovat aplikaci logiky jako modul plug-in, musíte nejprve nastavit aplikaci logiky tak, aby byla přístupná pomocí sémantického jádra. To zahrnuje povolení koncových bodů metadat a konfiguraci aplikace pro Easy Auth před dokončením importu aplikace logiky jako modulu plug-in s ověřováním.

Povolení koncových bodů metadat

Pro nejjednodušší nastavení můžete povolit neověřený přístup ke koncovým bodům metadat pro vaši aplikaci logiky. To vám umožní importovat aplikaci logiky jako modul plug-in do sémantického jádra, aniž byste museli vytvořit vlastního klienta HTTP pro zpracování ověřování pro počáteční import.

Následující soubor host.json vytvoří dva neověřené koncové body. Můžete to udělat na webu Azure Portal tak, že přejdete do konzoly kudu a upravíte soubor host.json umístěný v umístění 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" 
      } 
    } 
  } 
} 

Konfigurace aplikace pro snadné ověřování

Teď chcete zabezpečit pracovní postupy aplikace logiky, aby k nim měli přístup jenom autorizovaní uživatelé. Můžete to provést povolením snadného ověřování v aplikaci logiky. To vám umožní používat stejný mechanismus ověřování jako ostatní služby Azure, což usnadňuje správu zásad zabezpečení.

Podrobný návod k nastavení snadného ověřování najdete v tomto kurzu s názvem Trigger workflows in Standard logic apps with Easy Auth.

Pro ty, kteří už mají zkušenosti se službou Easy Auth (a už mají klientskou aplikaci Entra, kterou chcete použít), je to konfigurace, kterou budete chtít publikovat do správy Azure.

#!/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"

Použití Logic Apps s sémantickým jádrem jako modulem plug-in

Teď, když máte zabezpečenou aplikaci logiky a povolené koncové body metadat, jste dokončili všechny pevné části. Aplikaci logiky teď můžete importovat jako modul plug-in do sémantického jádra pomocí metody importu OpenAPI.

Při vytváření modulu plug-in budete chtít poskytnout vlastního klienta HTTP, který dokáže zpracovat ověřování pro vaši aplikaci logiky. To vám umožní používat modul plug-in v agentech umělé inteligence, aniž byste se museli starat o ověřování.

Níže je příklad v jazyce C#, který využívá interaktivní ověřování k získání tokenu a ověření uživatele pro aplikaci logiky.

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)
            }
        },
    }
));

Další kroky

Teď, když víte, jak vytvořit modul plug-in, se teď můžete naučit, jak je používat s vaším agentem AI. V závislosti na typu funkcí, které jste přidali do modulů plug-in, byste měli postupovat podle různých vzorů. Informace o funkcích načítání najdete v článku o funkcích načítání . Informace o funkcích automatizace úloh najdete v článku o funkcích automatizace úloh.