mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
Python: [Purview] Update CorrelationId (#3745)
This commit is contained in:
@@ -21,12 +21,14 @@ internal abstract class ProcessContentMetadataBase : GraphDataTypeBase
|
||||
/// <param name="identifier">The unique identifier for the content.</param>
|
||||
/// <param name="isTruncated">Indicates if the content is truncated.</param>
|
||||
/// <param name="name">The name of the content.</param>
|
||||
protected ProcessContentMetadataBase(ContentBase content, string identifier, bool isTruncated, string name) : base(ProcessConversationMetadataDataType)
|
||||
/// <param name="correlationId">The correlation ID for the content.</param>
|
||||
protected ProcessContentMetadataBase(ContentBase content, string identifier, bool isTruncated, string name, string correlationId) : base(ProcessConversationMetadataDataType)
|
||||
{
|
||||
this.Identifier = identifier;
|
||||
this.IsTruncated = isTruncated;
|
||||
this.Content = content;
|
||||
this.Name = name;
|
||||
this.CorrelationId = correlationId;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -55,7 +57,7 @@ internal abstract class ProcessContentMetadataBase : GraphDataTypeBase
|
||||
/// Identifier to group multiple contents.
|
||||
/// </summary>
|
||||
[JsonPropertyName("correlationId")]
|
||||
public string? CorrelationId { get; set; }
|
||||
public string CorrelationId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the sequenceNumber.
|
||||
|
||||
@@ -15,7 +15,7 @@ internal sealed class ProcessConversationMetadata : ProcessContentMetadataBase
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ProcessConversationMetadata"/> class.
|
||||
/// </summary>
|
||||
public ProcessConversationMetadata(ContentBase contentBase, string identifier, bool isTruncated, string name) : base(contentBase, identifier, isTruncated, name)
|
||||
public ProcessConversationMetadata(ContentBase contentBase, string identifier, bool isTruncated, string name, string correlationId) : base(contentBase, identifier, isTruncated, name, correlationId)
|
||||
{
|
||||
this.DataType = ProcessConversationMetadataDataType;
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ internal sealed class ProcessFileMetadata : ProcessContentMetadataBase
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ProcessFileMetadata"/> class.
|
||||
/// </summary>
|
||||
public ProcessFileMetadata(ContentBase contentBase, string identifier, bool isTruncated, string name) : base(contentBase, identifier, isTruncated, name)
|
||||
public ProcessFileMetadata(ContentBase contentBase, string identifier, bool isTruncated, string name, string correlationId) : base(contentBase, identifier, isTruncated, name, correlationId)
|
||||
{
|
||||
this.DataType = ProcessFileMetadataDataType;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ public class PurviewSettings
|
||||
/// <param name="appName">The publicly visible name of the application.</param>
|
||||
public PurviewSettings(string appName)
|
||||
{
|
||||
this.AppName = appName;
|
||||
this.AppName = string.IsNullOrWhiteSpace(appName) ? throw new ArgumentException("AppName cannot be null or whitespace.", nameof(appName)) : appName;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -53,7 +53,7 @@ internal sealed class PurviewWrapper : IDisposable
|
||||
}
|
||||
}
|
||||
|
||||
return Guid.NewGuid().ToString();
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -136,12 +136,15 @@ internal sealed class PurviewWrapper : IDisposable
|
||||
/// <returns>The agent's response. This could be the response from the agent or a message indicating that Purview has blocked the prompt or response.</returns>
|
||||
public async Task<AgentResponse> ProcessAgentContentAsync(IEnumerable<ChatMessage> messages, AgentSession? session, AgentRunOptions? options, AIAgent innerAgent, CancellationToken cancellationToken)
|
||||
{
|
||||
string sessionId = GetSessionIdFromAgentSession(session, messages);
|
||||
|
||||
string? resolvedUserId = null;
|
||||
|
||||
string sessionId = string.Empty;
|
||||
try
|
||||
{
|
||||
sessionId = GetSessionIdFromAgentSession(session, messages);
|
||||
if (string.IsNullOrEmpty(sessionId))
|
||||
{
|
||||
sessionId = Guid.NewGuid().ToString();
|
||||
}
|
||||
(bool shouldBlockPrompt, resolvedUserId) = await this._scopedProcessor.ProcessMessagesAsync(messages, sessionId, Activity.UploadText, this._purviewSettings, null, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
if (shouldBlockPrompt)
|
||||
@@ -171,7 +174,19 @@ internal sealed class PurviewWrapper : IDisposable
|
||||
|
||||
try
|
||||
{
|
||||
(bool shouldBlockResponse, _) = await this._scopedProcessor.ProcessMessagesAsync(response.Messages, sessionId, Activity.UploadText, this._purviewSettings, resolvedUserId, cancellationToken).ConfigureAwait(false);
|
||||
string sessionIdResponse = GetSessionIdFromAgentSession(session, messages);
|
||||
if (string.IsNullOrEmpty(sessionIdResponse))
|
||||
{
|
||||
if (string.IsNullOrEmpty(sessionId))
|
||||
{
|
||||
sessionIdResponse = Guid.NewGuid().ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
sessionIdResponse = sessionId;
|
||||
}
|
||||
}
|
||||
(bool shouldBlockResponse, _) = await this._scopedProcessor.ProcessMessagesAsync(response.Messages, sessionIdResponse, Activity.UploadText, this._purviewSettings, resolvedUserId, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
if (shouldBlockResponse)
|
||||
{
|
||||
|
||||
@@ -121,9 +121,10 @@ internal sealed class ScopedContentProcessor : IScopedContentProcessor
|
||||
{
|
||||
string messageId = message.MessageId ?? Guid.NewGuid().ToString();
|
||||
ContentBase content = new PurviewTextContent(message.Text);
|
||||
ProcessConversationMetadata conversationmetadata = new(content, messageId, false, $"Agent Framework Message {messageId}")
|
||||
string correlationId = (sessionId ?? Guid.NewGuid().ToString()) + "@AF";
|
||||
ProcessConversationMetadata conversationMetadata = new(content, messageId, false, $"Agent Framework Message {messageId}", correlationId)
|
||||
{
|
||||
CorrelationId = sessionId ?? Guid.NewGuid().ToString()
|
||||
SequenceNumber = DateTime.UtcNow.Ticks,
|
||||
};
|
||||
ActivityMetadata activityMetadata = new(activity);
|
||||
PolicyLocation policyLocation;
|
||||
@@ -162,7 +163,7 @@ internal sealed class ScopedContentProcessor : IScopedContentProcessor
|
||||
OperatingSystemVersion = "Unknown"
|
||||
}
|
||||
};
|
||||
ContentToProcess contentToProcess = new([conversationmetadata], activityMetadata, deviceMetadata, integratedAppMetadata, protectedAppMetadata);
|
||||
ContentToProcess contentToProcess = new([conversationMetadata], activityMetadata, deviceMetadata, integratedAppMetadata, protectedAppMetadata);
|
||||
|
||||
if (userId == null &&
|
||||
tokenInfo?.UserId != null)
|
||||
|
||||
Reference in New Issue
Block a user