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.

Developer.cs 2.0 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright (c) Microsoft Corporation. All rights reserved.
  2. // Developer.cs
  3. using DevTeam.Agents;
  4. using Microsoft.AutoGen.Core;
  5. namespace DevTeam.Backend.Agents.Developer;
  6. [TopicSubscription(Consts.TopicName)]
  7. public class Dev([FromKeyedServices("AgentsMetadata")] AgentsMetadata typeRegistry, ILogger<Dev> logger)
  8. : AiAgent<DeveloperState>(typeRegistry, logger), IDevelopApps,
  9. IHandle<CodeGenerationRequested>,
  10. IHandle<CodeChainClosed>
  11. {
  12. public async Task Handle(CodeGenerationRequested item, CancellationToken cancellationToken = default)
  13. {
  14. var code = await GenerateCode(item.Ask);
  15. var evt = new CodeGenerated
  16. {
  17. Org = item.Org,
  18. Repo = item.Repo,
  19. IssueNumber = item.IssueNumber,
  20. Code = code
  21. };
  22. // TODO: Read the Topic from the agent metadata
  23. await PublishMessageAsync(evt, topic: Consts.TopicName).ConfigureAwait(false);
  24. }
  25. public async Task Handle(CodeChainClosed item, CancellationToken cancellationToken = default)
  26. {
  27. //TODO: Get code from state
  28. var lastCode = ""; // _state.State.History.Last().Message
  29. var evt = new CodeCreated
  30. {
  31. Code = lastCode
  32. };
  33. await PublishMessageAsync(evt, topic: Consts.TopicName).ConfigureAwait(false);
  34. }
  35. public async Task<string> GenerateCode(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");
  42. return await CallFunction(DeveloperSkills.Implement);
  43. }
  44. catch (Exception ex)
  45. {
  46. logger.LogError(ex, "Error generating code");
  47. return "";
  48. }
  49. }
  50. }
  51. public interface IDevelopApps
  52. {
  53. public Task<string> GenerateCode(string ask);
  54. }