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

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