Skip to content

Commit fd40aff

Browse files
Generate embedings
1 parent 3086f80 commit fd40aff

File tree

5 files changed

+29
-10
lines changed

5 files changed

+29
-10
lines changed

dotnet/Directory.Packages.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1414
<PrivateAssets>all</PrivateAssets>
1515
</PackageVersion>
16+
<PackageVersion Include="morelinq" Version="4.3.0" />
1617
<PackageVersion Include="OllamaSharp" Version="4.0.7" />
1718
<PackageVersion Include="OpenAI" Version="2.1.0-beta.2" />
1819
<PackageVersion Include="System.Linq.Async" Version="6.0.1" />

dotnet/S03E02/GlobalUsings.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
global using System.Text.Json;
2-
global using Microsoft.Extensions.Hosting;
31
global using Microsoft.Extensions.DependencyInjection;
2+
global using Microsoft.Extensions.Hosting;
43
global using Microsoft.Extensions.Options;
4+
global using OpenAI;
5+
global using System.Text.Json;

dotnet/S03E02/Program.cs

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,31 @@
1-
using System.Collections.Immutable;
2-
using Common.AiDevsApi.Contracts;
3-
using Common.AiDevsApi.Models;
4-
using Common.Cache.Contracts;
5-
using OpenAI.Chat;
6-
using S03E01;
1+
using OpenAI.Embeddings;
2+
using static MoreLinq.Extensions.EquiZipExtension;
3+
using S03E02;
74

85
var builder = Host.CreateApplicationBuilder(args);
96

10-
builder.Services.AddS03E01();
7+
builder.Services.AddS03E02();
118

129
var host = builder.Build();
1310
await using var scope = host.Services.CreateAsyncScope();
1411
var sp = scope.ServiceProvider;
1512

13+
var openAiClient = sp.GetRequiredService<OpenAIClient>();
14+
var embeddingsClient = openAiClient.GetEmbeddingClient("text-embedding-3-small");
15+
16+
var weaponsTestFiles = await
17+
Directory.EnumerateFiles("Resources/weapons_tests", "*.txt")
18+
.Select(async file => (Date: Path.GetFileNameWithoutExtension(file), Description: await File.ReadAllTextAsync(file)))
19+
.ToArray()
20+
.ToAsyncEnumerable()
21+
.SelectAwait(async x => ((await x).Date, (await x).Description))
22+
.ToArrayAsync();
23+
24+
var descriptions = weaponsTestFiles.Select(x => x.Description);
25+
26+
var embeddings = await embeddingsClient.GenerateEmbeddingsAsync(descriptions);
27+
28+
var weaponsTestEmbeddings = weaponsTestFiles
29+
.EquiZip(embeddings.Value, (x, y) => (x.Date, x.Description, Embedding: y))
30+
.ToArray();
31+

dotnet/S03E02/S03E02.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
<ItemGroup>
1111
<PackageReference Include="Microsoft.Extensions.Hosting" />
12+
<PackageReference Include="morelinq" />
1213
</ItemGroup>
1314

1415
<ItemGroup>

dotnet/S03E02/ServiceCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using Common.Cache.Extensions;
33
using Common.OpenAI;
44

5-
namespace S03E01;
5+
namespace S03E02;
66

77
public static class ServiceCollectionExtensions
88
{

0 commit comments

Comments
 (0)