mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
c70e594e6c
* rename AgentRunResponse and AgentRunResponseUpdate classes - part1 * rename varialbles, parameters, methods and tests * rollback unnecessary changes
49 lines
1.8 KiB
C#
49 lines
1.8 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using System.ClientModel;
|
|
using OpenAI.Responses;
|
|
|
|
namespace Microsoft.Agents.AI.OpenAI;
|
|
|
|
internal sealed class AsyncStreamingResponseUpdateCollectionResult : AsyncCollectionResult<StreamingResponseUpdate>
|
|
{
|
|
private readonly IAsyncEnumerable<AgentResponseUpdate> _updates;
|
|
|
|
internal AsyncStreamingResponseUpdateCollectionResult(IAsyncEnumerable<AgentResponseUpdate> updates)
|
|
{
|
|
this._updates = updates;
|
|
}
|
|
|
|
public override ContinuationToken? GetContinuationToken(ClientResult page) => null;
|
|
|
|
public override async IAsyncEnumerable<ClientResult> GetRawPagesAsync()
|
|
{
|
|
yield return ClientResult.FromValue(this._updates, new StreamingUpdatePipelineResponse(this._updates));
|
|
}
|
|
|
|
protected async override IAsyncEnumerable<StreamingResponseUpdate> GetValuesFromPageAsync(ClientResult page)
|
|
{
|
|
var updates = ((ClientResult<IAsyncEnumerable<AgentResponseUpdate>>)page).Value;
|
|
|
|
await foreach (var update in updates.ConfigureAwait(false))
|
|
{
|
|
switch (update.RawRepresentation)
|
|
{
|
|
case StreamingResponseUpdate rawUpdate:
|
|
yield return rawUpdate;
|
|
break;
|
|
|
|
case Extensions.AI.ChatResponseUpdate { RawRepresentation: StreamingResponseUpdate rawUpdate }:
|
|
yield return rawUpdate;
|
|
break;
|
|
|
|
default:
|
|
// TODO: The OpenAI library does not currently expose model factory methods for creating
|
|
// StreamingResponseUpdates. We are thus unable to manufacture such instances when there isn't
|
|
// already one in the update and instead skip them.
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|