Skip to content

Commit d3d23d8

Browse files
authored
[Text Analytics] Remove options parameter from DynamicClassify and DynamicClassifyAsync methods (Azure#33915)
The `DynamicClassify` and `DynamicClassifyAsync` methods of the `TextAnalyticsClient` class should not receive a `DynamicClassifyOptions` parameter. This is to align with the other convenience methods that receive a single document as a string parameter (e.g., `RecognizeEntities`, `ExtractKeyPhrases`, etc.) The `ClassificationType` property is also being "moved out" of the `DynamicClassifyOptions` class and turned into a standalone parameter that can be passed into all the dynamic classification methods. This means that customers can still choose the classification type (multi vs. single) when calling `DynamicClassify` or `DynamicClassifyAsync` without the options parameter. Additionally, we no longer need the `DynamicClassifyOptions` sub-class, since `ClassificationType` was the only property that it added on top of the `TextAnalyticsRequestOptions` base class.
1 parent b0df4c6 commit d3d23d8

12 files changed

+89
-306
lines changed

sdk/textanalytics/Azure.AI.TextAnalytics/api/Azure.AI.TextAnalytics.netstandard2.0.cs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -454,11 +454,6 @@ internal DynamicClassifyDocumentResultCollection() : base (default(System.Collec
454454
public string ModelVersion { get { throw null; } }
455455
public Azure.AI.TextAnalytics.TextDocumentBatchStatistics Statistics { get { throw null; } }
456456
}
457-
public partial class DynamicClassifyOptions : Azure.AI.TextAnalytics.TextAnalyticsRequestOptions
458-
{
459-
public DynamicClassifyOptions() { }
460-
public Azure.AI.TextAnalytics.ClassificationType? ClassificationType { get { throw null; } set { } }
461-
}
462457
public enum EntityAssociation
463458
{
464459
Subject = 0,
@@ -1593,12 +1588,12 @@ public TextAnalyticsClient(System.Uri endpoint, Azure.Core.TokenCredential crede
15931588
public virtual Azure.Response<Azure.AI.TextAnalytics.DetectLanguageResultCollection> DetectLanguageBatch(System.Collections.Generic.IEnumerable<string> documents, string countryHint = null, Azure.AI.TextAnalytics.TextAnalyticsRequestOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
15941589
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.AI.TextAnalytics.DetectLanguageResultCollection>> DetectLanguageBatchAsync(System.Collections.Generic.IEnumerable<Azure.AI.TextAnalytics.DetectLanguageInput> documents, Azure.AI.TextAnalytics.TextAnalyticsRequestOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
15951590
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.AI.TextAnalytics.DetectLanguageResultCollection>> DetectLanguageBatchAsync(System.Collections.Generic.IEnumerable<string> documents, string countryHint = null, Azure.AI.TextAnalytics.TextAnalyticsRequestOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1596-
public virtual Azure.Response<Azure.AI.TextAnalytics.ClassificationCategoryCollection> DynamicClassify(string document, System.Collections.Generic.IEnumerable<string> categories, string language = null, Azure.AI.TextAnalytics.DynamicClassifyOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1597-
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.AI.TextAnalytics.ClassificationCategoryCollection>> DynamicClassifyAsync(string document, System.Collections.Generic.IEnumerable<string> categories, string language = null, Azure.AI.TextAnalytics.DynamicClassifyOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1598-
public virtual Azure.Response<Azure.AI.TextAnalytics.DynamicClassifyDocumentResultCollection> DynamicClassifyBatch(System.Collections.Generic.IEnumerable<Azure.AI.TextAnalytics.TextDocumentInput> documents, System.Collections.Generic.IEnumerable<string> categories, Azure.AI.TextAnalytics.DynamicClassifyOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1599-
public virtual Azure.Response<Azure.AI.TextAnalytics.DynamicClassifyDocumentResultCollection> DynamicClassifyBatch(System.Collections.Generic.IEnumerable<string> documents, System.Collections.Generic.IEnumerable<string> categories, string language = null, Azure.AI.TextAnalytics.DynamicClassifyOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1600-
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.AI.TextAnalytics.DynamicClassifyDocumentResultCollection>> DynamicClassifyBatchAsync(System.Collections.Generic.IEnumerable<Azure.AI.TextAnalytics.TextDocumentInput> documents, System.Collections.Generic.IEnumerable<string> categories, Azure.AI.TextAnalytics.DynamicClassifyOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1601-
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.AI.TextAnalytics.DynamicClassifyDocumentResultCollection>> DynamicClassifyBatchAsync(System.Collections.Generic.IEnumerable<string> documents, System.Collections.Generic.IEnumerable<string> categories, string language = null, Azure.AI.TextAnalytics.DynamicClassifyOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1591+
public virtual Azure.Response<Azure.AI.TextAnalytics.ClassificationCategoryCollection> DynamicClassify(string document, System.Collections.Generic.IEnumerable<string> categories, Azure.AI.TextAnalytics.ClassificationType? classificationType = default(Azure.AI.TextAnalytics.ClassificationType?), string language = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1592+
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.AI.TextAnalytics.ClassificationCategoryCollection>> DynamicClassifyAsync(string document, System.Collections.Generic.IEnumerable<string> categories, Azure.AI.TextAnalytics.ClassificationType? classificationType = default(Azure.AI.TextAnalytics.ClassificationType?), string language = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1593+
public virtual Azure.Response<Azure.AI.TextAnalytics.DynamicClassifyDocumentResultCollection> DynamicClassifyBatch(System.Collections.Generic.IEnumerable<Azure.AI.TextAnalytics.TextDocumentInput> documents, System.Collections.Generic.IEnumerable<string> categories, Azure.AI.TextAnalytics.ClassificationType? classificationType = default(Azure.AI.TextAnalytics.ClassificationType?), Azure.AI.TextAnalytics.TextAnalyticsRequestOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1594+
public virtual Azure.Response<Azure.AI.TextAnalytics.DynamicClassifyDocumentResultCollection> DynamicClassifyBatch(System.Collections.Generic.IEnumerable<string> documents, System.Collections.Generic.IEnumerable<string> categories, Azure.AI.TextAnalytics.ClassificationType? classificationType = default(Azure.AI.TextAnalytics.ClassificationType?), string language = null, Azure.AI.TextAnalytics.TextAnalyticsRequestOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1595+
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.AI.TextAnalytics.DynamicClassifyDocumentResultCollection>> DynamicClassifyBatchAsync(System.Collections.Generic.IEnumerable<Azure.AI.TextAnalytics.TextDocumentInput> documents, System.Collections.Generic.IEnumerable<string> categories, Azure.AI.TextAnalytics.ClassificationType? classificationType = default(Azure.AI.TextAnalytics.ClassificationType?), Azure.AI.TextAnalytics.TextAnalyticsRequestOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
1596+
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.AI.TextAnalytics.DynamicClassifyDocumentResultCollection>> DynamicClassifyBatchAsync(System.Collections.Generic.IEnumerable<string> documents, System.Collections.Generic.IEnumerable<string> categories, Azure.AI.TextAnalytics.ClassificationType? classificationType = default(Azure.AI.TextAnalytics.ClassificationType?), string language = null, Azure.AI.TextAnalytics.TextAnalyticsRequestOptions options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
16021597
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
16031598
public override bool Equals(object obj) { throw null; }
16041599
public virtual Azure.Response<Azure.AI.TextAnalytics.KeyPhraseCollection> ExtractKeyPhrases(string document, string language = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }

sdk/textanalytics/Azure.AI.TextAnalytics/src/DynamicClassifyOptions.cs

Lines changed: 0 additions & 26 deletions
This file was deleted.

sdk/textanalytics/Azure.AI.TextAnalytics/src/ServiceClients/LanguageServiceClient.cs

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2094,15 +2094,13 @@ private async Task<ClassifyDocumentOperation> StartMultiLabelClassifyAsync(Multi
20942094
public override Response<ClassificationCategoryCollection> DynamicClassify(
20952095
string document,
20962096
IEnumerable<string> categories,
2097+
ClassificationType? classificationType = default,
20972098
string language = default,
2098-
DynamicClassifyOptions options = default,
20992099
CancellationToken cancellationToken = default)
21002100
{
21012101
Argument.AssertNotNullOrEmpty(document, nameof(document));
21022102
Argument.AssertNotNullOrEmpty(categories, nameof(categories));
21032103

2104-
options ??= new DynamicClassifyOptions();
2105-
21062104
using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(TextAnalyticsClient)}.{nameof(DynamicClassify)}");
21072105
scope.AddAttribute("document", document);
21082106
scope.Start();
@@ -2115,16 +2113,11 @@ public override Response<ClassificationCategoryCollection> DynamicClassify(
21152113
AnalyzeTextDynamicClassificationInput input = new()
21162114
{
21172115
AnalysisInput = multiLanguageInput,
2118-
Parameters = new DynamicClassificationTaskParameters(
2119-
options.DisableServiceLogs,
2120-
options.ModelVersion,
2121-
options.ClassificationType,
2122-
categories.ToList())
2116+
Parameters = new DynamicClassificationTaskParameters(categories.ToList()) { ClassificationType = classificationType }
21232117
};
21242118

21252119
Response<AnalyzeTextTaskResult> result = _languageRestClient.Analyze(
21262120
input,
2127-
options.IncludeStatistics,
21282121
cancellationToken: cancellationToken);
21292122

21302123
DynamicClassificationTaskResult taskResult = (DynamicClassificationTaskResult)result.Value;
@@ -2147,42 +2140,42 @@ public override Response<ClassificationCategoryCollection> DynamicClassify(
21472140
public override Response<DynamicClassifyDocumentResultCollection> DynamicClassifyBatch(
21482141
IEnumerable<string> documents,
21492142
IEnumerable<string> categories,
2143+
ClassificationType? classificationType = default,
21502144
string language = default,
2151-
DynamicClassifyOptions options = default,
2145+
TextAnalyticsRequestOptions options = default,
21522146
CancellationToken cancellationToken = default)
21532147
{
21542148
Argument.AssertNotNullOrEmpty(documents, nameof(documents));
21552149
Argument.AssertNotNullOrEmpty(categories, nameof(categories));
21562150
MultiLanguageAnalysisInput documentInputs = ConvertToMultiLanguageInputs(documents, language);
21572151

2158-
return DynamicClassifyBatch(documentInputs, categories, options, cancellationToken);
2152+
return DynamicClassifyBatch(documentInputs, categories, classificationType, options, cancellationToken);
21592153
}
21602154

21612155
public override Response<DynamicClassifyDocumentResultCollection> DynamicClassifyBatch(
21622156
IEnumerable<TextDocumentInput> documents,
21632157
IEnumerable<string> categories,
2164-
DynamicClassifyOptions options = default,
2158+
ClassificationType? classificationType = default,
2159+
TextAnalyticsRequestOptions options = default,
21652160
CancellationToken cancellationToken = default)
21662161
{
21672162
Argument.AssertNotNullOrEmpty(documents, nameof(documents));
21682163
Argument.AssertNotNullOrEmpty(categories, nameof(categories));
21692164
MultiLanguageAnalysisInput documentInputs = ConvertToMultiLanguageInputs(documents);
21702165

2171-
return DynamicClassifyBatch(documentInputs, categories, options, cancellationToken);
2166+
return DynamicClassifyBatch(documentInputs, categories, classificationType, options, cancellationToken);
21722167
}
21732168

21742169
public override async Task<Response<ClassificationCategoryCollection>> DynamicClassifyAsync(
21752170
string document,
21762171
IEnumerable<string> categories,
2172+
ClassificationType? classificationType = default,
21772173
string language = default,
2178-
DynamicClassifyOptions options = default,
21792174
CancellationToken cancellationToken = default)
21802175
{
21812176
Argument.AssertNotNullOrEmpty(document, nameof(document));
21822177
Argument.AssertNotNullOrEmpty(categories, nameof(categories));
21832178

2184-
options ??= new DynamicClassifyOptions();
2185-
21862179
using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(TextAnalyticsClient)}.{nameof(DynamicClassify)}");
21872180
scope.AddAttribute("document", document);
21882181
scope.Start();
@@ -2195,16 +2188,11 @@ public override async Task<Response<ClassificationCategoryCollection>> DynamicCl
21952188
AnalyzeTextDynamicClassificationInput input = new()
21962189
{
21972190
AnalysisInput = multiLanguageInput,
2198-
Parameters = new DynamicClassificationTaskParameters(
2199-
options.DisableServiceLogs,
2200-
options.ModelVersion,
2201-
options.ClassificationType,
2202-
categories.ToList())
2191+
Parameters = new DynamicClassificationTaskParameters(categories.ToList()) { ClassificationType = classificationType }
22032192
};
22042193

22052194
Response<AnalyzeTextTaskResult> result = await _languageRestClient.AnalyzeAsync(
22062195
input,
2207-
options.IncludeStatistics,
22082196
cancellationToken: cancellationToken).ConfigureAwait(false);
22092197

22102198
DynamicClassificationTaskResult taskResult = (DynamicClassificationTaskResult)result.Value;
@@ -2227,37 +2215,40 @@ public override async Task<Response<ClassificationCategoryCollection>> DynamicCl
22272215
public override async Task<Response<DynamicClassifyDocumentResultCollection>> DynamicClassifyBatchAsync(
22282216
IEnumerable<string> documents,
22292217
IEnumerable<string> categories,
2218+
ClassificationType? classificationType = default,
22302219
string language = default,
2231-
DynamicClassifyOptions options = default,
2220+
TextAnalyticsRequestOptions options = default,
22322221
CancellationToken cancellationToken = default)
22332222
{
22342223
Argument.AssertNotNullOrEmpty(documents, nameof(documents));
22352224
Argument.AssertNotNullOrEmpty(categories, nameof(categories));
22362225
MultiLanguageAnalysisInput documentInputs = ConvertToMultiLanguageInputs(documents, language);
22372226

2238-
return await DynamicClassifyBatchAsync(documentInputs, categories, options, cancellationToken).ConfigureAwait(false);
2227+
return await DynamicClassifyBatchAsync(documentInputs, categories, classificationType, options, cancellationToken).ConfigureAwait(false);
22392228
}
22402229

22412230
public override async Task<Response<DynamicClassifyDocumentResultCollection>> DynamicClassifyBatchAsync(
22422231
IEnumerable<TextDocumentInput> documents,
22432232
IEnumerable<string> categories,
2244-
DynamicClassifyOptions options = default,
2233+
ClassificationType? classificationType = default,
2234+
TextAnalyticsRequestOptions options = default,
22452235
CancellationToken cancellationToken = default)
22462236
{
22472237
Argument.AssertNotNullOrEmpty(documents, nameof(documents));
22482238
Argument.AssertNotNullOrEmpty(categories, nameof(categories));
22492239
MultiLanguageAnalysisInput documentInputs = ConvertToMultiLanguageInputs(documents);
22502240

2251-
return await DynamicClassifyBatchAsync(documentInputs, categories, options, cancellationToken).ConfigureAwait(false);
2241+
return await DynamicClassifyBatchAsync(documentInputs, categories, classificationType, options, cancellationToken).ConfigureAwait(false);
22522242
}
22532243

22542244
private Response<DynamicClassifyDocumentResultCollection> DynamicClassifyBatch(
22552245
MultiLanguageAnalysisInput multiLanguageInput,
22562246
IEnumerable<string> categories,
2257-
DynamicClassifyOptions options,
2247+
ClassificationType? classificationType,
2248+
TextAnalyticsRequestOptions options,
22582249
CancellationToken cancellationToken)
22592250
{
2260-
options ??= new DynamicClassifyOptions();
2251+
options ??= new TextAnalyticsRequestOptions();
22612252

22622253
using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(TextAnalyticsClient)}.{nameof(DynamicClassifyBatch)}");
22632254
scope.Start();
@@ -2270,7 +2261,7 @@ private Response<DynamicClassifyDocumentResultCollection> DynamicClassifyBatch(
22702261
Parameters = new DynamicClassificationTaskParameters(
22712262
options.DisableServiceLogs,
22722263
options.ModelVersion,
2273-
options.ClassificationType,
2264+
classificationType,
22742265
categories.ToList())
22752266
};
22762267

@@ -2296,10 +2287,11 @@ private Response<DynamicClassifyDocumentResultCollection> DynamicClassifyBatch(
22962287
private async Task<Response<DynamicClassifyDocumentResultCollection>> DynamicClassifyBatchAsync(
22972288
MultiLanguageAnalysisInput multiLanguageInput,
22982289
IEnumerable<string> categories,
2299-
DynamicClassifyOptions options,
2290+
ClassificationType? classificationType,
2291+
TextAnalyticsRequestOptions options,
23002292
CancellationToken cancellationToken)
23012293
{
2302-
options ??= new DynamicClassifyOptions();
2294+
options ??= new TextAnalyticsRequestOptions();
23032295

23042296
using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(TextAnalyticsClient)}.{nameof(DynamicClassifyBatch)}");
23052297
scope.Start();
@@ -2312,7 +2304,7 @@ private async Task<Response<DynamicClassifyDocumentResultCollection>> DynamicCla
23122304
Parameters = new DynamicClassificationTaskParameters(
23132305
options.DisableServiceLogs,
23142306
options.ModelVersion,
2315-
options.ClassificationType,
2307+
classificationType,
23162308
categories.ToList())
23172309
};
23182310

0 commit comments

Comments
 (0)