You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Agent_Middleware.cs 2.6 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Copyright (c) Microsoft Corporation. All rights reserved.
  2. // Agent_Middleware.cs
  3. #region Using
  4. using AutoGen.Core;
  5. using AutoGen.OpenAI;
  6. using AutoGen.OpenAI.Extension;
  7. #endregion Using
  8. using FluentAssertions;
  9. using OpenAI.Chat;
  10. namespace AutoGen.Basic.Sample;
  11. public class Agent_Middleware
  12. {
  13. public static async Task RunTokenCountAsync()
  14. {
  15. #region Create_Agent
  16. var gpt4o = LLMConfiguration.GetOpenAIGPT4o_mini();
  17. var openaiMessageConnector = new OpenAIChatRequestMessageConnector();
  18. var totalTokenCount = 0;
  19. var agent = new OpenAIChatAgent(
  20. chatClient: gpt4o,
  21. name: "agent",
  22. systemMessage: "You are a helpful AI assistant")
  23. .RegisterMiddleware(async (messages, option, innerAgent, ct) =>
  24. {
  25. var reply = await innerAgent.GenerateReplyAsync(messages, option, ct);
  26. if (reply is MessageEnvelope<ChatCompletion> chatCompletions)
  27. {
  28. var tokenCount = chatCompletions.Content.Usage.TotalTokenCount;
  29. totalTokenCount += tokenCount;
  30. }
  31. return reply;
  32. })
  33. .RegisterMiddleware(openaiMessageConnector);
  34. #endregion Create_Agent
  35. #region Chat_With_Agent
  36. var reply = await agent.SendAsync("Tell me a joke");
  37. Console.WriteLine($"Total token count: {totalTokenCount}");
  38. #endregion Chat_With_Agent
  39. #region verify_reply
  40. reply.Should().BeOfType<TextMessage>();
  41. totalTokenCount.Should().BeGreaterThan(0);
  42. #endregion verify_reply
  43. }
  44. public static async Task RunRagTaskAsync()
  45. {
  46. #region Create_Agent
  47. var gpt4o = LLMConfiguration.GetOpenAIGPT4o_mini();
  48. var agent = new OpenAIChatAgent(
  49. chatClient: gpt4o,
  50. name: "agent",
  51. systemMessage: "You are a helpful AI assistant")
  52. .RegisterMessageConnector()
  53. .RegisterMiddleware(async (messages, option, innerAgent, ct) =>
  54. {
  55. var today = DateTime.UtcNow;
  56. var todayMessage = new TextMessage(Role.System, $"Today is {today:yyyy-MM-dd}");
  57. messages = messages.Concat([todayMessage]);
  58. return await innerAgent.GenerateReplyAsync(messages, option, ct);
  59. })
  60. .RegisterPrintMessage();
  61. #endregion Create_Agent
  62. #region Chat_With_Agent
  63. var reply = await agent.SendAsync("what's the date today");
  64. #endregion Chat_With_Agent
  65. }
  66. }