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

Хранение данных — критически важный компонент Пакета SDK агентов Microsoft 365. Это позволяет агентам сохранять состояние беседы, данные пользователя и другую информацию между сеансами. Пакет SDK поддерживает различные варианты хранения данных, включая:

  • Хранение в памяти
  • Azure Cosmos DB
  • Хранилище BLOB-объектов Azure
  • Пользовательские поставщики хранения данных

Основные варианты хранения данных

Пакет SDK агентов предоставляет несколько встроенных поставщиков хранения данных, каждый из которых имеет свои собственные сценарии использования и преимущества. Вы можете выбрать вариант, который лучше всего соответствует потребностям вашего агента. Вы также можете реализовать собственный поставщик хранения данных.

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

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

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

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

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

Хранение в памяти

Во всех примерах используется MemoryStorage. Это хранилище временное и подходит только для разработки и тестирования. Для рабочих сценариев используйте более надежный вариант хранения, например Azure Cosmos DB или Хранилище BLOB-объектов Azure.

В Program.cs зарегистрируйте MemoryStorage:

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

Хранилище Azure Cosmos DB

  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

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