-
Notifications
You must be signed in to change notification settings - Fork 6.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[.Net] add AutoGen.SemanticKernel.Sample project (#2774)
* add AutoGen.SemanticKernel.Sample * revert change
- Loading branch information
1 parent
ca95e51
commit cd39fae
Showing
8 changed files
with
175 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
17 changes: 17 additions & 0 deletions
17
dotnet/sample/AutoGen.SemanticKernel.Sample/AutoGen.SemanticKernel.Sample.csproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<OutputType>Exe</OutputType> | ||
<TargetFramework>$(TestTargetFramework)</TargetFramework> | ||
<GenerateDocumentationFile>True</GenerateDocumentationFile> | ||
<NoWarn>$(NoWarn);CS8981;CS8600;CS8602;CS8604;CS8618;CS0219;SKEXP0054;SKEXP0050;SKEXP0110</NoWarn> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="..\..\src\AutoGen.SourceGenerator\AutoGen.SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" /> | ||
<ProjectReference Include="..\AutoGen.BasicSamples\AutoGen.BasicSample.csproj" /> | ||
<PackageReference Include="Microsoft.SemanticKernel.Plugins.Web" Version="$(SemanticKernelExperimentalVersion)" /> | ||
</ItemGroup> | ||
|
||
</Project> |
29 changes: 29 additions & 0 deletions
29
dotnet/sample/AutoGen.SemanticKernel.Sample/Create_Semantic_Kernel_Agent.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Create_Semantic_Kernel_Agent.cs | ||
|
||
using AutoGen.Core; | ||
using AutoGen.SemanticKernel.Extension; | ||
using Microsoft.SemanticKernel; | ||
|
||
namespace AutoGen.SemanticKernel.Sample; | ||
|
||
public class Create_Semantic_Kernel_Agent | ||
{ | ||
public static async Task RunAsync() | ||
{ | ||
var openAIKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY") ?? throw new Exception("Please set OPENAI_API_KEY environment variable."); | ||
var modelId = "gpt-3.5-turbo"; | ||
var kernel = Kernel.CreateBuilder() | ||
.AddOpenAIChatCompletion(modelId: modelId, apiKey: openAIKey) | ||
.Build(); | ||
|
||
var skAgent = new SemanticKernelAgent( | ||
kernel: kernel, | ||
name: "assistant", | ||
systemMessage: "You are a helpful AI assistant") | ||
.RegisterMessageConnector() // register message connector so it support AutoGen built-in message types like TextMessage. | ||
.RegisterPrintMessage(); // pretty print the message to the console | ||
|
||
await skAgent.SendAsync("Hey tell me a long tedious joke"); | ||
} | ||
} |
35 changes: 35 additions & 0 deletions
35
dotnet/sample/AutoGen.SemanticKernel.Sample/Create_Semantic_Kernel_Chat_Agent.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Create_Semantic_Kernel_Chat_Agent.cs | ||
|
||
using AutoGen.Core; | ||
using Microsoft.SemanticKernel; | ||
using Microsoft.SemanticKernel.Agents; | ||
|
||
namespace AutoGen.SemanticKernel.Sample; | ||
|
||
public class Create_Semantic_Kernel_Chat_Agent | ||
{ | ||
public static async Task RunAsync() | ||
{ | ||
var openAIKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY") ?? throw new Exception("Please set OPENAI_API_KEY environment variable."); | ||
var modelId = "gpt-3.5-turbo"; | ||
var kernel = Kernel.CreateBuilder() | ||
.AddOpenAIChatCompletion(modelId: modelId, apiKey: openAIKey) | ||
.Build(); | ||
|
||
// The built-in ChatCompletionAgent from semantic kernel. | ||
var chatAgent = new ChatCompletionAgent() | ||
{ | ||
Kernel = kernel, | ||
Name = "assistant", | ||
Description = "You are a helpful AI assistant", | ||
}; | ||
|
||
var messageConnector = new SemanticKernelChatMessageContentConnector(); | ||
var skAgent = new SemanticKernelChatCompletionAgent(chatAgent) | ||
.RegisterMiddleware(messageConnector) // register message connector so it support AutoGen built-in message types like TextMessage. | ||
.RegisterPrintMessage(); // pretty print the message to the console | ||
|
||
await skAgent.SendAsync("Hey tell me a long tedious joke"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Program.cs | ||
|
||
using AutoGen.SemanticKernel.Sample; | ||
|
||
await Use_Kernel_Functions_With_Other_Agent.RunAsync(); |
37 changes: 37 additions & 0 deletions
37
dotnet/sample/AutoGen.SemanticKernel.Sample/Use_Bing_Search_With_Semantic_Kernel_Agent.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Use_Bing_Search_With_Semantic_Kernel_Agent.cs | ||
|
||
using AutoGen.Core; | ||
using AutoGen.SemanticKernel.Extension; | ||
using Microsoft.SemanticKernel; | ||
using Microsoft.SemanticKernel.Plugins.Web; | ||
using Microsoft.SemanticKernel.Plugins.Web.Bing; | ||
|
||
namespace AutoGen.SemanticKernel.Sample; | ||
|
||
public class Use_Bing_Search_With_Semantic_Kernel_Agent | ||
{ | ||
public static async Task RunAsync() | ||
{ | ||
var bingApiKey = Environment.GetEnvironmentVariable("BING_API_KEY") ?? throw new Exception("BING_API_KEY environment variable is not set"); | ||
var bingSearch = new BingConnector(bingApiKey); | ||
var webSearchPlugin = new WebSearchEnginePlugin(bingSearch); | ||
|
||
var openAIKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY") ?? throw new Exception("Please set OPENAI_API_KEY environment variable."); | ||
var modelId = "gpt-3.5-turbo"; | ||
var kernelBuilder = Kernel.CreateBuilder() | ||
.AddOpenAIChatCompletion(modelId: modelId, apiKey: openAIKey); | ||
kernelBuilder.Plugins.AddFromObject(webSearchPlugin); | ||
|
||
var kernel = kernelBuilder.Build(); | ||
|
||
var skAgent = new SemanticKernelAgent( | ||
kernel: kernel, | ||
name: "assistant", | ||
systemMessage: "You are a helpful AI assistant") | ||
.RegisterMessageConnector() // register message connector so it support AutoGen built-in message types like TextMessage. | ||
.RegisterPrintMessage(); // pretty print the message to the console | ||
|
||
await skAgent.SendAsync("Tell me more about gpt-4-o"); | ||
} | ||
} |
44 changes: 44 additions & 0 deletions
44
dotnet/sample/AutoGen.SemanticKernel.Sample/Use_Kernel_Functions_With_Other_Agent.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// Use_Kernel_Functions_With_Other_Agent.cs | ||
|
||
using AutoGen.Core; | ||
using AutoGen.OpenAI; | ||
using AutoGen.OpenAI.Extension; | ||
using Azure.AI.OpenAI; | ||
using Microsoft.SemanticKernel; | ||
|
||
namespace AutoGen.SemanticKernel.Sample; | ||
|
||
public class Use_Kernel_Functions_With_Other_Agent | ||
{ | ||
public static async Task RunAsync() | ||
{ | ||
var openAIKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY") ?? throw new Exception("Please set OPENAI_API_KEY environment variable."); | ||
var modelId = "gpt-3.5-turbo"; | ||
var kernelBuilder = Kernel.CreateBuilder(); | ||
var kernel = kernelBuilder.Build(); | ||
var getWeatherFunction = KernelFunctionFactory.CreateFromMethod( | ||
method: (string location) => $"The weather in {location} is 75 degrees Fahrenheit.", | ||
functionName: "GetWeather", | ||
description: "Get the weather for a location."); | ||
var plugin = kernel.CreatePluginFromFunctions("my_plugin", [getWeatherFunction]); | ||
|
||
// Create a middleware to handle the plugin functions | ||
var kernelPluginMiddleware = new KernelPluginMiddleware(kernel, plugin); | ||
|
||
var openAIClient = new OpenAIClient(openAIKey); | ||
var openAIAgent = new OpenAIChatAgent( | ||
openAIClient: openAIClient, | ||
name: "assistant", | ||
modelName: modelId) | ||
.RegisterMessageConnector() // register message connector so it support AutoGen built-in message types like TextMessage. | ||
.RegisterMiddleware(kernelPluginMiddleware) // register the middleware to handle the plugin functions | ||
.RegisterPrintMessage(); // pretty print the message to the console | ||
|
||
var toolAggregateMessage = await openAIAgent.SendAsync("Tell me the weather in Seattle"); | ||
|
||
// The aggregate message will be converted to [ToolCallMessage, ToolCallResultMessage] when flowing into the agent | ||
// send the aggregated message to llm to generate the final response | ||
var finalReply = await openAIAgent.SendAsync(toolAggregateMessage); | ||
} | ||
} |