// #nullable disable using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using OpenAI; namespace OpenAI.Assistants { [Experimental("OPENAI001")] public partial class AssistantClient { private readonly Uri _endpoint; protected AssistantClient() { } public ClientPipeline Pipeline { get; } public virtual CollectionResult GetAssistants(int? limit, string order, string after, string before, RequestOptions options) { return new AssistantClientGetAssistantsCollectionResult( this, limit, order, after, before, options); } public virtual AsyncCollectionResult GetAssistantsAsync(int? limit, string order, string after, string before, RequestOptions options) { return new AssistantClientGetAssistantsAsyncCollectionResult( this, limit, order, after, before, options); } public virtual CollectionResult GetAssistants(AssistantCollectionOptions options = default, CancellationToken cancellationToken = default) { return new AssistantClientGetAssistantsCollectionResultOfT( this, options?.PageSizeLimit, options?.Order?.ToString(), options?.AfterId, options?.BeforeId, cancellationToken.ToRequestOptions()); } public virtual AsyncCollectionResult GetAssistantsAsync(AssistantCollectionOptions options = default, CancellationToken cancellationToken = default) { return new AssistantClientGetAssistantsAsyncCollectionResultOfT( this, options?.PageSizeLimit, options?.Order?.ToString(), options?.AfterId, options?.BeforeId, cancellationToken.ToRequestOptions()); } public virtual ClientResult CreateAssistant(BinaryContent content, RequestOptions options = null) { Argument.AssertNotNull(content, nameof(content)); using PipelineMessage message = CreateCreateAssistantRequest(content, options); return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); } public virtual async Task CreateAssistantAsync(BinaryContent content, RequestOptions options = null) { Argument.AssertNotNull(content, nameof(content)); using PipelineMessage message = CreateCreateAssistantRequest(content, options); return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); } public virtual ClientResult GetAssistant(string assistantId, RequestOptions options) { Argument.AssertNotNullOrEmpty(assistantId, nameof(assistantId)); using PipelineMessage message = CreateGetAssistantRequest(assistantId, options); return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); } public virtual async Task GetAssistantAsync(string assistantId, RequestOptions options) { Argument.AssertNotNullOrEmpty(assistantId, nameof(assistantId)); using PipelineMessage message = CreateGetAssistantRequest(assistantId, options); return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); } public virtual ClientResult ModifyAssistant(string assistantId, BinaryContent content, RequestOptions options = null) { Argument.AssertNotNullOrEmpty(assistantId, nameof(assistantId)); Argument.AssertNotNull(content, nameof(content)); using PipelineMessage message = CreateModifyAssistantRequest(assistantId, content, options); return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); } public virtual async Task ModifyAssistantAsync(string assistantId, BinaryContent content, RequestOptions options = null) { Argument.AssertNotNullOrEmpty(assistantId, nameof(assistantId)); Argument.AssertNotNull(content, nameof(content)); using PipelineMessage message = CreateModifyAssistantRequest(assistantId, content, options); return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); } public virtual ClientResult DeleteAssistant(string assistantId, RequestOptions options) { Argument.AssertNotNullOrEmpty(assistantId, nameof(assistantId)); using PipelineMessage message = CreateDeleteAssistantRequest(assistantId, options); return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); } public virtual async Task DeleteAssistantAsync(string assistantId, RequestOptions options) { Argument.AssertNotNullOrEmpty(assistantId, nameof(assistantId)); using PipelineMessage message = CreateDeleteAssistantRequest(assistantId, options); return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); } } }