Xiaoyun Zhang 0560bdd645
[.Net] Update OpenAI, semantic kernel to latest version (#3792)
* update OpenAI, semantic kernel to latest version

* fix build error

* update

* update release note
2024-10-15 07:23:33 -07:00

74 lines
2.5 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved.
// Agent_Middleware.cs
#region Using
using AutoGen.Core;
using AutoGen.OpenAI;
using AutoGen.OpenAI.Extension;
#endregion Using
using FluentAssertions;
using OpenAI.Chat;
namespace AutoGen.BasicSample;
public class Agent_Middleware
{
public static async Task RunTokenCountAsync()
{
#region Create_Agent
var gpt4o = LLMConfiguration.GetOpenAIGPT4o_mini();
var openaiMessageConnector = new OpenAIChatRequestMessageConnector();
var totalTokenCount = 0;
var agent = new OpenAIChatAgent(
chatClient: gpt4o,
name: "agent",
systemMessage: "You are a helpful AI assistant")
.RegisterMiddleware(async (messages, option, innerAgent, ct) =>
{
var reply = await innerAgent.GenerateReplyAsync(messages, option, ct);
if (reply is MessageEnvelope<ChatCompletion> chatCompletions)
{
var tokenCount = chatCompletions.Content.Usage.TotalTokenCount;
totalTokenCount += tokenCount;
}
return reply;
})
.RegisterMiddleware(openaiMessageConnector);
#endregion Create_Agent
#region Chat_With_Agent
var reply = await agent.SendAsync("Tell me a joke");
Console.WriteLine($"Total token count: {totalTokenCount}");
#endregion Chat_With_Agent
#region verify_reply
reply.Should().BeOfType<TextMessage>();
totalTokenCount.Should().BeGreaterThan(0);
#endregion verify_reply
}
public static async Task RunRagTaskAsync()
{
#region Create_Agent
var gpt4o = LLMConfiguration.GetOpenAIGPT4o_mini();
var agent = new OpenAIChatAgent(
chatClient: gpt4o,
name: "agent",
systemMessage: "You are a helpful AI assistant")
.RegisterMessageConnector()
.RegisterMiddleware(async (messages, option, innerAgent, ct) =>
{
var today = DateTime.UtcNow;
var todayMessage = new TextMessage(Role.System, $"Today is {today:yyyy-MM-dd}");
messages = messages.Concat([todayMessage]);
return await innerAgent.GenerateReplyAsync(messages, option, ct);
})
.RegisterPrintMessage();
#endregion Create_Agent
#region Chat_With_Agent
var reply = await agent.SendAsync("what's the date today");
#endregion Chat_With_Agent
}
}