mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
allow a2a agent to accept non-user messages (#1661)
This commit is contained in:
committed by
GitHub
Unverified
parent
feb3404a27
commit
202bfdc376
@@ -72,7 +72,7 @@ internal sealed class A2AAgent : AIAgent
|
||||
/// <inheritdoc/>
|
||||
public override async Task<AgentRunResponse> RunAsync(IEnumerable<ChatMessage> messages, AgentThread? thread = null, AgentRunOptions? options = null, CancellationToken cancellationToken = default)
|
||||
{
|
||||
ValidateInputMessages(messages);
|
||||
_ = Throw.IfNull(messages);
|
||||
|
||||
var a2aMessage = messages.ToA2AMessage();
|
||||
|
||||
@@ -124,7 +124,7 @@ internal sealed class A2AAgent : AIAgent
|
||||
/// <inheritdoc/>
|
||||
public override async IAsyncEnumerable<AgentRunResponseUpdate> RunStreamingAsync(IEnumerable<ChatMessage> messages, AgentThread? thread = null, AgentRunOptions? options = null, [EnumeratorCancellation] CancellationToken cancellationToken = default)
|
||||
{
|
||||
ValidateInputMessages(messages);
|
||||
_ = Throw.IfNull(messages);
|
||||
|
||||
var a2aMessage = messages.ToA2AMessage();
|
||||
|
||||
@@ -177,19 +177,6 @@ internal sealed class A2AAgent : AIAgent
|
||||
/// <inheritdoc/>
|
||||
public override string? Description => this._description ?? base.Description;
|
||||
|
||||
private static void ValidateInputMessages(IEnumerable<ChatMessage> messages)
|
||||
{
|
||||
_ = Throw.IfNull(messages);
|
||||
|
||||
foreach (var message in messages)
|
||||
{
|
||||
if (message.Role != ChatRole.User)
|
||||
{
|
||||
throw new ArgumentException($"All input messages for A2A agents must have the role '{ChatRole.User}'. Found '{message.Role}'.", nameof(messages));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void UpdateThreadConversationId(A2AAgentThread? thread, string? contextId)
|
||||
{
|
||||
if (thread is null)
|
||||
|
||||
@@ -74,17 +74,18 @@ public sealed class A2AAgentTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task RunAsync_NonUserRoleMessages_ThrowsArgumentExceptionAsync()
|
||||
public async Task RunAsync_AllowsNonUserRoleMessagesAsync()
|
||||
{
|
||||
// Arrange
|
||||
var inputMessages = new List<ChatMessage>
|
||||
{
|
||||
new(ChatRole.System, "I am a system message"),
|
||||
new(ChatRole.Assistant, "I am an assistant message"),
|
||||
new(ChatRole.User, "Valid user message")
|
||||
};
|
||||
|
||||
// Act & Assert
|
||||
await Assert.ThrowsAsync<ArgumentException>(() => this._agent.RunAsync(inputMessages));
|
||||
await this._agent.RunAsync(inputMessages);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -345,21 +346,28 @@ public sealed class A2AAgentTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task RunStreamingAsync_NonUserRoleMessages_ThrowsArgumentExceptionAsync()
|
||||
public async Task RunStreamingAsync_AllowsNonUserRoleMessagesAsync()
|
||||
{
|
||||
// Arrange
|
||||
this._handler.StreamingResponseToReturn = new AgentMessage()
|
||||
{
|
||||
MessageId = "stream-1",
|
||||
Role = MessageRole.Agent,
|
||||
Parts = [new TextPart { Text = "Response" }],
|
||||
ContextId = "new-stream-context"
|
||||
};
|
||||
|
||||
var inputMessages = new List<ChatMessage>
|
||||
{
|
||||
new(ChatRole.Assistant, "I am an assistant message")
|
||||
new(ChatRole.System, "I am a system message"),
|
||||
new(ChatRole.Assistant, "I am an assistant message"),
|
||||
new(ChatRole.User, "Valid user message")
|
||||
};
|
||||
|
||||
// Act & Assert
|
||||
await Assert.ThrowsAsync<ArgumentException>(async () =>
|
||||
await foreach (var _ in this._agent.RunStreamingAsync(inputMessages))
|
||||
{
|
||||
await foreach (var update in this._agent.RunStreamingAsync(inputMessages))
|
||||
{
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
Reference in New Issue
Block a user