mirror of https://github.com/microsoft/autogen.git
89 lines
3.1 KiB
C#
89 lines
3.1 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Example11_Sequential_GroupChat_Example.cs
|
|
|
|
#region using_statement
|
|
using AutoGen.Core;
|
|
using AutoGen.OpenAI;
|
|
using AutoGen.OpenAI.Extension;
|
|
using AutoGen.SemanticKernel;
|
|
using AutoGen.SemanticKernel.Extension;
|
|
using Microsoft.SemanticKernel;
|
|
using Microsoft.SemanticKernel.Plugins.Web;
|
|
using Microsoft.SemanticKernel.Plugins.Web.Bing;
|
|
#endregion using_statement
|
|
|
|
namespace AutoGen.Basic.Sample;
|
|
|
|
public partial class Sequential_GroupChat_Example
|
|
{
|
|
public static async Task<IAgent> CreateBingSearchAgentAsync()
|
|
{
|
|
#region CreateBingSearchAgent
|
|
var config = LLMConfiguration.GetAzureOpenAIGPT3_5_Turbo();
|
|
var apiKey = config.ApiKey;
|
|
var kernelBuilder = Kernel.CreateBuilder()
|
|
.AddAzureOpenAIChatCompletion(config.DeploymentName, config.Endpoint, apiKey);
|
|
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);
|
|
kernelBuilder.Plugins.AddFromObject(webSearchPlugin);
|
|
|
|
var kernel = kernelBuilder.Build();
|
|
var kernelAgent = new SemanticKernelAgent(
|
|
kernel: kernel,
|
|
name: "bing-search",
|
|
systemMessage: """
|
|
You search results from Bing and return it as-is.
|
|
You put the original search result between ```bing and ```
|
|
|
|
e.g.
|
|
```bing
|
|
xxx
|
|
```
|
|
""")
|
|
.RegisterMessageConnector()
|
|
.RegisterPrintMessage(); // pretty print the message
|
|
|
|
return kernelAgent;
|
|
#endregion CreateBingSearchAgent
|
|
}
|
|
|
|
public static async Task<IAgent> CreateSummarizerAgentAsync()
|
|
{
|
|
#region CreateSummarizerAgent
|
|
var gpt4o = LLMConfiguration.GetOpenAIGPT4o_mini();
|
|
var openAIClientAgent = new OpenAIChatAgent(
|
|
chatClient: gpt4o,
|
|
name: "summarizer",
|
|
systemMessage: "You summarize search result from bing in a short and concise manner");
|
|
|
|
return openAIClientAgent
|
|
.RegisterMessageConnector()
|
|
.RegisterPrintMessage(); // pretty print the message
|
|
#endregion CreateSummarizerAgent
|
|
}
|
|
|
|
public static async Task RunAsync()
|
|
{
|
|
#region Sequential_GroupChat_Example
|
|
var userProxyAgent = new UserProxyAgent(
|
|
name: "user",
|
|
humanInputMode: HumanInputMode.ALWAYS)
|
|
.RegisterPrintMessage();
|
|
|
|
var bingSearchAgent = await CreateBingSearchAgentAsync();
|
|
var summarizerAgent = await CreateSummarizerAgentAsync();
|
|
|
|
var groupChat = new RoundRobinGroupChat(
|
|
agents: [userProxyAgent, bingSearchAgent, summarizerAgent]);
|
|
|
|
var groupChatAgent = new GroupChatManager(groupChat);
|
|
|
|
var history = await userProxyAgent.InitiateChatAsync(
|
|
receiver: groupChatAgent,
|
|
message: "How to deploy an openai resource on azure",
|
|
maxRound: 10);
|
|
#endregion Sequential_GroupChat_Example
|
|
}
|
|
}
|