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.

Program.cs 2.2 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Agents;
  2. using Google.Protobuf;
  3. using Greeter.AgentWorker;
  4. using Microsoft.AutoGen.Agents.Worker.Client;
  5. using AgentId = Microsoft.AutoGen.Agents.Worker.Client.AgentId;
  6. var builder = WebApplication.CreateBuilder(args);
  7. // Add service defaults & Aspire components.
  8. builder.AddServiceDefaults();
  9. var agentBuilder = builder.AddAgentWorker("https://agenthost");
  10. agentBuilder.AddAgent<GreetingAgent>("greeter");
  11. builder.Services.AddHostedService<MyBackgroundService>();
  12. builder.Services.AddSingleton<AgentClient>();
  13. var app = builder.Build();
  14. app.MapDefaultEndpoints();
  15. app.Run();
  16. internal sealed class GreetingAgent(IAgentContext context, EventTypes typeRegistry, ILogger<GreetingAgent> logger) : AgentBase(context, typeRegistry)
  17. {
  18. protected override Task<RpcResponse> HandleRequest(RpcRequest request)
  19. {
  20. logger.LogInformation("[{Id}] Received request: '{Request}'.", AgentId, request);
  21. return Task.FromResult(new RpcResponse() { Payload = new Payload {
  22. DataContentType = "text/plain",
  23. Data = ByteString.CopyFromUtf8("Hello, agents!"),
  24. DataType = "text"
  25. }});
  26. }
  27. }
  28. internal sealed class MyBackgroundService(ILogger<MyBackgroundService> logger, AgentClient client) : BackgroundService
  29. {
  30. protected override async Task ExecuteAsync(CancellationToken stoppingToken)
  31. {
  32. while (!stoppingToken.IsCancellationRequested)
  33. {
  34. try
  35. {
  36. var generatedCodeId = Guid.NewGuid().ToString();
  37. var instanceId = Guid.NewGuid().ToString();
  38. var response = await client.SendRequestAsync(
  39. new AgentId("greeter", "foo"),
  40. "echo",
  41. new Dictionary<string, string> { ["message"] = "Hello, agents!" }).ConfigureAwait(false);
  42. logger.LogInformation("Received response: {Response}", response);
  43. }
  44. catch (Exception exception)
  45. {
  46. logger.LogError(exception, "Error invoking request.");
  47. }
  48. await Task.Delay(TimeSpan.FromMinutes(2), stoppingToken).ConfigureAwait(false);
  49. }
  50. }
  51. }