mirror of
https://github.com/microsoft/autogen.git
synced 2025-07-07 00:51:38 +00:00
46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
![]() |
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|||
|
// OpenAIChatCompletionMiddlewareTests.cs
|
|||
|
|
|||
|
using System.Runtime.CompilerServices;
|
|||
|
using AutoGen.Core;
|
|||
|
|
|||
|
namespace AutoGen.Service.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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|