Copilot Credits financia el uso de agentes y de Copilot que creas con Copilot Studio en tus entornos de Power Platform. Como administrador, asigna créditos a los entornos que los necesitan y decide lo que sucede cuando un entorno se queda sin sus créditos asignados. Además de la experiencia en el Centro de administración de Power Platform, puede administrar las asignaciones de créditos de Copilot mediante código con la API de Power Platform y los SDK de administración (Admin). La automatización de la asignación de crédito es útil al distribuir la capacidad en muchos entornos, estandarizar el comportamiento de uso por encima del límite o administrar asignaciones como parte de una canalización de implementación.
En este tutorial, aprenderá a:
- Administrar los créditos de Copilot en el centro de administración de Power Platform.
- Autentíquese mediante Power Platform API.
- Vea los créditos de Copilot disponibles para asignar.
- Asignar Créditos de Copilot a un entorno.
- Controla si un entorno usa la capacidad del inquilino.
Los créditos de Copilot se representan mediante el identificador de derechos MCSMessages y se administran a través de las operaciones licensing/allocationsV2 de la API de Power Platform. La operación allocationsV2/availability indica cuánta capacidad hay disponible para asignar, y la operación allocationsV2 escribe la asignación de un entorno. Todos los ejemplos de programación de este artículo usan la versión 2024-10-01de API .
Cada asignación de entorno incluye un conjunto de reglas de cumplimiento que determinan lo que sucede cuando el entorno consume sus créditos asignados. La opción Usar la capacidad disponible de mi inquilino del centro de administración se corresponde con la TenantPool regla de aplicación: cuando está habilitada, el entorno sigue usando la capacidad no asignada del inquilino una vez agotada su propia asignación; cuando está deshabilitada, el entorno queda limitado a su asignación.
Warning
Si una regla de grupo de entornos publicada controla Usar la capacidad disponible en mi inquilino, no puede invalidar la configuración de un entorno individual. Las actualizaciones a través del Centro de administración de Power Platform, Power Platform API o los SDK de administración se rechazan con el TenantPoolLockedByPolicy error. Cambie y vuelva a publicar la regla para el grupo de entornos o quite el entorno del grupo para administrar la configuración de forma independiente. Después de la eliminación, el entorno conserva el valor aplicado por última vez por el grupo, pero la configuración se vuelve editable. Para obtener más información sobre las reglas de grupo disponibles, consulte Reglas para grupos de entornos.
Prerequisites
Un registro de aplicaciones configurado para la API de Power Platform. Tenga en cuenta el identificador de aplicación (cliente) y el identificador de directorio (inquilino) del registro de la aplicación.
Permiso para administrar licencias y capacidad. Inicie sesión como usuario con el rol Administrador de Power Platform o Administrador global , o un rol equivalente que pueda administrar licencias y capacidad.
Para ver los ejemplos del SDK, instale el SDK que se distribuye mensualmente en su galería pública:
dotnet add package Microsoft.PowerPlatform.Management
pip install powerplatform-management
Administración de asignaciones de crédito Copilot
En esta sección se muestra el mismo flujo integral: comprobar qué está disponible, asignar créditos a un entorno y controlar si el entorno usa la capacidad del inquilino, tanto en el centro de administración de Power Platform como en cada SDK. Use las pestañas para cambiar entre el centro de administración y su idioma preferido.
Inicie sesión en el Centro de administración de Power Platform.
En el panel de navegación, seleccione Licencias.
En Productos, seleccione Copilot Studio y, a continuación, seleccione Administrar Copilot Créditos.
Seleccione el entorno que desea administrar. Use el cuadro Buscar para buscar un entorno por nombre.
En Asignar capacidad, introduzca el número de créditos de Copilot para asignar al entorno. El panel muestra cuántos créditos se consumen, cuántos ya están asignados y cuántos están disponibles para asignar desde su inquilino.
En Excesos de capacidad, seleccione o desactive Usar la capacidad disponible de mi inquilino para controlar lo que sucede cuando el entorno agota su asignación:
-
Seleccionado: después de que se consuman los créditos asignados al entorno, sigue consumiendo de la capacidad no asignada de su inquilino.
-
Borrado: el entorno está limitado en su asignación y deja de consumir cuando se agota la asignación.
Haga clic en Guardar.
En el ejemplo siguiente, se inicia sesión de forma interactiva como el usuario actual, se consultan los créditos de Copilot disponibles para asignar, se asignan créditos a un entorno y se desactiva Usar la capacidad disponible de mi inquilino para que el entorno quede limitado a su asignación.
# 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"
En el ejemplo siguiente, se inicia sesión de forma interactiva usando el Id. de cliente del registro de la aplicación, se consultan los créditos de Copilot disponibles para asignar, se asignan créditos a un entorno y se desactiva Usar la capacidad disponible de mi inquilino para que el entorno quede limitado a su asignación.
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}");
En el ejemplo siguiente, se inicia sesión de forma interactiva usando el Id. de cliente del registro de la aplicación, se consultan los créditos de Copilot disponibles para asignar, se asignan créditos a un entorno y se desactiva Usar la capacidad disponible de mi inquilino para que el entorno quede limitado a su asignación.
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())