mirror of https://github.com/microsoft/autogen.git
46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// EchoAgent.cs
|
|
|
|
using System.Runtime.CompilerServices;
|
|
using AutoGen.Core;
|
|
|
|
namespace AutoGen.WebAPI.Tests;
|
|
|
|
public class EchoAgent : IStreamingAgent
|
|
{
|
|
public EchoAgent(string name)
|
|
{
|
|
Name = name;
|
|
}
|
|
public string Name { get; }
|
|
|
|
public async Task<IMessage> GenerateReplyAsync(
|
|
IEnumerable<IMessage> messages,
|
|
GenerateReplyOptions? options = null,
|
|
CancellationToken cancellationToken = default)
|
|
{
|
|
return messages.Last();
|
|
}
|
|
|
|
public async IAsyncEnumerable<IMessage> GenerateStreamingReplyAsync(
|
|
IEnumerable<IMessage> messages,
|
|
GenerateReplyOptions? options = null,
|
|
[EnumeratorCancellation] CancellationToken cancellationToken = default)
|
|
{
|
|
var lastMessage = messages.LastOrDefault();
|
|
if (lastMessage == null)
|
|
{
|
|
yield break;
|
|
}
|
|
|
|
// return each character of the last message as a separate message
|
|
if (lastMessage.GetContent() is string content)
|
|
{
|
|
foreach (var c in content)
|
|
{
|
|
yield return new TextMessageUpdate(Role.Assistant, c.ToString(), this.Name);
|
|
}
|
|
}
|
|
}
|
|
}
|