Skip to content

Commit

Permalink
Update packages.
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastianStehle committed Nov 18, 2024
1 parent 0ed2715 commit d36d93e
Show file tree
Hide file tree
Showing 146 changed files with 496 additions and 1,243 deletions.
3 changes: 0 additions & 3 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@ dotnet_diagnostic.RECS0117.severity = none
dotnet_diagnostic.SA0001.severity = none
dotnet_diagnostic.SA1649.severity = none

# IDE0290: Use primary constructor
dotnet_diagnostic.IDE0290.severity = none

# IDE0305: Simplify collection initialization
dotnet_diagnostic.IDE0305.severity = none

Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<PackageProjectUrl>https://github.com/squidex/squidex</PackageProjectUrl>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<Version>6.20.0</Version>
<Version>6.21.0</Version>
</PropertyGroup>

<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
Expand Down
3 changes: 3 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ WORKDIR /src
COPY *.sln ./

# Copy the main source project files
COPY ai/*/*.csproj ./
RUN for file in $(ls *.csproj); do mkdir -p assets/${file%.*}/ && mv $file ai/${file%.*}/; done

COPY assets/*/*.csproj ./
RUN for file in $(ls *.csproj); do mkdir -p assets/${file%.*}/ && mv $file assets/${file%.*}/; done

Expand Down
2 changes: 1 addition & 1 deletion ai/Squidex.AI.Tests/OpenApiFunctionParserTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================

using Betalgo.Ranul.OpenAI.ObjectModels.RequestModels;
using FluentAssertions;
using OpenAI.ObjectModels.RequestModels;
using Squidex.AI.Implementation.OpenAI;
using Squidex.AI.Utils;
using Xunit;
Expand Down
12 changes: 6 additions & 6 deletions ai/Squidex.AI.Tests/Squidex.AI.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,19 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="FakeItEasy" Version="8.3.0" />
<PackageReference Include="FluentAssertions" Version="6.12.0" />
<PackageReference Include="Markdig" Version="0.37.0" />
<PackageReference Include="Meziantou.Analyzer" Version="2.0.163">
<PackageReference Include="FluentAssertions" Version="6.12.2" />
<PackageReference Include="Markdig" Version="0.38.0" />
<PackageReference Include="Meziantou.Analyzer" Version="2.0.179">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="xunit" Version="2.9.0" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand Down
13 changes: 2 additions & 11 deletions ai/Squidex.AI/DelegateChatTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,9 @@

namespace Squidex.AI;

