I crediti Copilot finanziano l'utilizzo degli agenti e di Copilot che crei con Copilot Studio nei tuoi ambienti Power Platform. In qualità di amministratore, si allocano crediti agli ambienti che ne hanno bisogno e si decide cosa accade quando un ambiente esaurisce i crediti allocati. Oltre all'esperienza dell'interfaccia di amministrazione di Power Platform, è possibile gestire Copilot allocazioni di credito con codice usando l'API Power Platform e gli SDK di amministrazione (Admin). L'automazione dell'allocazione del credito è utile quando si distribuisce la capacità in molti ambienti, si standardizza il comportamento di eccedenza o si gestiscono le allocazioni come parte di una pipeline di distribuzione.
In questa esercitazione, scopri come:
- Gestire i crediti Copilot nell'interfaccia di amministrazione di Power Platform.
- Eseguire l'autenticazione usando l'API Power Platform.
- Visualizzare i crediti Copilot disponibili per allocare.
- Assegnare crediti Copilot a un ambiente.
- Controlla se un ambiente attinge alla capacità del tenant.
I crediti Copilot sono rappresentati dall'ID di autorizzazione MCSMessages e vengono gestiti tramite le operazioni licensing/allocationsV2 dell'API Power Platform. L'operazione allocationsV2/availability segnala la quantità di capacità disponibile per l'allocazione e l'operazione allocationsV2 scrive l'allocazione di un ambiente. Tutti gli esempi programmatici in questo articolo usano la versione 2024-10-01dell'API .
Ogni allocazione di ambiente include un set di regole di imposizione che determinano cosa accade quando l'ambiente utilizza i crediti allocati. L'opzione Draw from the available capacity in my tenant nell'interfaccia di amministrazione corrisponde alla regola di applicazione TenantPool: quando è abilitata, l'ambiente continua ad attingere alla capacità del tenant non allocata dopo l'esaurimento della propria allocazione; quando è disabilitata, l'ambiente non può superare la propria allocazione.
Avvertimento
Se una regola del gruppo di ambienti pubblicata controlla Usa la capacità disponibile nel tenant, non è possibile modificare l'impostazione per un ambiente specifico. Gli aggiornamenti tramite l'interfaccia di amministrazione di Power Platform, l'API Power Platform o gli SDK di amministrazione vengono rifiutati con l'errore TenantPoolLockedByPolicy . Modificare e ripubblicare la regola per il gruppo di ambiente oppure rimuovere l'ambiente dal gruppo per gestire l'impostazione in modo indipendente. Dopo la rimozione, l'ambiente mantiene l'ultimo valore applicato dal gruppo, ma l'impostazione diventa modificabile. Per altre informazioni sulle regole di gruppo disponibili, vedere Regole per i gruppi di ambiente.
Prerequisiti
Registrazione dell'app configurata per l'API Power Platform. Prendi nota degli ID applicazione (client) e ID directory (tenant) della registrazione dell'app.
Autorizzazione per gestire licenze e capacità. Accedere come utente con il ruolo amministratore di Power Platform o amministratore globale o un ruolo equivalente che può gestire licenze e capacità.
Per gli esempi dell'SDK, installa l'SDK pubblicato ogni mese nella sua raccolta pubblica:
dotnet add package Microsoft.PowerPlatform.Management
pip install powerplatform-management
Gestire le allocazioni di crediti di Copilot
Questa sezione mostra lo stesso flusso end-to-end — verificare quali crediti sono disponibili, allocare crediti a un ambiente e controllare se l'ambiente attinge alla capacità del tenant — nel centro di amministrazione di Power Platform e in ciascun SDK. Usare le schede per passare dall'interfaccia di amministrazione alla lingua preferita.
Accedi all'interfaccia di amministrazione di Power Platform.
Nel riquadro di spostamento, seleziona Licenze.
In Prodotti selezionare Copilot Studio e quindi selezionare Gestisci crediti Copilot.
Selezionare l'ambiente che si desidera gestire. Usare la casella di ricerca per trovare un ambiente in base al nome.
In Allocare capacità immettere il numero di crediti Copilot da allocare all'ambiente. Il riquadro mostra quanti crediti vengono utilizzati, quanti sono già allocati e quanti sono disponibili per l'allocazione dal tenant.
In Eccessi di capacità, seleziona o deseleziona Estrai dalla capacità disponibile nel tenant per controllare cosa accade quando l'ambiente esaurisce la capacità allocata:
-
Selezionato: dopo l'utilizzo dei crediti allocati dell'ambiente, continua a trarre dalla capacità non allocata del tenant.
-
Azzerato: l'ambiente è limitato alla propria allocazione e smette di consumare una volta esaurita l'allocazione.
Seleziona Salva.
L'esempio seguente esegue l'accesso in modo interattivo come utente corrente, legge i crediti Copilot disponibili da allocare, assegna i crediti a un ambiente e disattiva Usa la capacità disponibile nel tenant in modo che l'ambiente sia limitato all'allocazione assegnata.
# Requires the MSAL.PS module: Install-Module MSAL.PS -Scope CurrentUser
Import-Module "MSAL.PS"
$clientId = "<application (client) ID of your app registration>"
$tenantId = "<directory (tenant) ID>"
$environmentId = "<environment ID>"
$apiBaseUrl = "https://api.powerplatform.com"
$apiVersion = "2024-10-01"
# Sign in interactively and request a token for the Power Platform API
$auth = Get-MsalToken -ClientId $clientId -TenantId $tenantId -Scope "https://api.powerplatform.com/.default" -Interactive
$headers = @{ Authorization = "Bearer $($auth.AccessToken)" }
# 1. View the Copilot Credits available to allocate for the environment
$filter = [uri]::EscapeDataString("environmentId eq '$environmentId' and EntitlementId in ('MCSMessages')")
$availability = Invoke-RestMethod -Method Get `
-Uri "$apiBaseUrl/licensing/allocationsV2/availability?api-version=$apiVersion&`$filter=$filter" `
-Headers $headers
$availability.entitlementAllocationsAvailable |
ForEach-Object { Write-Host "$($_.entitlementId): $($_.availableQuantity) available" }
# 2. Allocate Copilot Credits to the environment and turn off tenant capacity draw
$allocationBody = @{
scope = @{ environmentId = $environmentId }
allocatedEntitlements = @(
@{
entitlementId = "MCSMessages"
allocation = @{ quantity = 5000 }
enforcementRules = @(
# Disable TenantPool so the environment is capped at its allocation.
# Set enabled = $true to let the environment draw from tenant capacity.
@{ ruleType = "TenantPool"; enabled = $false }
)
}
)
} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Put `
-Uri "$apiBaseUrl/licensing/allocationsV2?api-version=$apiVersion" `
-Headers $headers -ContentType "application/json" -Body $allocationBody
Write-Host "Updated Copilot credit allocation for environment $environmentId"
L'esempio seguente esegue l'accesso in modo interattivo utilizzando l'ID client della registrazione dell'app, legge i crediti Copilot disponibili da allocare, alloca i crediti a un ambiente e disattiva Draw from the available capacity in my tenant in modo che l'ambiente sia limitato alla quota allocata.
using Microsoft.PowerPlatform.Management;
using Microsoft.PowerPlatform.Management.Models;
// Create an interactive client using your app registration's client ID.
// A browser window opens for sign-in.
var factory = new ServiceClientFactory();
var client = factory.Create("YOUR_CLIENT_ID");
var environmentId = "<environment ID>";
var apiVersion = "2024-10-01";
// 1. View the Copilot Credits available to allocate for the environment
var availability = await client.Licensing.AllocationsV2.Availability.GetAsync(config =>
{
config.QueryParameters.ApiVersion = apiVersion;
config.QueryParameters.Filter =
$"environmentId eq '{environmentId}' and EntitlementId in (MCSMessages)";
});
foreach (var entitlement in availability.EntitlementAllocationsAvailable)
{
Console.WriteLine($"{entitlement.EntitlementId}: {entitlement.AvailableQuantity} available");
}
// 2. Allocate Copilot Credits to the environment and turn off tenant capacity draw
var request = new AllocationPutRequestModel
{
Scope = new ScopeModel { EnvironmentId = environmentId },
AllocatedEntitlements = new List<EntitlementAllocationModel>
{
new EntitlementAllocationModel
{
EntitlementId = "MCSMessages",
Allocation = new AllocationModel { Quantity = 5000 },
EnforcementRules = new List<AllocationEnforcementRule>
{
// Disable TenantPool so the environment is capped at its allocation.
// Set Enabled = true to let the environment draw from tenant capacity.
new AllocationEnforcementRule
{
RuleType = AllocationEnforcementRuleTypes.TenantPool,
Enabled = false
}
}
}
}
};
await client.Licensing.AllocationsV2.PutAsync(request, config =>
{
config.QueryParameters.ApiVersion = apiVersion;
});
Console.WriteLine($"Updated Copilot credit allocation for environment {environmentId}");
L'esempio seguente esegue l'accesso in modo interattivo utilizzando l'ID client della registrazione dell'app, legge i crediti Copilot disponibili da allocare, alloca i crediti a un ambiente e disattiva Draw from the available capacity in my tenant in modo che l'ambiente sia limitato alla quota allocata.
import asyncio
from azure.identity import InteractiveBrowserCredential
from kiota_abstractions.base_request_configuration import RequestConfiguration
from kiota_authentication_azure.azure_identity_authentication_provider import (
AzureIdentityAuthenticationProvider,
)
from kiota_http.httpx_request_adapter import HttpxRequestAdapter
from mspp_management.service_client_base import ServiceClientBase
from mspp_management.licensing.allocations_v2.allocations_v2_request_builder import (
AllocationsV2RequestBuilder,
)
from mspp_management.licensing.allocations_v2.availability.availability_request_builder import (
AvailabilityRequestBuilder,
)
from mspp_management.models.allocation_put_request_model import AllocationPutRequestModel
from mspp_management.models.scope_model import ScopeModel
from mspp_management.models.entitlement_allocation_model import EntitlementAllocationModel
from mspp_management.models.allocation_model import AllocationModel
from mspp_management.models.allocation_enforcement_rule import AllocationEnforcementRule
from mspp_management.models.allocation_enforcement_rule_types import (
AllocationEnforcementRuleTypes,
)
API_VERSION = "2024-10-01"
async def manage_copilot_credits(client: ServiceClientBase, environment_id: str):
# 1. View the Copilot Credits available to allocate for the environment
query_params = AvailabilityRequestBuilder.AvailabilityRequestBuilderGetQueryParameters(
api_version=API_VERSION,
filter=f"environmentId eq '{environment_id}' and EntitlementId in (MCSMessages)",
)
availability = await client.licensing.allocations_v2.availability.get(
request_configuration=RequestConfiguration(query_parameters=query_params)
)
for entitlement in availability.entitlement_allocations_available:
print(f"{entitlement.entitlement_id}: {entitlement.available_quantity} available")
# 2. Allocate Copilot Credits to the environment and turn off tenant capacity draw
# Disable TenantPool so the environment is capped at its allocation.
# Set enabled = True to let the environment draw from tenant capacity.
tenant_pool_rule = AllocationEnforcementRule()
tenant_pool_rule.rule_type = AllocationEnforcementRuleTypes.TenantPool
tenant_pool_rule.enabled = False
entitlement = EntitlementAllocationModel()
entitlement.entitlement_id = "MCSMessages"
entitlement.allocation = AllocationModel()
entitlement.allocation.quantity = 5000
entitlement.enforcement_rules = [tenant_pool_rule]
request = AllocationPutRequestModel()
request.scope = ScopeModel()
request.scope.environment_id = environment_id
request.allocated_entitlements = [entitlement]
put_params = AllocationsV2RequestBuilder.AllocationsV2RequestBuilderPutQueryParameters(
api_version=API_VERSION,
)
await client.licensing.allocations_v2.put(
request, request_configuration=RequestConfiguration(query_parameters=put_params)
)
print(f"Updated Copilot credit allocation for environment {environment_id}")
async def main():
# Sign in interactively using your app registration's client ID.
credential = InteractiveBrowserCredential(client_id="YOUR_CLIENT_ID")
auth_provider = AzureIdentityAuthenticationProvider(
credentials=credential,
scopes=["https://api.powerplatform.com/.default"],
)
adapter = HttpxRequestAdapter(authentication_provider=auth_provider)
client = ServiceClientBase(adapter)
await manage_copilot_credits(client, environment_id="<environment ID>")
asyncio.run(main())