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 3.1 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. using Azure.AI.OpenAI;
  8. #endregion Using
  9. using FluentAssertions;
  10. namespace AutoGen.BasicSample;
  11. public class Agent_Middleware
  12. {
  13. public static async Task RunTokenCountAsync()
  14. {
  15. #region Create_Agent
  16. var apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY") ?? throw new InvalidOperationException("Please set the environment variable OPENAI_API_KEY");
  17. var model = "gpt-3.5-turbo";
  18. var openaiClient = new OpenAIClient(apiKey);
  19. var openaiMessageConnector = new OpenAIChatRequestMessageConnector();
  20. var totalTokenCount = 0;
  21. var agent = new OpenAIChatAgent(
  22. openAIClient: openaiClient,
  23. name: "agent",
  24. modelName: model,
  25. systemMessage: "You are a helpful AI assistant")
  26. .RegisterMiddleware(async (messages, option, innerAgent, ct) =>
  27. {
  28. var reply = await innerAgent.GenerateReplyAsync(messages, option, ct);
  29. if (reply is MessageEnvelope<ChatCompletions> chatCompletions)
  30. {
  31. var tokenCount = chatCompletions.Content.Usage.TotalTokens;
  32. totalTokenCount += tokenCount;
  33. }
  34. return reply;
  35. })
  36. .RegisterMiddleware(openaiMessageConnector);
  37. #endregion Create_Agent
  38. #region Chat_With_Agent
  39. var reply = await agent.SendAsync("Tell me a joke");
  40. Console.WriteLine($"Total token count: {totalTokenCount}");
  41. #endregion Chat_With_Agent
  42. #region verify_reply
  43. reply.Should().BeOfType<TextMessage>();
  44. totalTokenCount.Should().BeGreaterThan(0);
  45. #endregion verify_reply
  46. }
  47. public static async Task RunRagTaskAsync()
  48. {
  49. #region Create_Agent
  50. var apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY") ?? throw new InvalidOperationException("Please set the environment variable OPENAI_API_KEY");
  51. var model = "gpt-3.5-turbo";
  52. var openaiClient = new OpenAIClient(apiKey);
  53. var openaiMessageConnector = new OpenAIChatRequestMessageConnector();
  54. var agent = new OpenAIChatAgent(
  55. openAIClient: openaiClient,
  56. name: "agent",
  57. modelName: model,
  58. systemMessage: "You are a helpful AI assistant")
  59. .RegisterMessageConnector()
  60. .RegisterMiddleware(async (messages, option, innerAgent, ct) =>
  61. {
  62. var today = DateTime.UtcNow;
  63. var todayMessage = new TextMessage(Role.System, $"Today is {today:yyyy-MM-dd}");
  64. messages = messages.Concat(new[] { todayMessage });
  65. return await innerAgent.GenerateReplyAsync(messages, option, ct);
  66. })
  67. .RegisterPrintMessage();
  68. #endregion Create_Agent
  69. #region Chat_With_Agent
  70. var reply = await agent.SendAsync("what's the date today");
  71. #endregion Chat_With_Agent
  72. }
  73. }