Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .docs/OpenAI.Docs.ApiReference/Assistants/ListAssistants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ public void ListAssistants()
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);

AssistantCollectionOptions options = new()
OpenAIPageOptions options = new()
{
Order = AssistantCollectionOrder.Descending,
Order = OpenAIPageOrder.Descending,
PageSizeLimit = 20
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,12 @@ namespace Azure.AI.OpenAI.Assistants;
[Experimental("OPENAI001")]
internal partial class AzureAssistantClient : AssistantClient
{
public override async Task<ClientResult> 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 override 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 override AsyncCollectionResult GetAssistantsAsync(int? limit, string order, string after, string before, RequestOptions options)
{
return new AzureAsyncCollectionResult<Assistant, AssistantCollectionPageToken>(
Pipeline,
options,
continuation => CreateGetAssistantsRequest(limit, order, continuation?.After ?? after, continuation?.Before ?? before, options),
continuation => CreateListAssistantsRequest(limit, order, continuation?.After ?? after, continuation?.Before ?? before, options),
page => AssistantCollectionPageToken.FromResponse(page, limit, order, before),
page => ModelReaderWriter.Read<InternalListAssistantsResponse>(page.GetRawResponse().Content).Data,
options?.CancellationToken ?? default);
Expand All @@ -45,61 +29,11 @@ public override CollectionResult GetAssistants(int? limit, string order, string
return new AzureCollectionResult<Assistant, AssistantCollectionPageToken>(
Pipeline,
options,
continuation => CreateGetAssistantsRequest(limit, order, continuation?.After ?? after, continuation?.Before ?? before, options),
continuation => CreateListAssistantsRequest(limit, order, continuation?.After ?? after, continuation?.Before ?? before, options),
page => AssistantCollectionPageToken.FromResponse(page, limit, order, before),
page => ModelReaderWriter.Read<InternalListAssistantsResponse>(page.GetRawResponse().Content).Data);
}

public override async Task<ClientResult> 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 override 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 override async Task<ClientResult> 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 override 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 override async Task<ClientResult> 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));
}

