diff --git a/src/Custom/Responses/OpenAIResponseClient.cs b/src/Custom/Responses/OpenAIResponseClient.cs index 55c7db9ba..57183d55c 100644 --- a/src/Custom/Responses/OpenAIResponseClient.cs +++ b/src/Custom/Responses/OpenAIResponseClient.cs @@ -228,11 +228,21 @@ public virtual CollectionResult CreateResponseStreaming cancellationToken); } - public virtual async Task> GetResponseAsync(string responseId, CancellationToken cancellationToken = default) + public virtual Task> GetResponseAsync(string responseId, CancellationToken cancellationToken = default) + { + return GetResponseAsync(responseId, cancellationToken.ToRequestOptions() ?? new RequestOptions()); + } + + internal async Task> GetResponseAsync(string responseId, RequestOptions requestOptions) { Argument.AssertNotNullOrEmpty(responseId, nameof(responseId)); + Argument.AssertNotNull(requestOptions, nameof(requestOptions)); + if (requestOptions.BufferResponse is false) + { + throw new InvalidOperationException("'requestOptions.BufferResponse' must be 'true' when calling 'GetResponseAsync'."); + } - ClientResult protocolResult = await GetResponseAsync(responseId, stream: null, startingAfter: null, cancellationToken.ToRequestOptions()).ConfigureAwait(false); + ClientResult protocolResult = await GetResponseAsync(responseId, stream: null, startingAfter: null, requestOptions).ConfigureAwait(false); OpenAIResponse convenienceResult = (OpenAIResponse)protocolResult; return ClientResult.FromValue(convenienceResult, protocolResult.GetRawResponse()); } @@ -247,13 +257,23 @@ public virtual ClientResult GetResponse(string responseId, Cance } public virtual AsyncCollectionResult GetResponseStreamingAsync(string responseId, int? startingAfter = null, CancellationToken cancellationToken = default) + { + return GetResponseStreamingAsync(responseId, cancellationToken.ToRequestOptions(streaming: true), startingAfter); + } + + internal AsyncCollectionResult GetResponseStreamingAsync(string responseId, RequestOptions requestOptions, int? startingAfter = null) { Argument.AssertNotNull(responseId, nameof(responseId)); + Argument.AssertNotNull(requestOptions, nameof(requestOptions)); + if (requestOptions.BufferResponse is true) + { + throw new InvalidOperationException("'requestOptions.BufferResponse' must be 'false' when calling 'GetResponseStreamingAsync'."); + } return new AsyncSseUpdateCollection( - async () => await GetResponseAsync(responseId, stream: true, startingAfter, cancellationToken.ToRequestOptions(streaming: true)).ConfigureAwait(false), + async () => await GetResponseAsync(responseId, stream: true, startingAfter, requestOptions).ConfigureAwait(false), StreamingResponseUpdate.DeserializeStreamingResponseUpdate, - cancellationToken); + requestOptions.CancellationToken); } public virtual CollectionResult GetResponseStreaming(string responseId, int? startingAfter = null, CancellationToken cancellationToken = default)