Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AOAI: plugin-ify the Azure build #358

Merged
merged 9 commits into from
Feb 27, 2025
Merged
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
3 changes: 3 additions & 0 deletions .dotnet.azure/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Artifacts from the generator
sdk/openai/Azure.AI.OpenAI/tspCodeModel.json
sdk/openai/Azure.AI.OpenAI/Configuration.json
1 change: 0 additions & 1 deletion .dotnet.azure/sdk/openai/.gitignore

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ namespace Azure.AI.OpenAI.Chat;
internal partial class InternalElasticsearchChatDataSourceParameters
{
[CodeGenMember("IncludeContexts")]
private IList<string> _internalIncludeContexts = new ChangeTrackingList<string>();
private IList<string> InternalIncludeContexts { get; set; } = new ChangeTrackingList<string>();
private DataSourceOutputContexts? _outputContexts;

/// <inheritdoc cref="DataSourceOutputContexts"/>
public DataSourceOutputContexts? OutputContexts
{
get => DataSourceOutputContextsExtensions.FromStringList(_internalIncludeContexts);
get => DataSourceOutputContextsExtensions.FromStringList(InternalIncludeContexts);
internal set
{
_outputContexts = value;
_internalIncludeContexts = _outputContexts?.ToStringList();
InternalIncludeContexts = _outputContexts?.ToStringList();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ public DataSourceVectorizer VectorizationSource
/// <summary>
/// Creates a new instance of <see cref="AzureSearchChatDataSource"/>.
/// </summary>
public AzureSearchChatDataSource() : base(type: "azure_search", serializedAdditionalRawData: null)
public AzureSearchChatDataSource() : base(type: "azure_search", additionalBinaryDataProperties: null)
{
InternalParameters = new();
}
Expand All @@ -132,11 +132,11 @@ internal AzureSearchChatDataSource(InternalAzureSearchChatDataSourceParameters i

/// <summary> Initializes a new instance of <see cref="AzureSearchChatDataSource"/>. </summary>
/// <param name="type"></param>
/// <param name="serializedAdditionalRawData"> Keeps track of any properties unknown to the library. </param>
/// <param name="additionalBinaryDataProperties"> Keeps track of any properties unknown to the library. </param>
/// <param name="internalParameters"> The parameter information to control the use of the Azure Search data source. </param>
[SetsRequiredMembers]
internal AzureSearchChatDataSource(string type, IDictionary<string, BinaryData> serializedAdditionalRawData, InternalAzureSearchChatDataSourceParameters internalParameters)
: base(type, serializedAdditionalRawData)
internal AzureSearchChatDataSource(string type, IDictionary<string, BinaryData> additionalBinaryDataProperties, InternalAzureSearchChatDataSourceParameters internalParameters)
: base(type, additionalBinaryDataProperties)
{
InternalParameters = internalParameters;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public DataSourceOutputContexts? OutputContexts
/// <summary>
/// Initializes a new instance of <see cref="CosmosChatDataSource"/>.
/// </summary>
public CosmosChatDataSource() : base(type: "azure_cosmos_db", serializedAdditionalRawData: null)
public CosmosChatDataSource() : base(type: "azure_cosmos_db", additionalBinaryDataProperties: null)
{
InternalParameters = new();
}
Expand All @@ -118,11 +118,11 @@ internal CosmosChatDataSource(InternalAzureCosmosDBChatDataSourceParameters inte

/// <summary> Initializes a new instance of <see cref="CosmosChatDataSource"/>. </summary>
/// <param name="type"></param>
/// <param name="serializedAdditionalRawData"> Keeps track of any properties unknown to the library. </param>
/// <param name="additionalBinaryDataProperties"> Keeps track of any properties unknown to the library. </param>
/// <param name="internalParameters"> The parameter information to control the use of the Azure Search data source. </param>
[SetsRequiredMembers]
internal CosmosChatDataSource(string type, IDictionary<string, BinaryData> serializedAdditionalRawData, InternalAzureCosmosDBChatDataSourceParameters internalParameters)
: base(type, serializedAdditionalRawData)
internal CosmosChatDataSource(string type, IDictionary<string, BinaryData> additionalBinaryDataProperties, InternalAzureCosmosDBChatDataSourceParameters internalParameters)
: base(type, additionalBinaryDataProperties)
{
InternalParameters = internalParameters;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public DataSourceVectorizer VectorizationSource
set => InternalParameters.VectorizationSource = value;
}

public ElasticsearchChatDataSource() : base(type: "elasticsearch", serializedAdditionalRawData: null)
public ElasticsearchChatDataSource() : base(type: "elasticsearch", additionalBinaryDataProperties: null)
{
InternalParameters = new();
}
Expand All @@ -129,11 +129,11 @@ internal ElasticsearchChatDataSource(InternalElasticsearchChatDataSourceParamete

/// <summary> Initializes a new instance of <see cref="ElasticsearchChatDataSource"/>. </summary>
/// <param name="type"></param>
/// <param name="serializedAdditionalRawData"> Keeps track of any properties unknown to the library. </param>
/// <param name="additionalBinaryDataProperties"> Keeps track of any properties unknown to the library. </param>
/// <param name="internalParameters"> The parameter information to control the use of the Azure Search data source. </param>
[SetsRequiredMembers]
internal ElasticsearchChatDataSource(string type, IDictionary<string, BinaryData> serializedAdditionalRawData, InternalElasticsearchChatDataSourceParameters internalParameters)
: base(type, serializedAdditionalRawData)
internal ElasticsearchChatDataSource(string type, IDictionary<string, BinaryData> additionalBinaryDataProperties, InternalElasticsearchChatDataSourceParameters internalParameters)
: base(type, additionalBinaryDataProperties)
{
InternalParameters = internalParameters;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ public DataSourceVectorizer VectorizationSource
/// <summary>
/// Creates a new instance of <see cref="MongoDBChatDataSource"/>.
/// </summary>
public MongoDBChatDataSource() : base(type: "mongo_db", serializedAdditionalRawData: null)
public MongoDBChatDataSource() : base(type: "mongo_db", additionalBinaryDataProperties: null)
{
InternalParameters = new();
}
Expand All @@ -131,11 +131,11 @@ internal MongoDBChatDataSource(InternalMongoDBChatDataSourceParameters internalP

/// <summary> Initializes a new instance of <see cref="MongoDBChatDataSource"/>. </summary>
/// <param name="type"></param>
/// <param name="serializedAdditionalRawData"> Keeps track of any properties unknown to the library. </param>
/// <param name="additionalBinaryDataProperties"> Keeps track of any properties unknown to the library. </param>
/// <param name="internalParameters"> The parameter information to control the use of the Azure Search data source. </param>
[SetsRequiredMembers]
internal MongoDBChatDataSource(string type, IDictionary<string, BinaryData> serializedAdditionalRawData, InternalMongoDBChatDataSourceParameters internalParameters)
: base(type, serializedAdditionalRawData)
internal MongoDBChatDataSource(string type, IDictionary<string, BinaryData> additionalBinaryDataProperties, InternalMongoDBChatDataSourceParameters internalParameters)
: base(type, additionalBinaryDataProperties)
{
InternalParameters = internalParameters;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public DataSourceOutputContexts? OutputContexts
set => InternalParameters.OutputContexts = value;
}

public PineconeChatDataSource() : base(type: "pinecone", serializedAdditionalRawData: null)
public PineconeChatDataSource() : base(type: "pinecone", additionalBinaryDataProperties: null)
{
InternalParameters = new();
}
Expand All @@ -122,11 +122,11 @@ internal PineconeChatDataSource(InternalPineconeChatDataSourceParameters interna

/// <summary> Initializes a new instance of <see cref="PineconeChatDataSource"/>. </summary>
/// <param name="type"></param>
/// <param name="serializedAdditionalRawData"> Keeps track of any properties unknown to the library. </param>
/// <param name="additionalBinaryDataProperties"> Keeps track of any properties unknown to the library. </param>
/// <param name="internalParameters"> The parameter information to control the use of the Azure Search data source. </param>
[SetsRequiredMembers]
internal PineconeChatDataSource(string type, IDictionary<string, BinaryData> serializedAdditionalRawData, InternalPineconeChatDataSourceParameters internalParameters)
: base(type, serializedAdditionalRawData)
internal PineconeChatDataSource(string type, IDictionary<string, BinaryData> additionalBinaryDataProperties, InternalPineconeChatDataSourceParameters internalParameters)
: base(type, additionalBinaryDataProperties)
{
InternalParameters = internalParameters;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ private static T GetAdditionalProperty<T>(IDictionary<string, BinaryData> additi
}

using JsonDocument document = JsonDocument.Parse(additionalPropertyValue);
return deserializeFunction(document.RootElement, null);
return deserializeFunction(document.RootElement, ModelSerializationExtensions.WireOptions);
}

private static IList<T> GetAdditionalPropertyAsList<T>(IDictionary<string, BinaryData> additionalProperties, string additionalPropertyKey, Func<JsonElement, ModelReaderWriterOptions, T> deserializeFunction) where T : class, IJsonModel<T>
Expand All @@ -35,7 +35,7 @@ private static IList<T> GetAdditionalPropertyAsList<T>(IDictionary<string, Binar

foreach (JsonElement element in document.RootElement.EnumerateArray())
{
items.Add(deserializeFunction(element, null));
items.Add(deserializeFunction(element, ModelSerializationExtensions.WireOptions));
}

return items;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ internal static RequestContentFilterResult DeserializeContentFilterResultForProm
}
int? promptIndex = default;
InternalAzureContentFilterResultForPromptContentFilterResults contentFilterResults = default;
IDictionary<string, BinaryData> serializedAdditionalRawData = default;
IDictionary<string, BinaryData> additionalBinaryDataProperties = default;
Dictionary<string, BinaryData> rawDataDictionary = new Dictionary<string, BinaryData>();
foreach (var property in element.EnumerateObject())
{
Expand Down Expand Up @@ -47,7 +47,7 @@ internal static RequestContentFilterResult DeserializeContentFilterResultForProm
rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText()));
}
}
serializedAdditionalRawData = rawDataDictionary;
return new RequestContentFilterResult(promptIndex, contentFilterResults, serializedAdditionalRawData);
additionalBinaryDataProperties = rawDataDictionary;
return new RequestContentFilterResult(promptIndex, contentFilterResults, additionalBinaryDataProperties);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public override ClientResult<OpenAIFile> UploadFile(Stream file, string filename
Argument.AssertNotNull(file, "file");
Argument.AssertNotNullOrEmpty(filename, "filename");

using MultipartFormDataBinaryContent content = CreateMultiPartContentWithMimeType(file, filename, purpose);
using MultiPartFormDataBinaryContent content = CreateMultiPartContentWithMimeType(file, filename, purpose);
ClientResult clientResult = UploadFile(content, content.ContentType, new() { CancellationToken = cancellationToken });

return GetAzureFileResult(clientResult);
Expand All @@ -66,7 +66,7 @@ public override async Task<ClientResult<OpenAIFile>> UploadFileAsync(Stream file
Argument.AssertNotNull(file, "file");
Argument.AssertNotNullOrEmpty(filename, "filename");

using MultipartFormDataBinaryContent content = CreateMultiPartContentWithMimeType(file, filename, purpose);
using MultiPartFormDataBinaryContent content = CreateMultiPartContentWithMimeType(file, filename, purpose);
ClientResult result = await UploadFileAsync(content, content.ContentType, new() { CancellationToken = cancellationToken })
.ConfigureAwait(continueOnCapturedContext: false);
return GetAzureFileResult(result);
Expand Down Expand Up @@ -108,9 +108,9 @@ public override ClientResult<OpenAIFileCollection> GetFiles(FilePurpose purpose,
return GetTypedResult<OpenAIFileCollection, AzureOpenAIFileCollection>(protocolResult, AzureOpenAIFileCollection.FromResponse);
}

private MultipartFormDataBinaryContent CreateMultiPartContentWithMimeType(Stream file, string filename, FileUploadPurpose purpose)
private MultiPartFormDataBinaryContent CreateMultiPartContentWithMimeType(Stream file, string filename, FileUploadPurpose purpose)
{
MultipartFormDataBinaryContent multipartFormDataBinaryContent = new MultipartFormDataBinaryContent();
MultiPartFormDataBinaryContent multipartFormDataBinaryContent = new();
string contentType = "text/plain";
if (purpose == FileUploadPurpose.Batch)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ internal static AzureOpenAIFile DeserializeAzureOpenAIFile(JsonElement element,
string purpose = default;
string statusDetails = default;
AzureOpenAIFileStatus status = default;
IDictionary<string, BinaryData> serializedAdditionalRawData = default;
IDictionary<string, BinaryData> additionalBinaryDataProperties = default;
Dictionary<string, BinaryData> rawDataDictionary = new Dictionary<string, BinaryData>();
foreach (var property in element.EnumerateObject())
{
Expand Down Expand Up @@ -152,7 +152,7 @@ internal static AzureOpenAIFile DeserializeAzureOpenAIFile(JsonElement element,
rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText()));
}
}
serializedAdditionalRawData = rawDataDictionary;
additionalBinaryDataProperties = rawDataDictionary;
return new AzureOpenAIFile(
id,
bytes,
Expand All @@ -162,7 +162,7 @@ internal static AzureOpenAIFile DeserializeAzureOpenAIFile(JsonElement element,
purpose,
statusDetails,
status,
serializedAdditionalRawData);
additionalBinaryDataProperties);
}

void IJsonModel<AzureOpenAIFile>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,9 @@ internal AzureOpenAIFile(string id, int? bytes, DateTimeOffset createdAt, string
/// <param name="purpose"> The intended purpose of the file. Supported values are `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results` and `vision`. </param>
/// <param name="statusDetails"> Deprecated. For details on why a fine-tuning training file failed validation, see the `error` field on `fine_tuning.job`. </param>
/// <param name="azureStatus"></param>
/// <param name="serializedAdditionalRawData"> Keeps track of any properties unknown to the library. </param>
internal AzureOpenAIFile(string id, int? bytes, DateTimeOffset createdAt, string filename, InternalOpenAIFileObject @object, string purpose, string statusDetails, AzureOpenAIFileStatus azureStatus, IDictionary<string, BinaryData> serializedAdditionalRawData)
: base(id, createdAt, filename, purpose.ToFilePurpose(), @object, bytes, azureStatus.ToFileStatus(), statusDetails, serializedAdditionalRawData)
/// <param name="additionalBinaryDataProperties"> Keeps track of any properties unknown to the library. </param>
internal AzureOpenAIFile(string id, int? bytes, DateTimeOffset createdAt, string filename, InternalOpenAIFileObject @object, string purpose, string statusDetails, AzureOpenAIFileStatus azureStatus, IDictionary<string, BinaryData> additionalBinaryDataProperties)
: base(id, createdAt, filename, purpose.ToFilePurpose(), @object, bytes, azureStatus.ToFileStatus(), statusDetails, additionalBinaryDataProperties)
{
_object = @object.ToString();
_purpose = purpose;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ internal static AzureOpenAIChatError TryCreateFromResponse(PipelineResponse resp
{
using JsonDocument errorDocument = JsonDocument.Parse(response.Content);
AzureOpenAIChatErrorResponse errorResponse
= AzureOpenAIChatErrorResponse.DeserializeAzureOpenAIChatErrorResponse(errorDocument.RootElement);
= AzureOpenAIChatErrorResponse.DeserializeAzureOpenAIChatErrorResponse(errorDocument.RootElement, ModelSerializationExtensions.WireOptions);
return errorResponse.Error;
}
catch (InvalidOperationException)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ internal static AzureOpenAIDalleError TryCreateFromResponse(PipelineResponse res
{
using JsonDocument errorDocument = JsonDocument.Parse(response.Content);
AzureOpenAIDalleErrorResponse errorResponse
= AzureOpenAIDalleErrorResponse.DeserializeAzureOpenAIDalleErrorResponse(errorDocument.RootElement);
= AzureOpenAIDalleErrorResponse.DeserializeAzureOpenAIDalleErrorResponse(errorDocument.RootElement, ModelSerializationExtensions.WireOptions);
return errorResponse.Error;
}
catch (InvalidOperationException)
Expand Down
Loading