Usa el almacenamiento en tu agente

El almacenamiento es un componente crítico de SDK de agentes de Microsoft 365. Permite a los agentes conservar el estado de conversación, los datos de usuario y otra información entre sesiones. El SDK admite varias opciones de almacenamiento, entre las que se incluyen:

  • Almacenamiento en memoria
  • Azure Cosmos DB (la base de datos de Azure Cosmos)
  • Azure Blob Storage (Servicio de almacenamiento de blobs de Azure)
  • Proveedores de almacenamiento personalizados

Opciones de almacenamiento de claves

El SDK de agentes proporciona varios proveedores de almacenamiento integrados, cada uno con sus propios casos de uso y ventajas. Puede elegir la que mejor se adapte a las necesidades del agente. También puede implementar su propio proveedor de almacenamiento personalizado.

  1. Almacenamiento en memoria

    • Adecuado para pruebas y fines de desarrollo.
    • Los datos se borran cuando se reinicia el agente, por lo que no es adecuado para producción.
    • Los datos solo están disponibles en la instancia de la aplicación web, por lo que no es adecuado cuando se ejecuta en un clúster.
  2. Azure Cosmos DB (la base de datos de Azure Cosmos)

    • Una base de datos multimodelo distribuida globalmente ideal para agentes de producción.
    • Admite el almacenamiento con particiones para mejorar la escalabilidad y el rendimiento.
  3. Azure Blob Storage (Servicio de almacenamiento de blobs de Azure)

    • Optimizado para almacenar datos no estructurados como archivos binarios o de texto.
    • Se usa habitualmente para el almacenamiento del estado del agente y de las transcripciones.
  4. Opciones de almacenamiento personalizadas mediante la implementación IStorage

Uso de diferentes proveedores de almacenamiento

Almacenamiento en memoria

Todos los ejemplos usan MemoryStorage. Este almacenamiento es volátil y es adecuado solo para desarrollo y pruebas. En escenarios de producción, use una opción de almacenamiento más duradera, como Azure Cosmos DB o Azure Blob Storage.

En Program.cs, registre MemoryStorage:

builder.Services.AddSingleton<IStorage, MemoryStorage>();

Almacenamiento de Azure CosmosDb

  1. Agregue una dependencia de paquete para Microsoft.Agents.Storage.CosmosDb.

  2. En Program.cs, agregue (o reemplace el registro existente de) IStorage por:

    builder.Services.AddSingleton<IStorage>(sp =>
    {
          var options = new CosmosDbPartitionedStorageOptions()
          {
             CosmosDbEndpoint = "your-cosmosdb-endpoint",
             DatabaseId = "your-database-id",
             ContainerId = "your-container-id",
    
             // Get a TokenCredential from your defined Connections
             TokenCredential = sp.GetService<IConnections>().GetConnection("ServiceConnection").GetTokenCredential()
          };
    
          return new CosmosDbPartitionedStorage(options);
    });
    
  3. Puede encontrar más información en CosmosDbPartitionedStorageOptions.

Almacenamiento de blobs de Azure

  1. Agregue una dependencia de paquete para Microsoft.Agents.Storage.Blobs.

  2. En Program.cs, agregue (o reemplace el registro existente de IStorage) por:

    builder.Services.AddSingleton<IStorage>(sp =>
    {
       // Get a TokenCredential from your defined Connections
       var tokenCredential = sp.GetService<IConnections>().GetConnection("ServiceConnection").GetTokenCredential();
    
       return new BlobsStorage(
          new Uri("{{your-blobs-storage-endpoint}}/agent-state"),
          tokenCredential);
    });