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.1 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Agents;
  2. using Greeter.AgentWorker;
  3. using Microsoft.AI.Agents.Worker.Client;
  4. using AgentId = Microsoft.AI.Agents.Worker.Client.AgentId;
  5. var builder = WebApplication.CreateBuilder(args);
  6. // Add service defaults & Aspire components.
  7. builder.AddServiceDefaults();
  8. var agentBuilder = builder.AddAgentWorker("https://agenthost");
  9. agentBuilder.AddAgent<GreetingAgent>("greeter");
  10. builder.Services.AddHostedService<MyBackgroundService>();
  11. builder.Services.AddSingleton<AgentClient>();
  12. var app = builder.Build();
  13. app.MapDefaultEndpoints();
  14. app.Run();
  15. internal sealed class GreetingAgent(IAgentContext context, ILogger<GreetingAgent> logger) : AgentBase(context)
  16. {
  17. protected override Task HandleEvent(Event @event)
  18. {
  19. logger.LogInformation("[{Id}] Received event: '{Event}'.", AgentId, @event);
  20. return base.HandleEvent(@event);
  21. }
  22. protected override Task<RpcResponse> HandleRequest(RpcRequest request)
  23. {
  24. logger.LogInformation("[{Id}] Received request: '{Request}'.", AgentId, request);
  25. return Task.FromResult(new RpcResponse() { Result = "Okay!" });
  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. }