//
#nullable disable
using System;
using System.ClientModel;
using System.ClientModel.Primitives;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
using OpenAI;
namespace OpenAI.Responses
{
[Experimental("OPENAI001")]
public partial class ResponsesClient
{
private readonly Uri _endpoint;
protected ResponsesClient()
{
}
internal ResponsesClient(ClientPipeline pipeline, Uri endpoint)
{
_endpoint = endpoint;
Pipeline = pipeline;
}
public ClientPipeline Pipeline { get; }
public virtual ClientResult CreateResponse(BinaryContent content, RequestOptions options = null)
{
Argument.AssertNotNull(content, nameof(content));
using PipelineMessage message = CreateCreateResponseRequest(content, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}
public virtual async Task CreateResponseAsync(BinaryContent content, RequestOptions options = null)
{
Argument.AssertNotNull(content, nameof(content));
using PipelineMessage message = CreateCreateResponseRequest(content, options);
return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
}
public virtual ClientResult GetResponse(string responseId, IEnumerable include, bool? stream, int? startingAfter, bool? includeObfuscation, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(responseId, nameof(responseId));
using PipelineMessage message = CreateGetResponseRequest(responseId, include, stream, startingAfter, includeObfuscation, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}
public virtual async Task GetResponseAsync(string responseId, IEnumerable include, bool? stream, int? startingAfter, bool? includeObfuscation, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(responseId, nameof(responseId));
using PipelineMessage message = CreateGetResponseRequest(responseId, include, stream, startingAfter, includeObfuscation, options);
return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
}
public virtual ClientResult DeleteResponse(string responseId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(responseId, nameof(responseId));
using PipelineMessage message = CreateDeleteResponseRequest(responseId, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}
public virtual async Task DeleteResponseAsync(string responseId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(responseId, nameof(responseId));
using PipelineMessage message = CreateDeleteResponseRequest(responseId, options);
return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
}
public virtual ClientResult DeleteResponse(string responseId, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(responseId, nameof(responseId));
ClientResult result = DeleteResponse(responseId, cancellationToken.ToRequestOptions());
return ClientResult.FromValue((ResponseDeletionResult)result, result.GetRawResponse());
}
public virtual async Task> DeleteResponseAsync(string responseId, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(responseId, nameof(responseId));
ClientResult result = await DeleteResponseAsync(responseId, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
return ClientResult.FromValue((ResponseDeletionResult)result, result.GetRawResponse());
}
public virtual ClientResult CancelResponse(string responseId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(responseId, nameof(responseId));
using PipelineMessage message = CreateCancelResponseRequest(responseId, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}
public virtual async Task CancelResponseAsync(string responseId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(responseId, nameof(responseId));
using PipelineMessage message = CreateCancelResponseRequest(responseId, options);
return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
}
public virtual ClientResult CancelResponse(string responseId, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(responseId, nameof(responseId));
ClientResult result = CancelResponse(responseId, cancellationToken.ToRequestOptions());
return ClientResult.FromValue((ResponseResult)result, result.GetRawResponse());
}
public virtual async Task> CancelResponseAsync(string responseId, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(responseId, nameof(responseId));
ClientResult result = await CancelResponseAsync(responseId, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
return ClientResult.FromValue((ResponseResult)result, result.GetRawResponse());
}
public virtual ClientResult GetInputTokenCount(BinaryContent content, string contentType, RequestOptions options = null)
{
Argument.AssertNotNull(content, nameof(content));
using PipelineMessage message = CreateGetInputTokenCountRequest(content, contentType, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}
public virtual async Task GetInputTokenCountAsync(BinaryContent content, string contentType, RequestOptions options = null)
{
Argument.AssertNotNull(content, nameof(content));
using PipelineMessage message = CreateGetInputTokenCountRequest(content, contentType, options);
return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
}
public virtual ClientResult CompactResponse(BinaryContent content, string contentType, RequestOptions options = null)
{
Argument.AssertNotNull(content, nameof(content));
using PipelineMessage message = CreateCompactResponseRequest(content, contentType, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}
public virtual async Task CompactResponseAsync(BinaryContent content, string contentType, RequestOptions options = null)
{
Argument.AssertNotNull(content, nameof(content));
using PipelineMessage message = CreateCompactResponseRequest(content, contentType, options);
return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
}
}
}