Don't stamp unknown author name on output messages. (#1830)

This commit is contained in:
westey
2025-10-31 14:12:20 +00:00
committed by GitHub
Unverified
parent 1543370027
commit 2101d9d36d
2 changed files with 10 additions and 8 deletions
@@ -353,9 +353,9 @@ public sealed partial class ChatClientAgent : AIAgent
chatClient = ApplyRunOptionsTransformations(options, chatClient);
var agentName = this.GetLoggingAgentName();
var loggingAgentName = this.GetLoggingAgentName();
this._logger.LogAgentChatClientInvokingAgent(nameof(RunAsync), this.Id, agentName, this._chatClientType);
this._logger.LogAgentChatClientInvokingAgent(nameof(RunAsync), this.Id, loggingAgentName, this._chatClientType);
// Call the IChatClient and notify the AIContextProvider of any failures.
TChatClientResponse chatResponse;
@@ -369,7 +369,7 @@ public sealed partial class ChatClientAgent : AIAgent
throw;
}
this._logger.LogAgentChatClientInvokedAgent(nameof(RunAsync), this.Id, agentName, this._chatClientType, inputMessages.Count);
this._logger.LogAgentChatClientInvokedAgent(nameof(RunAsync), this.Id, loggingAgentName, this._chatClientType, inputMessages.Count);
// We can derive the type of supported thread from whether we have a conversation id,
// so let's update it and set the conversation id for the service thread case.
@@ -378,7 +378,7 @@ public sealed partial class ChatClientAgent : AIAgent
// Ensure that the author name is set for each message in the response.
foreach (ChatMessage chatResponseMessage in chatResponse.Messages)
{
chatResponseMessage.AuthorName ??= agentName;
chatResponseMessage.AuthorName ??= this.Name;
}
// Only notify the thread of new messages if the chatResponse was successful to avoid inconsistent message state in the thread.
@@ -194,8 +194,10 @@ public partial class ChatClientAgentTests
/// <summary>
/// Verify that RunAsync sets AuthorName on all response messages.
/// </summary>
[Fact]
public async Task RunAsyncSetsAuthorNameOnAllResponseMessagesAsync()
[Theory]
[InlineData("TestAgent")]
[InlineData(null)]
public async Task RunAsyncSetsAuthorNameOnAllResponseMessagesAsync(string? authorName)
{
// Arrange
Mock<IChatClient> mockService = new();
@@ -210,13 +212,13 @@ public partial class ChatClientAgentTests
It.IsAny<ChatOptions>(),
It.IsAny<CancellationToken>())).ReturnsAsync(new ChatResponse(responseMessages));
ChatClientAgent agent = new(mockService.Object, options: new() { Instructions = "test instructions", Name = "TestAgent" });
ChatClientAgent agent = new(mockService.Object, options: new() { Instructions = "test instructions", Name = authorName });
// Act
var result = await agent.RunAsync([new(ChatRole.User, "test")]);
// Assert
Assert.All(result.Messages, msg => Assert.Equal("TestAgent", msg.AuthorName));
Assert.All(result.Messages, msg => Assert.Equal(authorName, msg.AuthorName));
}
/// <summary>