public sealed class DelegateChatTool : IChatTool
public sealed class DelegateChatTool(ToolSpec spec, Func<ToolContext, CancellationToken, Task<string>> action) : IChatTool
{
private readonly Func<ToolContext, CancellationToken, Task<string>> action;

public ToolSpec Spec { get; }

public DelegateChatTool(ToolSpec spec, Func<ToolContext, CancellationToken, Task<string>> action)
{
Spec = spec;

this.action = action;
}
public ToolSpec Spec { get; } = spec;

public Task<string> ExecuteAsync(ToolContext toolContext,
CancellationToken ct)
Expand Down
27 changes: 7 additions & 20 deletions ai/Squidex.AI/Implementation/ChatAgent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,17 @@

namespace Squidex.AI.Implementation;

public sealed class ChatAgent : IChatAgent
public sealed class ChatAgent(
IChatProvider chatProvider,
IChatStore chatStore,
IEnumerable<IChatPipe> chatPipes,
IEnumerable<IChatToolProvider> chatToolProviders,
IOptions<ChatOptions> options) : IChatAgent
{
private readonly ChatOptions options;
private readonly IChatProvider chatProvider;
private readonly IChatStore chatStore;
private readonly IEnumerable<IChatPipe> chatPipes;
private readonly IEnumerable<IChatToolProvider> chatToolProviders;
private readonly ChatOptions options = options.Value;

public bool IsConfigured => chatProvider is not NoopChatProvider;

public ChatAgent(
IChatProvider chatProvider,
IChatStore chatStore,
IEnumerable<IChatPipe> chatPipes,
IEnumerable<IChatToolProvider> chatToolProviders,
IOptions<ChatOptions> options)
{
this.options = options.Value;
this.chatPipes = chatPipes;
this.chatProvider = chatProvider;
this.chatStore = chatStore;
this.chatToolProviders = chatToolProviders;
}

public async Task StopConversationAsync(string conversationId, ChatContext? context = null,
CancellationToken ct = default)
{
Expand Down
31 changes: 8 additions & 23 deletions ai/Squidex.AI/Implementation/ChatCleaner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,32 +11,17 @@

namespace Squidex.AI.Implementation;

public sealed class ChatCleaner : IBackgroundProcess
public sealed class ChatCleaner(
IChatAgent chatAgent,
IChatStore chatStore,
IEnumerable<IChatTool> chatTools,
IOptions<ChatOptions> options,
TimeProvider timeProvider,
ILogger<ChatCleaner> log) : IBackgroundProcess
{
private readonly ChatOptions options;
private readonly TimeProvider timeProvider;
private readonly IChatAgent chatAgent;
private readonly IChatStore chatStore;
private readonly IEnumerable<IChatTool> chatTools;
private readonly ILogger<ChatCleaner> log;
private readonly ChatOptions options = options.Value;
private SimpleTimer? cleanupTimer;

public ChatCleaner(
IChatAgent chatAgent,
IChatStore chatStore,
IEnumerable<IChatTool> chatTools,
IOptions<ChatOptions> options,
TimeProvider timeProvider,
ILogger<ChatCleaner> log)
{
this.chatAgent = chatAgent;
this.chatStore = chatStore;
this.chatTools = chatTools;
this.log = log;
this.options = options.Value;
this.timeProvider = timeProvider;
}

public Task StartAsync(
CancellationToken ct)
{
Expand Down
8 changes: 1 addition & 7 deletions ai/Squidex.AI/Implementation/ImagePipe.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,11 @@

namespace Squidex.AI.Implementation;

public sealed class ImagePipe : IChatPipe
public sealed class ImagePipe(IImageTool imageGenerator) : IChatPipe
{
private const string ImageStart = "<IMG>";
private const string ImageEnd = "</IMG>";
private const int BufferLength = 5;
private readonly IImageTool imageGenerator;

public ImagePipe(IImageTool imageGenerator)
{
this.imageGenerator = imageGenerator;
}

public async IAsyncEnumerable<InternalChatEvent> StreamAsync(IAsyncEnumerable<InternalChatEvent> source, ChatProviderRequest request,
[EnumeratorCancellation] CancellationToken ct = default)
Expand Down
9 changes: 2 additions & 7 deletions ai/Squidex.AI/Implementation/Mongo/MongoChatStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,9 @@

namespace Squidex.AI.Implementation.Mongo;

public sealed class MongoChatStore : IChatStore, IInitializable
public sealed class MongoChatStore(IMongoDatabase database, IOptions<MongoChatStoreOptions> options) : IChatStore, IInitializable
{
private readonly IMongoCollection<MongoChatEntity> collection;

public MongoChatStore(IMongoDatabase database, IOptions<MongoChatStoreOptions> options)
{
collection = database.GetCollection<MongoChatEntity>(options.Value.CollectionName);
}
private readonly IMongoCollection<MongoChatEntity> collection = database.GetCollection<MongoChatEntity>(options.Value.CollectionName);

public Task InitializeAsync(
CancellationToken ct)
Expand Down
6 changes: 3 additions & 3 deletions ai/Squidex.AI/Implementation/OpenAI/DallEOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================

using OpenAI;
using OpenAI.ObjectModels;
using Betalgo.Ranul.OpenAI;
using Betalgo.Ranul.OpenAI.ObjectModels;

namespace Squidex.AI.Implementation.OpenAI;

public sealed class DallEOptions : OpenAiOptions
public sealed class DallEOptions : OpenAIOptions
{
public string? Model { get; set; } = Models.Dall_e_3;

Expand Down
39 changes: 11 additions & 28 deletions ai/Squidex.AI/Implementation/OpenAI/DallETool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,24 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================

using Betalgo.Ranul.OpenAI.Managers;
using Betalgo.Ranul.OpenAI.ObjectModels.RequestModels;
using Microsoft.Extensions.Options;
using OpenAI.Managers;
using OpenAI.ObjectModels.RequestModels;
using Squidex.Assets;

namespace Squidex.AI.Implementation.OpenAI;

public sealed class DallETool : IImageTool
public sealed class DallETool(
IOptions<DallEOptions> options,
IAssetStore assetStore,
IAssetThumbnailGenerator assetThumbnailGenerator,
IChatProvider chatProvider,
IHttpImageEndpoint httpImageEndpoint,
IHttpClientFactory httpClientFactory) : IImageTool
{
private const string DataPrefix = "dall_e_image";
private readonly OpenAIService service;
private readonly DallEOptions options;
private readonly IAssetStore assetStore;
private readonly IAssetThumbnailGenerator assetThumbnailGenerator;
private readonly IChatProvider chatProvider;
private readonly IHttpImageEndpoint httpImageEndpoint;
private readonly IHttpClientFactory httpClientFactory;
private readonly OpenAIService service = new OpenAIService(options.Value);
private readonly DallEOptions options = options.Value;

public ToolSpec Spec { get; } =
new ToolSpec("dall-e", "Dall-E", "Generates images based on queries.")
Expand All @@ -35,24 +36,6 @@ public sealed class DallETool : IImageTool
}
};

public DallETool(
IOptions<DallEOptions> options,
IAssetStore assetStore,
IAssetThumbnailGenerator assetThumbnailGenerator,
IChatProvider chatProvider,
IHttpImageEndpoint httpImageEndpoint,
IHttpClientFactory httpClientFactory)
{
service = new OpenAIService(options.Value);

this.options = options.Value;
this.assetStore = assetStore;
this.assetThumbnailGenerator = assetThumbnailGenerator;
this.chatProvider = chatProvider;
this.httpImageEndpoint = httpImageEndpoint;
this.httpClientFactory = httpClientFactory;
}

public async Task CleanupAsync(Dictionary<string, string> toolData,
CancellationToken ct)
{
Expand Down
8 changes: 4 additions & 4 deletions ai/Squidex.AI/Implementation/OpenAI/Helper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@

using System.Text.Json;
using System.Text.Json.Nodes;
using OpenAI.Builders;
using OpenAI.ObjectModels.RequestModels;
using OpenAI.ObjectModels.SharedModels;
using OpenAIMessage = OpenAI.ObjectModels.RequestModels.ChatMessage;
using Betalgo.Ranul.OpenAI.Builders;
using Betalgo.Ranul.OpenAI.ObjectModels.RequestModels;
using Betalgo.Ranul.OpenAI.ObjectModels.SharedModels;
using OpenAIMessage = Betalgo.Ranul.OpenAI.ObjectModels.RequestModels.ChatMessage;

namespace Squidex.AI.Implementation.OpenAI;

Expand Down
6 changes: 3 additions & 3 deletions ai/Squidex.AI/Implementation/OpenAI/OpenAIChatOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================

using OpenAI;
using OpenAI.ObjectModels;
using Betalgo.Ranul.OpenAI;
using Betalgo.Ranul.OpenAI.ObjectModels;

namespace Squidex.AI.Implementation.OpenAI;

public sealed class OpenAIChatOptions : OpenAiOptions
public sealed class OpenAIChatOptions : OpenAIOptions
{
public string Model { get; set; } = Models.Gpt_4o;

Expand Down
19 changes: 6 additions & 13 deletions ai/Squidex.AI/Implementation/OpenAI/OpenAIChatProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,18 @@

using System.Globalization;
using System.Reactive.Linq;
using Betalgo.Ranul.OpenAI.Managers;
using Betalgo.Ranul.OpenAI.ObjectModels.RequestModels;
using Microsoft.Extensions.Options;
using OpenAI.Managers;
using OpenAI.ObjectModels.RequestModels;
using OpenAIMessage = OpenAI.ObjectModels.RequestModels.ChatMessage;
using OpenAIMessage = Betalgo.Ranul.OpenAI.ObjectModels.RequestModels.ChatMessage;

namespace Squidex.AI.Implementation.OpenAI;

public sealed class OpenAIChatProvider : IChatProvider
public sealed class OpenAIChatProvider(IOptions<OpenAIChatOptions> options) : IChatProvider
{
private readonly StreamOptions streamOptions = new StreamOptions { IncludeUsage = true };
private readonly OpenAIChatOptions options;
private readonly OpenAIService service;

public OpenAIChatProvider(IOptions<OpenAIChatOptions> options)
{
service = new OpenAIService(options.Value);

this.options = options.Value;
}
private readonly OpenAIChatOptions options = options.Value;
private readonly OpenAIService service = new OpenAIService(options.Value);

public IAsyncEnumerable<InternalChatEvent> StreamAsync(ChatProviderRequest request,
CancellationToken ct = default)
Expand Down
17 changes: 5 additions & 12 deletions ai/Squidex.AI/Implementation/OpenAI/OpenAIEmbeddings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,16 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================

using Betalgo.Ranul.OpenAI.Managers;
using Betalgo.Ranul.OpenAI.ObjectModels.RequestModels;
using Microsoft.Extensions.Options;
using OpenAI.Managers;
using OpenAI.ObjectModels.RequestModels;

namespace Squidex.AI.Implementation.OpenAI;

public sealed class OpenAIEmbeddings : IEmbeddings
public sealed class OpenAIEmbeddings(IOptions<OpenAIEmbeddingsOptions> options) : IEmbeddings
{
private readonly OpenAIEmbeddingsOptions options;
private readonly OpenAIService service;

public OpenAIEmbeddings(IOptions<OpenAIEmbeddingsOptions> options)
{
service = new OpenAIService(options.Value);

this.options = options.Value;
}
private readonly OpenAIEmbeddingsOptions options = options.Value;
private readonly OpenAIService service = new OpenAIService(options.Value);

public async Task<ReadOnlyMemory<double>> CalculateEmbeddingsAsync(string query,
CancellationToken ct)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================

using OpenAI;
using OpenAI.ObjectModels;
using Betalgo.Ranul.OpenAI;
using Betalgo.Ranul.OpenAI.ObjectModels;

namespace Squidex.AI.Implementation.OpenAI;

public sealed class OpenAIEmbeddingsOptions : OpenAiOptions
public sealed class OpenAIEmbeddingsOptions : OpenAIOptions
{
public string ModelName { get; set; } = Models.TextEmbeddingV3Large;
}
2 changes: 1 addition & 1 deletion ai/Squidex.AI/Implementation/Pinecone/PineconeTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public PineconeTool(IEmbeddings embeddings, IOptions<PineconeOptions> options)
public async Task InitializeAsync(
CancellationToken ct)
{
index = await client.GetIndex(options.IndexName, ct);
index = await client.GetIndex<GrpcTransport>(options.IndexName, ct);
}

public async Task<string> ExecuteAsync(ToolContext toolContext,
Expand Down
Loading

0 comments on commit d36d93e

Please sign in to comment.