Visión general del almacenamiento del SDK de agentes

El almacenamiento es un componente crítico del SDK de Microsoft Agents, lo que permite a los agentes conservar el estado de conversación, los datos de usuario y otra información entre sesiones. Admite varias opciones de almacenamiento, incluido el almacenamiento en memoria, Azure Cosmos DB, Azure Blobs Storage y permite proveedores de almacenamiento personalizados.

Opciones de almacenamiento de claves

  1. Almacenamiento de memoria

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

    • 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. Se pueden proporcionar opciones de almacenamiento personalizadas mediante la implementación IStorage

Uso de diferentes proveedores de almacenamiento

Almacenamiento de memoria

Todos los ejemplos usan MemoryStorage

Para .NET, en Program.cs, regístrese. MemoryStorage

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

Almacenamiento de Azure CosmosDb

Para .NET:

  1. Adición de una dependencia de paquete para Microsoft.Agents.Storage.CosmosDb

  2. En Program.cs, agregue (o reemplace el existente) IStorage registro 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. Para obtener más información, vea CosmosDbPartitionedStorageOptions.

Almacenamiento de blobs de Azure

Para .NET:

  1. Adición de una dependencia de paquete para Microsoft.Agents.Storage.Blobs

  2. En Program.cs, agregue (o reemplace el existente) IStorage registro 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);
    });