استخدام التخزين في عاملك

يُعد التخزين مكوّنًا أساسيًا في Microsoft 365 Agents SDK. يتيح للعوامل تخزين حالة المحادثة وبيانات المستخدم ومعلومات أخرى عبر الجلسات. يدعم SDK خيارات تخزين متنوعة، بما في ذلك:

  • التخزين في الذاكرة
  • Azure Cosmos DB
  • Azure Blob التخزين
  • مزودات التخزين المخصصة

خيارات تخزين المفاتيح

يوفر Agents SDK عدة مزودات تخزين مدمجة، لكل منها حالات استخدام ومزايا خاصة بها. يمكنك اختيار مزود التخزين الأنسب لاحتياجات عاملِك. يمكنك أيضًا تنفيذ مزود تخزين مخصص.

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

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

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

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

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

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

جميع العينات تستخدم MemoryStorage. هذا التخزين متطاير ومناسب للتطوير والاختبار فقط. في سيناريوهات الإنتاج، استخدم خيار تخزين أكثر موثوقية، مثل Azure Cosmos DB أو مساحة تخزين Azure Blob.

في 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.

Azure Blob Storage

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