mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
.NET: Update AIContextProviders to use Microsoft.Extensions.Compliance.Redaction (#4854)
* Update providers to use Microsoft.Extensions.Compliance.Redaction * Fix formatting. * Fix readme
This commit is contained in:
@@ -7,6 +7,7 @@ using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.AI;
|
||||
using Microsoft.Extensions.Compliance.Redaction;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.VectorData;
|
||||
using Microsoft.Shared.Diagnostics;
|
||||
@@ -80,7 +81,7 @@ public sealed class ChatHistoryMemoryProvider : MessageAIContextProvider, IDispo
|
||||
private readonly VectorStoreCollection<object, Dictionary<string, object?>> _collection;
|
||||
private readonly int _maxResults;
|
||||
private readonly string _contextPrompt;
|
||||
private readonly bool _enableSensitiveTelemetryData;
|
||||
private readonly Redactor _redactor;
|
||||
private readonly ChatHistoryMemoryProviderOptions.SearchBehavior _searchTime;
|
||||
private readonly string _toolName;
|
||||
private readonly string _toolDescription;
|
||||
@@ -118,7 +119,7 @@ public sealed class ChatHistoryMemoryProvider : MessageAIContextProvider, IDispo
|
||||
options ??= new ChatHistoryMemoryProviderOptions();
|
||||
this._maxResults = options.MaxResults.HasValue ? Throw.IfLessThanOrEqual(options.MaxResults.Value, 0) : DefaultMaxResults;
|
||||
this._contextPrompt = options.ContextPrompt ?? DefaultContextPrompt;
|
||||
this._enableSensitiveTelemetryData = options.EnableSensitiveTelemetryData;
|
||||
this._redactor = options.EnableSensitiveTelemetryData ? NullRedactor.Instance : (options.Redactor ?? new ReplacingRedactor("<redacted>"));
|
||||
this._searchTime = options.SearchTime;
|
||||
this._logger = loggerFactory?.CreateLogger<ChatHistoryMemoryProvider>();
|
||||
this._toolName = options.FunctionToolName ?? DefaultFunctionToolName;
|
||||
@@ -485,7 +486,7 @@ public sealed class ChatHistoryMemoryProvider : MessageAIContextProvider, IDispo
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
private string? SanitizeLogData(string? data) => this._enableSensitiveTelemetryData ? data : "<redacted>";
|
||||
private string SanitizeLogData(string? data) => this._redactor.Redact(data);
|
||||
|
||||
/// <summary>
|
||||
/// Rebinds a filter expression's body to use the specified shared parameter,
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.Extensions.AI;
|
||||
using Microsoft.Extensions.Compliance.Redaction;
|
||||
|
||||
namespace Microsoft.Agents.AI;
|
||||
|
||||
@@ -46,8 +47,22 @@ public sealed class ChatHistoryMemoryProviderOptions
|
||||
/// Gets or sets a value indicating whether sensitive data such as user ids and user messages may appear in logs.
|
||||
/// </summary>
|
||||
/// <value>Defaults to <see langword="false"/>.</value>
|
||||
/// <remarks>
|
||||
/// When set to <see langword="true"/>, sensitive data is passed through to logs unchanged and any
|
||||
/// configured <see cref="Redactor"/> is ignored. This property takes precedence over <see cref="Redactor"/>.
|
||||
/// </remarks>
|
||||
public bool EnableSensitiveTelemetryData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a custom <see cref="Redactor"/> used to redact sensitive data in log output.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// When <see langword="null"/> (the default), sensitive data is replaced with a placeholder.
|
||||
/// When set, this redactor is used to transform sensitive values before they are logged.
|
||||
/// Ignored when <see cref="EnableSensitiveTelemetryData"/> is <see langword="true"/>.
|
||||
/// </value>
|
||||
public Redactor? Redactor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the key used to store provider state in the <see cref="AgentSession.StateBag"/>.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user