Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
durmisi committed Mar 18, 2024
1 parent c226859 commit fb28bde
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 81 deletions.
8 changes: 0 additions & 8 deletions Core/HttpClients/IRestApiClient.cs

This file was deleted.

43 changes: 0 additions & 43 deletions Core/HttpClients/RestApiClient.cs

This file was deleted.

13 changes: 9 additions & 4 deletions Core/SematicKernelBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using Microsoft.KernelMemory;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Plugins.Core;
using OpenAIExtensions.HttpClients;

namespace OpenAIExtensions
{
Expand All @@ -17,7 +16,6 @@ public class SematicKernelBuilder
private SematicKernelBuilder()
{
_kernelBuilder = Kernel.CreateBuilder();
_kernelBuilder.Services.AddHttpClient<IRestApiClient, RestApiClient>();
}

public static SematicKernelBuilder Create()
Expand Down Expand Up @@ -142,19 +140,26 @@ public SematicKernelBuilder AddPlugin<TPlugin>(string? pluginName = null)
return this;
}

public SematicKernelBuilder AddDefaultPlugins()
public SematicKernelBuilder AddCorePlugins()
{
_kernelBuilder.Plugins.AddFromType<ConversationSummaryPlugin>();
_kernelBuilder.Plugins.AddFromType<FileIOPlugin>();
_kernelBuilder.Plugins.AddFromType<HttpPlugin>();
_kernelBuilder.Plugins.AddFromType<MathPlugin>();
_kernelBuilder.Plugins.AddFromType<TextPlugin>();
_kernelBuilder.Plugins.AddFromType<HttpPlugin>();
_kernelBuilder.Plugins.AddFromType<TimePlugin>();
_kernelBuilder.Plugins.AddFromType<WaitPlugin>();
return this;
}

public SematicKernelBuilder AddWebSearchPlugin()
{
_kernelBuilder.Plugins.AddFromType<Microsoft.SemanticKernel.Plugins.Web.SearchUrlPlugin>();
_kernelBuilder.Plugins.AddFromType<Microsoft.SemanticKernel.Plugins.Web.WebFileDownloadPlugin>();
_kernelBuilder.Plugins.AddFromType<Microsoft.SemanticKernel.Plugins.Web.WebSearchEnginePlugin>();
return this;
}

public SematicKernelBuilder AddLogging(ILoggerFactory loggerFactory)
{
_kernelBuilder.Services.AddSingleton(loggerFactory);
Expand Down
23 changes: 12 additions & 11 deletions OpenAIExtensions.Plugins/OpenAIExtensions.Plugins.csproj
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<NoWarn>SKEXP0050</NoWarn>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="HtmlAgilityPack" Version="1.11.59" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="HtmlAgilityPack" Version="1.11.59" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Core\OpenAIExtensions.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Core\OpenAIExtensions.csproj" />
</ItemGroup>

</Project>
18 changes: 9 additions & 9 deletions OpenAIExtensions.Plugins/WebSearch/WebSearchPlugin.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
using HtmlAgilityPack;
using OpenAIExtensions.HttpClients;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Plugins.Core;
using System.Text.RegularExpressions;

namespace OpenAIExtensions.Tools
{
public abstract partial class WebSearchPlugin
{
private readonly IRestApiClient _restApiClient;

public WebSearchPlugin(IRestApiClient restApiClient)
protected async Task<string> GetHtml(Kernel kernel, string url)
{
_restApiClient = restApiClient;
}
var html = await kernel.InvokeAsync<string>(pluginName: nameof(HttpPlugin),
functionName: "Get",
new KernelArguments()
{
{"uri", url }
});

protected async Task<string> GetHtml(string url)
{
var html = await _restApiClient.SendAsync<string>(url, HttpMethod.Get);
return html;

Check warning on line 19 in OpenAIExtensions.Plugins/WebSearch/WebSearchPlugin.cs

View workflow job for this annotation

GitHub Actions / build

Possible null reference return.
}

Expand Down
9 changes: 3 additions & 6 deletions OpenAIExtensions.Plugins/WebSearch/WikipediaPlugin.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using Microsoft.SemanticKernel;
using OpenAIExtensions.HttpClients;
using OpenAIExtensions.Tools;
using System.ComponentModel;
using System.Text;
Expand All @@ -8,19 +7,17 @@ namespace OpenAIExtensions.Plugins.WebSearch
{
public class WikipediaPlugin : WebSearchPlugin
{
public WikipediaPlugin(IRestApiClient restApiClient)
: base(restApiClient)
{
}

private readonly int ContentLenght = 300;


[KernelFunction, Description("Search wikipedia, wiki search")]
public async Task<string> Search(
Kernel kernel,
[Description("The query to search for in wikipedia")] string query
)
{
var html = await GetHtml($"https://en.wikipedia.org/wiki/{query.Trim()}");
var html = await GetHtml(kernel, $"https://en.wikipedia.org/wiki/{query.Trim()}");
var doc = LoadHtml(html);

var sb = new StringBuilder();
Expand Down
1 change: 1 addition & 0 deletions OpenAIExtensions.Tests/AIConversationManagerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public AIConversationManagerTests(ITestOutputHelper outputHelper)

var kernel = SematicKernelBuilder.Create()
.AddAIChatCompletion(endpoint: endpoint, apiKey: key)
.AddCorePlugins()
.AddPlugin<GetCurrentWeatherPlugin>()
.AddPlugin<WikipediaPlugin>()
.Build();
Expand Down

0 comments on commit fb28bde

Please sign in to comment.