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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using Agents;
  2. using Google.Protobuf;
  3. using Greeter.AgentWorker;
  4. using Microsoft.AI.Agents.Worker.Client;
  5. using AgentId = Microsoft.AI.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, ILogger<GreetingAgent> logger) : AgentBase(context)
  17. {
  18. protected override Task HandleEvent(Event @event)
  19. {
  20. logger.LogInformation("[{Id}] Received event: '{Event}'.", AgentId, @event);
  21. return base.HandleEvent(@event);
  22. }
  23. protected override Task<RpcResponse> HandleRequest(RpcRequest request)
  24. {
  25. logger.LogInformation("[{Id}] Received request: '{Request}'.", AgentId, request);
  26. return Task.FromResult(new RpcResponse() { Payload = new Payload {
  27. DataContentType = "text/plain",
  28. Data = ByteString.CopyFromUtf8("Hello, agents!"),
  29. DataType = "text"
  30. }});
  31. }
  32. }
  33. internal sealed class MyBackgroundService(ILogger<MyBackgroundService> logger, AgentClient client) : BackgroundService
  34. {
  35. protected override async Task ExecuteAsync(CancellationToken stoppingToken)
  36. {
  37. while (!stoppingToken.IsCancellationRequested)
  38. {
  39. try
  40. {
  41. var generatedCodeId = Guid.NewGuid().ToString();
  42. var instanceId = Guid.NewGuid().ToString();
  43. var response = await client.SendRequestAsync(
  44. new AgentId("greeter", "foo"),
  45. "echo",
  46. new Dictionary<string, string> { ["message"] = "Hello, agents!" }).ConfigureAwait(false);
  47. logger.LogInformation("Received response: {Response}", response);
  48. }
  49. catch (Exception exception)
  50. {
  51. logger.LogError(exception, "Error invoking request.");
  52. }
  53. await Task.Delay(TimeSpan.FromMinutes(2), stoppingToken).ConfigureAwait(false);
  54. }
  55. }
  56. }