public override ClientResult DeleteAssistant(string assistantId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(assistantId, nameof(assistantId));

using PipelineMessage message = CreateDeleteAssistantRequest(assistantId, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}

/// <inheritdoc cref="InternalAssistantMessageClient.CreateMessageAsync"/>
public override async Task<ClientResult> CreateMessageAsync(string threadId, BinaryContent content, RequestOptions options = null)
{
Expand Down Expand Up @@ -518,19 +452,19 @@ public override ClientResult DeleteThread(string threadId, RequestOptions option
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}

private new PipelineMessage CreateCreateAssistantRequest(BinaryContent content, RequestOptions options = null)
internal override PipelineMessage CreateCreateAssistantRequest(BinaryContent content, RequestOptions options = null)
=> NewJsonPostBuilder(content, options).WithPath("assistants").Build();

private PipelineMessage CreateGetAssistantsRequest(int? limit, string order, string after, string before, RequestOptions options)
internal override PipelineMessage CreateListAssistantsRequest(int? limit, string order, string after, string before, RequestOptions options)
=> NewGetListBuilder(limit, order, after, before, options).WithPath("assistants").Build();

private new PipelineMessage CreateGetAssistantRequest(string assistantId, RequestOptions options)
internal override PipelineMessage CreateGetAssistantRequest(string assistantId, RequestOptions options)
=> NewJsonGetBuilder(options).WithPath("assistants", assistantId).Build();

private new PipelineMessage CreateModifyAssistantRequest(string assistantId, BinaryContent content, RequestOptions options)
internal override PipelineMessage CreateModifyAssistantRequest(string assistantId, BinaryContent content, RequestOptions options)
=> NewJsonPostBuilder(content, options).WithPath("assistants", assistantId).Build();

private new PipelineMessage CreateDeleteAssistantRequest(string assistantId, RequestOptions options)
internal override PipelineMessage CreateDeleteAssistantRequest(string assistantId, RequestOptions options)
=> NewJsonDeleteBuilder(options).WithPath("assistants", assistantId).Build();

private PipelineMessage CreateCreateThreadRequest(BinaryContent content, RequestOptions options)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,58 +3,12 @@

using System.ClientModel;
using System.ClientModel.Primitives;
using System.ComponentModel;
using OpenAI.Audio;

namespace Azure.AI.OpenAI.Audio;

internal partial class AzureAudioClient : AudioClient
{
[EditorBrowsable(EditorBrowsableState.Never)]
public override ClientResult TranscribeAudio(BinaryContent content, string contentType, RequestOptions options = null)
{
using PipelineMessage message = CreateTranscribeAudioRequestMessage(content, contentType, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}

[EditorBrowsable(EditorBrowsableState.Never)]
public override async Task<ClientResult> TranscribeAudioAsync(BinaryContent content, string contentType, RequestOptions options = null)
{
using PipelineMessage message = CreateTranscribeAudioRequestMessage(content, contentType, options);
PipelineResponse response = await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false);
return ClientResult.FromResponse(response);
}

[EditorBrowsable(EditorBrowsableState.Never)]
public override ClientResult TranslateAudio(BinaryContent content, string contentType, RequestOptions options = null)
{
using PipelineMessage message = CreateTranslateAudioRequestMessage(content, contentType, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}

[EditorBrowsable(EditorBrowsableState.Never)]
public override async Task<ClientResult> TranslateAudioAsync(BinaryContent content, string contentType, RequestOptions options = null)
{
using PipelineMessage message = CreateTranslateAudioRequestMessage(content, contentType, options);
PipelineResponse response = await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false);
return ClientResult.FromResponse(response);
}

#if !AZURE_OPENAI_GA
[EditorBrowsable(EditorBrowsableState.Never)]
public override ClientResult GenerateSpeech(BinaryContent content, RequestOptions options = null)
{
using PipelineMessage message = CreateGenerateSpeechFromTextRequestMessage(content, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}

[EditorBrowsable(EditorBrowsableState.Never)]
public override async Task<ClientResult> GenerateSpeechAsync(BinaryContent content, RequestOptions options = null)
{
using PipelineMessage message = CreateGenerateSpeechFromTextRequestMessage(content, options);
PipelineResponse response = await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false);
return ClientResult.FromResponse(response);
}
#else
[EditorBrowsable(EditorBrowsableState.Never)]
public override ClientResult GenerateSpeech(BinaryContent content, RequestOptions options = null)
Expand All @@ -69,7 +23,7 @@ public override Task<ClientResult> GenerateSpeechAsync(BinaryContent content, Re
}
#endif

private PipelineMessage CreateTranscribeAudioRequestMessage(BinaryContent content, string contentType, RequestOptions options)
internal override PipelineMessage CreateCreateTranscriptionRequest(BinaryContent content, string contentType, RequestOptions options)
=> new AzureOpenAIPipelineMessageBuilder(Pipeline, _endpoint, _apiVersion, _deploymentName)
.WithMethod("POST")
.WithPath("audio", "transcriptions")
Expand All @@ -78,7 +32,7 @@ private PipelineMessage CreateTranscribeAudioRequestMessage(BinaryContent conten
.WithOptions(options)
.Build();

private PipelineMessage CreateTranslateAudioRequestMessage(BinaryContent content, string contentType, RequestOptions options)
internal override PipelineMessage CreateCreateTranslationRequest(BinaryContent content, string contentType, RequestOptions options)
=> new AzureOpenAIPipelineMessageBuilder(Pipeline, _endpoint, _apiVersion, _deploymentName)
.WithMethod("POST")
.WithPath("audio", "translations")
Expand All @@ -87,7 +41,7 @@ private PipelineMessage CreateTranslateAudioRequestMessage(BinaryContent content
.WithOptions(options)
.Build();

private PipelineMessage CreateGenerateSpeechFromTextRequestMessage(BinaryContent content, RequestOptions options)
internal override PipelineMessage CreateCreateSpeechRequest(BinaryContent content, RequestOptions options)
=> new AzureOpenAIPipelineMessageBuilder(Pipeline, _endpoint, _apiVersion, _deploymentName)
.WithMethod("POST")
.WithPath("audio", "speech")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,62 +10,6 @@ namespace Azure.AI.OpenAI.Batch;

internal partial class AzureBatchClient : BatchClient
{
public override async Task<CreateBatchOperation> CreateBatchAsync(BinaryContent content, bool waitUntilCompleted, RequestOptions options = null)
{
Argument.AssertNotNull(content, nameof(content));

using PipelineMessage message = CreateCreateBatchRequest(content, options);
PipelineResponse response = await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false);

using JsonDocument doc = JsonDocument.Parse(response.Content);
string batchId = doc.RootElement.GetProperty("id"u8).GetString();
string status = doc.RootElement.GetProperty("status"u8).GetString();

CreateBatchOperation operation = CreateCreateBatchOperation(batchId, status, response);
return await operation.WaitUntilAsync(waitUntilCompleted, options).ConfigureAwait(false);
}

public override CreateBatchOperation CreateBatch(BinaryContent content, bool waitUntilCompleted, RequestOptions options = null)
{
Argument.AssertNotNull(content, nameof(content));

using PipelineMessage message = CreateCreateBatchRequest(content, options);
PipelineResponse response = Pipeline.ProcessMessage(message, options);

using JsonDocument doc = JsonDocument.Parse(response.Content);
string batchId = doc.RootElement.GetProperty("id"u8).GetString();
string status = doc.RootElement.GetProperty("status"u8).GetString();

CreateBatchOperation operation = CreateCreateBatchOperation(batchId, status, response);
return operation.WaitUntil(waitUntilCompleted, options);
}

public override AsyncCollectionResult GetBatchesAsync(string after, int? limit, RequestOptions options)
{
return new AsyncBatchCollectionResult(this, Pipeline, options, limit, after);
}

public override CollectionResult GetBatches(string after, int? limit, RequestOptions options)
{
return new BatchCollectionResult(this, Pipeline, options, limit, after);
}

internal override async Task<ClientResult> GetBatchAsync(string batchId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(batchId, nameof(batchId));

using PipelineMessage message = CreateRetrieveBatchRequest(batchId, options);
return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
}

internal override ClientResult GetBatch(string batchId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(batchId, nameof(batchId));

using PipelineMessage message = CreateRetrieveBatchRequest(batchId, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}

internal override PipelineMessage CreateCreateBatchRequest(BinaryContent content, RequestOptions options)
=> new AzureOpenAIPipelineMessageBuilder(Pipeline, _endpoint, _apiVersion, null)
.WithMethod("POST")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,4 @@ internal AzureBatchClient(ClientPipeline pipeline, Uri endpoint, AzureOpenAIClie

protected AzureBatchClient()
{ }

internal override CreateBatchOperation CreateCreateBatchOperation(string batchId, string status, PipelineResponse response)
{
return new AzureCreateBatchOperation(Pipeline, _endpoint, batchId, status, response, _apiVersion);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,41 +1,19 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using OpenAI.Chat;
using System.ClientModel;
using System.ClientModel.Primitives;
using System.ComponentModel;

namespace Azure.AI.OpenAI.Chat;

internal partial class AzureChatClient : ChatClient
{
[EditorBrowsable(EditorBrowsableState.Never)]
public override ClientResult CompleteChat(BinaryContent content, RequestOptions options = null)
{
using PipelineMessage message = CreateCompleteChatRequestMessage(content, options);
PipelineResponse response = Pipeline.ProcessMessage(message, options);
return ClientResult.FromResponse(message.BufferResponse ? response : message.ExtractResponse());
}

[EditorBrowsable(EditorBrowsableState.Never)]
public override async Task<ClientResult> CompleteChatAsync(BinaryContent content, RequestOptions options = null)
{
using PipelineMessage message = CreateCompleteChatRequestMessage(content, options);
PipelineResponse response = await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false);
return ClientResult.FromResponse(message.BufferResponse ? response : message.ExtractResponse());
}

private PipelineMessage CreateCompleteChatRequestMessage(
BinaryContent content,
RequestOptions options = null,
bool? bufferResponse = true)
=> new AzureOpenAIPipelineMessageBuilder(Pipeline, _endpoint, _apiVersion, _deploymentName)
.WithPath("chat", "completions")
.WithMethod("POST")
.WithContent(content, "application/json")
.WithAccept("application/json")
.WithResponseContentBuffering(bufferResponse)
.WithOptions(options)
.Build();
internal override PipelineMessage CreateCreateChatCompletionRequest(BinaryContent content, RequestOptions options)
=> new AzureOpenAIPipelineMessageBuilder(Pipeline, _endpoint, _apiVersion, _deploymentName)
.WithPath("chat", "completions")
.WithMethod("POST")
.WithContent(content, "application/json")
.WithAccept("application/json")
.WithOptions(options)
.Build();
}
Loading