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

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