Обзор хранения SDK агентов

Хранилище — критически важный компонент SDK Microsoft Agents, позволяющий агентам сохранять состояние разговора, пользовательские данные и другую информацию на протяжении сессий. Он поддерживает различные варианты хранения, включая хранение в памяти, Azure Cosmos DB, Azure Blobs Storage, а также позволяет создавать пользовательских поставщиков хранилищ.

Варианты хранения ключей

  1. Хранилище памяти

    • Подходит для тестирования и разработки.
    • Данные очищаются при повторном запуске агента, что делает его непригодным для производства.
    • Данные доступны только в экземпляре веб-приложения, что делает их неподходящими при работе в кластере.
  2. Azure Cosmos DB (облачная база данных)

    • Глобально распределённая многомодельная база данных, идеально подходящая для производственных агентов.
    • Поддерживает разделённое хранилище для масштабируемости и производительности.
  3. Хранилище BLOB-объектов Azure (Азур Блоб Сторадж)

    • Оптимизирован для хранения неструктурированных данных, таких как текстовые или двоичные файлы.
    • Часто используется для хранения состояния агента и транскриптов.
  4. Опции пользовательского хранения можно реализовать IStorage

Использование разных поставщиков хранения данных

Запоминающее устройство

Все сэмплы используются MemoryStorage

Для .NET, в Program.cs регистрируйтесь MemoryStorage

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

Azure CosmosDb storage

Для .NET:

  1. Добавить зависимость пакета для Microsoft.Agents.Storage.CosmosDb

  2. В Program.cs году добавьте (или замените существующую) IStorage регистрацию на:

    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. Дополнительные сведения см. в статье CosmosDbPartitionedStorageOptions.

Хранилище BLOB-объектов Azure

Для .NET:

  1. Добавить зависимость пакета для Microsoft.Agents.Storage.Blobs

  2. В Program.cs году добавьте (или замените существующую) IStorage регистрацию на:

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