Usar almacenamiento en el agente

El almacenamiento es un componente crítico del SDK de agentes de Microsoft 365. Permite a los agentes almacenar el estado de la conversación, los datos del usuario y otra información para que se conserve entre sesiones. El SDK ofrece varias opciones de almacenamiento, entre ellas:

  • Almacenamiento en memoria
  • Azure Cosmos DB
  • Almacenamiento de blobs de Azure
  • Proveedores de almacenamiento personalizados

Opciones de almacenamiento principales

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

  1. Almacenamiento en memoria

    • Adecuado para fines de prueba y desarrollo.
    • Los datos se eliminan cuando el agente se reinicia, por lo que no es adecuado para producción.
    • Los datos solo están disponibles en la instancia de la aplicación web, lo que lo hace poco adecuado para su uso en clústeres.
  2. Azure Cosmos DB

    • Una base de datos multimodelo, distribuida a nivel global, que es ideal para agentes en producción.
    • Admite almacenamiento particionado para escalabilidad y rendimiento.
  3. Almacenamiento de blobs de Azure

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

Usar diferentes proveedores de almacenamiento

Almacenamiento en memoria

Todos los ejemplos utilizan MemoryStorage. Este almacenamiento es volátil y adecuado solo para desarrollo y pruebas. Para escenarios de producción, utilice 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 el registro de IStorage (o reemplace el existente) con:

    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. Más información en CosmosDbPartitionedStorageOptions.

Azure Blob Storage

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

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

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