نظرة عامة على تخزين وكلاء SDK

التخزين هو مكون هام من Microsoft Agents SDK، ما يتيح للوكلاء استمرار حالة المحادثة وبيانات المستخدم ومعلومات أخرى عبر الجلسات. وهو يدعم خيارات التخزين المختلفة، بما في ذلك التخزين في الذاكرة، Azure Cosmos DB، Azure Blobs Storage، ويسمح لموفري التخزين المخصصين.

خيارات التخزين الرئيسية

  1. مساحة تخزين الذاكرة

    • مناسب لأغراض الاختبار والتطوير.
    • يتم مسح البيانات عند إعادة تشغيل العامل، ما يجعلها غير مناسبة للإنتاج.
    • يتم الاستفادة من البيانات فقط على مثيل تطبيق الويب، ما يجعلها غير مناسبة عند التشغيل في نظام مجموعة.
  2. Azure Cosmos DB

    • قاعدة بيانات متعددة النماذج موزعة عالميا مثالية لوكلاء الإنتاج.
    • يدعم التخزين المقسم لقابلية التوسع والأداء.
  3. مساحة تخزين Azure Blob

    • محسن لتخزين البيانات غير المنظمة مثل الملفات النصية أو الثنائية.
    • شائع الاستخدام لحالة العامل وتخزين النسخة المكتوبة.
  4. يمكن توفير خيارات التخزين المخصصة عن طريق تنفيذ IStorage

استخدام موفري تخزين مختلفين

تخزين الذاكرة

تستخدم جميع العينات MemoryStorage

بالنسبة إلى .NET، في Program.cs، سجل MemoryStorage

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

نظام تخزين Azure لـ CosmosDb

بالنسبة لخدمة .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.

تخزين الكتل في 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);
    });