Skip to content

Commit 68b25ae

Browse files
authored
Rename EmbeddingGeneratorExtensions.GenerateEmbedding extension methods (#6295)
To align with the the base method on IEmbeddingGenerator
1 parent c0ba911 commit 68b25ae

File tree

10 files changed

+35
-35
lines changed

10 files changed

+35
-35
lines changed

src/Libraries/Microsoft.Extensions.AI.Abstractions/Embeddings/EmbeddingGeneratorExtensions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,16 @@ public static TService GetRequiredService<TService>(
9999
/// <exception cref="ArgumentNullException"><paramref name="value"/> is <see langword="null"/>.</exception>
100100
/// <exception cref="InvalidOperationException">The generator did not produce exactly one embedding.</exception>
101101
/// <remarks>
102-
/// This operation is equivalent to using <see cref="GenerateEmbeddingAsync"/> and returning the
102+
/// This operation is equivalent to using <see cref="GenerateAsync"/> and returning the
103103
/// resulting <see cref="Embedding{T}"/>'s <see cref="Embedding{T}.Vector"/> property.
104104
/// </remarks>
105-
public static async Task<ReadOnlyMemory<TEmbeddingElement>> GenerateEmbeddingVectorAsync<TInput, TEmbeddingElement>(
105+
public static async Task<ReadOnlyMemory<TEmbeddingElement>> GenerateVectorAsync<TInput, TEmbeddingElement>(
106106
this IEmbeddingGenerator<TInput, Embedding<TEmbeddingElement>> generator,
107107
TInput value,
108108
EmbeddingGenerationOptions? options = null,
109109
CancellationToken cancellationToken = default)
110110
{
111-
var embedding = await GenerateEmbeddingAsync(generator, value, options, cancellationToken).ConfigureAwait(false);
111+
var embedding = await GenerateAsync(generator, value, options, cancellationToken).ConfigureAwait(false);
112112
return embedding.Vector;
113113
}
114114

@@ -130,7 +130,7 @@ public static async Task<ReadOnlyMemory<TEmbeddingElement>> GenerateEmbeddingVec
130130
/// collection composed of the single <paramref name="value"/> and then returning the first embedding element from the
131131
/// resulting <see cref="GeneratedEmbeddings{TEmbedding}"/> collection.
132132
/// </remarks>
133-
public static async Task<TEmbedding> GenerateEmbeddingAsync<TInput, TEmbedding>(
133+
public static async Task<TEmbedding> GenerateAsync<TInput, TEmbedding>(
134134
this IEmbeddingGenerator<TInput, TEmbedding> generator,
135135
TInput value,
136136
EmbeddingGenerationOptions? options = null,

src/Libraries/Microsoft.Extensions.AI.Abstractions/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ using Microsoft.Extensions.AI;
522522
IEmbeddingGenerator<string, Embedding<float>> generator =
523523
new SampleEmbeddingGenerator(new Uri("http://coolsite.ai"), "my-custom-model");
524524

525-
ReadOnlyMemory<float> vector = generator.GenerateEmbeddingVectorAsync("What is AI?");
525+
ReadOnlyMemory<float> vector = generator.GenerateVectorAsync("What is AI?");
526526
```
527527

528528
#### Pipelines of Functionality

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/ChatWithCustomData-CSharp.Web/Services/SemanticSearch.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class SemanticSearch(
99
{
1010
public async Task<IReadOnlyList<SemanticSearchRecord>> SearchAsync(string text, string? filenameFilter, int maxResults)
1111
{
12-
var queryEmbedding = await embeddingGenerator.GenerateEmbeddingVectorAsync(text);
12+
var queryEmbedding = await embeddingGenerator.GenerateVectorAsync(text);
1313
#if (UseQdrant)
1414
var vectorCollection = vectorStore.GetCollection<Guid, SemanticSearchRecord>("data-ChatWithCustomData-CSharp.Web-ingestion");
1515
#else

test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Embeddings/EmbeddingGeneratorExtensionsTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ public void GetService_ValidService_Returned()
7878
[Fact]
7979
public async Task GenerateAsync_InvalidArgs_ThrowsAsync()
8080
{
81-
await Assert.ThrowsAsync<ArgumentNullException>("generator", () => ((TestEmbeddingGenerator)null!).GenerateEmbeddingAsync("hello"));
82-
await Assert.ThrowsAsync<ArgumentNullException>("generator", () => ((TestEmbeddingGenerator)null!).GenerateEmbeddingVectorAsync("hello"));
81+
await Assert.ThrowsAsync<ArgumentNullException>("generator", () => ((TestEmbeddingGenerator)null!).GenerateAsync("hello"));
82+
await Assert.ThrowsAsync<ArgumentNullException>("generator", () => ((TestEmbeddingGenerator)null!).GenerateVectorAsync("hello"));
8383
await Assert.ThrowsAsync<ArgumentNullException>("generator", () => ((TestEmbeddingGenerator)null!).GenerateAndZipAsync(["hello"]));
8484
}
8585

@@ -94,8 +94,8 @@ public async Task GenerateAsync_ReturnsSingleEmbeddingAsync()
9494
Task.FromResult<GeneratedEmbeddings<Embedding<float>>>([result])
9595
};
9696

97-
Assert.Same(result, await service.GenerateEmbeddingAsync("hello"));
98-
Assert.Equal(result.Vector, await service.GenerateEmbeddingVectorAsync("hello"));
97+
Assert.Same(result, await service.GenerateAsync("hello"));
98+
Assert.Equal(result.Vector, await service.GenerateVectorAsync("hello"));
9999
}
100100

101101
[Theory]

test/Libraries/Microsoft.Extensions.AI.Integration.Tests/EmbeddingGeneratorIntegrationTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,10 @@ public virtual async Task Caching_SameOutputsForSameInput()
8888
.Build();
8989

9090
string input = "Red, White, and Blue";
91-
var embedding1 = await generator.GenerateEmbeddingAsync(input);
92-
var embedding2 = await generator.GenerateEmbeddingAsync(input);
93-
var embedding3 = await generator.GenerateEmbeddingAsync(input + "... and Green");
94-
var embedding4 = await generator.GenerateEmbeddingAsync(input);
91+
var embedding1 = await generator.GenerateAsync(input);
92+
var embedding2 = await generator.GenerateAsync(input);
93+
var embedding3 = await generator.GenerateAsync(input + "... and Green");
94+
var embedding4 = await generator.GenerateAsync(input);
9595

9696
var callCounter = generator.GetService<CallCountingEmbeddingGenerator>();
9797
Assert.NotNull(callCounter);
@@ -116,7 +116,7 @@ public virtual async Task OpenTelemetry_CanEmitTracesAndMetrics()
116116
.UseOpenTelemetry(sourceName: sourceName)
117117
.Build();
118118

119-
_ = await embeddingGenerator.GenerateEmbeddingAsync("Hello, world!");
119+
_ = await embeddingGenerator.GenerateAsync("Hello, world!");
120120

121121
Assert.Single(activities);
122122
var activity = activities.Single();

test/Libraries/Microsoft.Extensions.AI.Tests/Embeddings/DistributedCachingEmbeddingGeneratorTest.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ public async Task CachesSuccessResultsAsync()
4343
};
4444

4545
// Make the initial request and do a quick sanity check
46-
var result1 = await outer.GenerateEmbeddingAsync("abc");
46+
var result1 = await outer.GenerateAsync("abc");
4747
AssertEmbeddingsEqual(_expectedEmbedding, result1);
4848
Assert.Equal(1, innerCallCount);
4949

5050
// Act
51-
var result2 = await outer.GenerateEmbeddingAsync("abc");
51+
var result2 = await outer.GenerateAsync("abc");
5252

5353
// Assert
5454
Assert.Equal(1, innerCallCount);
@@ -134,8 +134,8 @@ public async Task AllowsConcurrentCallsAsync()
134134
};
135135

136136
// Act 1: Concurrent calls before resolution are passed into the inner client
137-
var result1 = outer.GenerateEmbeddingAsync("abc");
138-
var result2 = outer.GenerateEmbeddingAsync("abc");
137+
var result1 = outer.GenerateAsync("abc");
138+
var result2 = outer.GenerateAsync("abc");
139139

140140
// Assert 1
141141
Assert.Equal(2, innerCallCount);
@@ -146,7 +146,7 @@ public async Task AllowsConcurrentCallsAsync()
146146
AssertEmbeddingsEqual(_expectedEmbedding, await result2);
147147

148148
// Act 2: Subsequent calls after completion are resolved from the cache
149-
var result3 = await outer.GenerateEmbeddingAsync("abc");
149+
var result3 = await outer.GenerateAsync("abc");
150150
Assert.Equal(2, innerCallCount);
151151
AssertEmbeddingsEqual(_expectedEmbedding, await result1);
152152
}
@@ -169,12 +169,12 @@ public async Task DoesNotCacheExceptionResultsAsync()
169169
JsonSerializerOptions = TestJsonSerializerContext.Default.Options,
170170
};
171171

172-
var ex1 = await Assert.ThrowsAsync<InvalidTimeZoneException>(() => outer.GenerateEmbeddingAsync("abc"));
172+
var ex1 = await Assert.ThrowsAsync<InvalidTimeZoneException>(() => outer.GenerateAsync("abc"));
173173
Assert.Equal("some failure", ex1.Message);
174174
Assert.Equal(1, innerCallCount);
175175

176176
// Act
177-
var ex2 = await Assert.ThrowsAsync<InvalidTimeZoneException>(() => outer.GenerateEmbeddingAsync("abc"));
177+
var ex2 = await Assert.ThrowsAsync<InvalidTimeZoneException>(() => outer.GenerateAsync("abc"));
178178

179179
// Assert
180180
Assert.NotSame(ex1, ex2);
@@ -207,15 +207,15 @@ public async Task DoesNotCacheCanceledResultsAsync()
207207
};
208208

209209
// First call gets cancelled
210-
var result1 = outer.GenerateEmbeddingAsync("abc");
210+
var result1 = outer.GenerateAsync("abc");
211211
Assert.False(result1.IsCompleted);
212212
Assert.Equal(1, innerCallCount);
213213
resolutionTcs.SetCanceled();
214214
await Assert.ThrowsAnyAsync<OperationCanceledException>(() => result1);
215215
Assert.True(result1.IsCanceled);
216216

217217
// Act/Assert: Second call can succeed
218-
var result2 = await outer.GenerateEmbeddingAsync("abc");
218+
var result2 = await outer.GenerateAsync("abc");
219219
Assert.Equal(2, innerCallCount);
220220
AssertEmbeddingsEqual(_expectedEmbedding, result2);
221221
}
@@ -241,11 +241,11 @@ public async Task CacheKeyVariesByEmbeddingOptionsAsync()
241241
};
242242

243243
// Act: Call with two different EmbeddingGenerationOptions that have the same values
244-
var result1 = await outer.GenerateEmbeddingAsync("abc", new EmbeddingGenerationOptions
244+
var result1 = await outer.GenerateAsync("abc", new EmbeddingGenerationOptions
245245
{
246246
AdditionalProperties = new() { ["someKey"] = "value 1" }
247247
});
248-
var result2 = await outer.GenerateEmbeddingAsync("abc", new EmbeddingGenerationOptions
248+
var result2 = await outer.GenerateAsync("abc", new EmbeddingGenerationOptions
249249
{
250250
AdditionalProperties = new() { ["someKey"] = "value 1" }
251251
});
@@ -256,11 +256,11 @@ public async Task CacheKeyVariesByEmbeddingOptionsAsync()
256256
AssertEmbeddingsEqual(new("value 1".Select(c => (float)c).ToArray()), result2);
257257

258258
// Act: Call with two different EmbeddingGenerationOptions that have different values
259-
var result3 = await outer.GenerateEmbeddingAsync("abc", new EmbeddingGenerationOptions
259+
var result3 = await outer.GenerateAsync("abc", new EmbeddingGenerationOptions
260260
{
261261
AdditionalProperties = new() { ["someKey"] = "value 1" }
262262
});
263-
var result4 = await outer.GenerateEmbeddingAsync("abc", new EmbeddingGenerationOptions
263+
var result4 = await outer.GenerateAsync("abc", new EmbeddingGenerationOptions
264264
{
265265
AdditionalProperties = new() { ["someKey"] = "value 2" }
266266
});
@@ -292,11 +292,11 @@ public async Task SubclassCanOverrideCacheKeyToVaryByOptionsAsync()
292292
};
293293

294294
// Act: Call with two different options
295-
var result1 = await outer.GenerateEmbeddingAsync("abc", new EmbeddingGenerationOptions
295+
var result1 = await outer.GenerateAsync("abc", new EmbeddingGenerationOptions
296296
{
297297
AdditionalProperties = new() { ["someKey"] = "value 1" }
298298
});
299-
var result2 = await outer.GenerateEmbeddingAsync("abc", new EmbeddingGenerationOptions
299+
var result2 = await outer.GenerateAsync("abc", new EmbeddingGenerationOptions
300300
{
301301
AdditionalProperties = new() { ["someKey"] = "value 2" }
302302
});
@@ -331,7 +331,7 @@ public async Task CanResolveIDistributedCacheFromDI()
331331

332332
// Act: Make a request that should populate the cache
333333
Assert.Empty(_storage.Keys);
334-
var result = await outer.GenerateEmbeddingAsync("abc");
334+
var result = await outer.GenerateAsync("abc");
335335

336336
// Assert
337337
Assert.NotNull(result);

test/Libraries/Microsoft.Extensions.AI.Tests/Embeddings/LoggingEmbeddingGeneratorTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public async Task GetResponseAsync_LogsResponseInvocationAndCompletion(LogLevel
6464
.UseLogging()
6565
.Build(services);
6666

67-
await generator.GenerateEmbeddingAsync("Blue whale");
67+
await generator.GenerateAsync("Blue whale");
6868

6969
var logs = collector.GetSnapshot();
7070
if (level is LogLevel.Trace)

test/Libraries/Microsoft.Extensions.AI.Tests/Embeddings/OpenTelemetryEmbeddingGeneratorTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public async Task ExpectedInformationLogged_Async(string? perRequestModelId)
6969
},
7070
};
7171

72-
await generator.GenerateEmbeddingVectorAsync("hello", options);
72+
await generator.GenerateVectorAsync("hello", options);
7373

7474
var activity = Assert.Single(activities);
7575
var expectedModelName = perRequestModelId ?? "defaultmodel";

test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Snapshots/aichatweb.Basic.verified/aichatweb/Services/SemanticSearch.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class SemanticSearch(
99
{
1010
public async Task<IReadOnlyList<SemanticSearchRecord>> SearchAsync(string text, string? filenameFilter, int maxResults)
1111
{
12-
var queryEmbedding = await embeddingGenerator.GenerateEmbeddingVectorAsync(text);
12+
var queryEmbedding = await embeddingGenerator.GenerateVectorAsync(text);
1313
var vectorCollection = vectorStore.GetCollection<string, SemanticSearchRecord>("data-aichatweb-ingested");
1414

1515
var nearest = await vectorCollection.VectorizedSearchAsync(queryEmbedding, new VectorSearchOptions<SemanticSearchRecord>

test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Snapshots/aichatweb.BasicAspire--aspire.verified/aichatweb/aichatweb.Web/Services/SemanticSearch.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class SemanticSearch(
99
{
1010
public async Task<IReadOnlyList<SemanticSearchRecord>> SearchAsync(string text, string? filenameFilter, int maxResults)
1111
{
12-
var queryEmbedding = await embeddingGenerator.GenerateEmbeddingVectorAsync(text);
12+
var queryEmbedding = await embeddingGenerator.GenerateVectorAsync(text);
1313
var vectorCollection = vectorStore.GetCollection<string, SemanticSearchRecord>("data-aichatweb-ingested");
1414

1515
var nearest = await vectorCollection.VectorizedSearchAsync(queryEmbedding, new VectorSearchOptions<SemanticSearchRecord>

0 commit comments

Comments
 (0)