// Copyright (c) Microsoft Corporation. All rights reserved. // Example02_TwoAgent_MathChat.cs using AutoGen.BasicSample; using AutoGen.Core; using AutoGen.OpenAI; using AutoGen.OpenAI.Extension; using FluentAssertions; public static class Example02_TwoAgent_MathChat { public static async Task RunAsync() { #region code_snippet_1 var gpt4oMini = LLMConfiguration.GetOpenAIGPT4o_mini(); // create teacher agent // teacher agent will create math questions var teacher = new OpenAIChatAgent( chatClient: gpt4oMini, name: "teacher", systemMessage: @"You are a teacher that create pre-school math question for student and check answer. If the answer is correct, you stop the conversation by saying [COMPLETE]. If the answer is wrong, you ask student to fix it.") .RegisterMessageConnector() .RegisterMiddleware(async (msgs, option, agent, _) => { var reply = await agent.GenerateReplyAsync(msgs, option); if (reply.GetContent()?.ToLower().Contains("complete") is true) { return new TextMessage(Role.Assistant, GroupChatExtension.TERMINATE, from: reply.From); } return reply; }) .RegisterPrintMessage(); // create student agent // student agent will answer the math questions var student = new OpenAIChatAgent( chatClient: gpt4oMini, name: "student", systemMessage: "You are a student that answer question from teacher") .RegisterMessageConnector() .RegisterPrintMessage(); // start the conversation var conversation = await student.InitiateChatAsync( receiver: teacher, message: "Hey teacher, please create math question for me.", maxRound: 10); // output // Message from teacher // -------------------- // content: Of course!Here's a math question for you: // // What is 2 + 3 ? // -------------------- // // Message from student // -------------------- // content: The sum of 2 and 3 is 5. // -------------------- // // Message from teacher // -------------------- // content: [GROUPCHAT_TERMINATE] // -------------------- #endregion code_snippet_1 conversation.Count().Should().BeLessThan(10); conversation.Last().IsGroupChatTerminateMessage().Should().BeTrue(); } }