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.

DeveloperLead.cs 2.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright (c) Microsoft Corporation. All rights reserved.
  2. // DeveloperLead.cs
  3. using DevTeam.Agents;
  4. using Microsoft.AutoGen.Contracts;
  5. using Microsoft.AutoGen.Core;
  6. namespace DevTeam.Backend.Agents.DeveloperLead;
  7. [TopicSubscription(Consts.TopicName)]
  8. public class DeveloperLead([FromKeyedServices("AgentsMetadata")] AgentsMetadata typeRegistry, ILogger<DeveloperLead> logger)
  9. : AiAgent<DeveloperLeadState>(typeRegistry, logger), ILeadDevelopers,
  10. IHandle<DevPlanRequested>,
  11. IHandle<DevPlanChainClosed>
  12. {
  13. public async Task Handle(DevPlanRequested item, CancellationToken cancellationToken = default)
  14. {
  15. var plan = await CreatePlan(item.Ask);
  16. var evt = new DevPlanGenerated
  17. {
  18. Org = item.Org,
  19. Repo = item.Repo,
  20. IssueNumber = item.IssueNumber,
  21. Plan = plan
  22. };
  23. await PublishMessageAsync(evt, topic: Consts.TopicName).ConfigureAwait(false);
  24. }
  25. public async Task Handle(DevPlanChainClosed item, CancellationToken cancellationToken = default)
  26. {
  27. // TODO: Get plan from state
  28. var lastPlan = ""; // _state.State.History.Last().Message
  29. var evt = new DevPlanCreated
  30. {
  31. Plan = lastPlan
  32. };
  33. await PublishMessageAsync(evt, topic: Consts.TopicName).ConfigureAwait(false);
  34. }
  35. public async Task<string> CreatePlan(string ask)
  36. {
  37. try
  38. {
  39. //var context = new KernelArguments { ["input"] = AppendChatHistory(ask) };
  40. //var instruction = "Consider the following architectural guidelines:!waf!";
  41. //var enhancedContext = await AddKnowledge(instruction, "waf", context);
  42. //var settings = new OpenAIPromptExecutionSettings
  43. //{
  44. // ResponseFormat = "json_object",
  45. // MaxTokens = 4096,
  46. // Temperature = 0.8,
  47. // TopP = 1
  48. //};
  49. return await CallFunction(DevLeadSkills.Plan);
  50. }
  51. catch (Exception ex)
  52. {
  53. logger.LogError(ex, "Error creating development plan");
  54. return "";
  55. }
  56. }
  57. }
  58. public interface ILeadDevelopers
  59. {
  60. public Task<string> CreatePlan(string ask);
  61. }