mirror of
https://github.com/microsoft/autogen.git
synced 2025-07-09 18:11:26 +00:00

adopts the new Microsoft.Extensions.AI abstractions adds a base InferenceAgent fixes a lot of pain points in the runtime wrt startup/shutdown fixes some uncaught exceptions in the grpc stream reading adds an example for running the backend service in its own process adds an example of an agent that connects to OpenAI/Ollama adds an example of wrapping an agent app in .NET Aspire upgrades some dependencies and removes some others Known bugs: #3922
60 lines
1.8 KiB
C#
60 lines
1.8 KiB
C#
using DevTeam.Shared;
|
|
using Microsoft.AutoGen.Abstractions;
|
|
using Microsoft.AutoGen.Agents;
|
|
using Microsoft.SemanticKernel;
|
|
using Microsoft.SemanticKernel.Memory;
|
|
|
|
namespace DevTeam.Agents;
|
|
|
|
[TopicSubscription("devteam")]
|
|
public class Dev(IAgentContext context, Kernel kernel, ISemanticTextMemory memory, [FromKeyedServices("EventTypes")] EventTypes typeRegistry, ILogger<Dev> logger)
|
|
: SKAiAgent<DeveloperState>(context, memory, kernel, typeRegistry), IDevelopApps,
|
|
IHandle<CodeGenerationRequested>,
|
|
IHandle<CodeChainClosed>
|
|
{
|
|
public async Task Handle(CodeGenerationRequested item)
|
|
{
|
|
var code = await GenerateCode(item.Ask);
|
|
var evt = new CodeGenerated
|
|
{
|
|
Org = item.Org,
|
|
Repo = item.Repo,
|
|
IssueNumber = item.IssueNumber,
|
|
Code = code
|
|
}.ToCloudEvent(this.AgentId.Key);
|
|
await PublishEvent(evt);
|
|
}
|
|
|
|
public async Task Handle(CodeChainClosed item)
|
|
{
|
|
//TODO: Get code from state
|
|
var lastCode = ""; // _state.State.History.Last().Message
|
|
var evt = new CodeCreated
|
|
{
|
|
Code = lastCode
|
|
}.ToCloudEvent(this.AgentId.Key);
|
|
await PublishEvent(evt);
|
|
}
|
|
|
|
public async Task<string> GenerateCode(string ask)
|
|
{
|
|
try
|
|
{
|
|
var context = new KernelArguments { ["input"] = AppendChatHistory(ask) };
|
|
var instruction = "Consider the following architectural guidelines:!waf!";
|
|
var enhancedContext = await AddKnowledge(instruction, "waf", context);
|
|
return await CallFunction(DeveloperSkills.Implement, enhancedContext);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.LogError(ex, "Error generating code");
|
|
return "";
|
|
}
|
|
}
|
|
}
|
|
|
|
public interface IDevelopApps
|
|
{
|
|
public Task<string> GenerateCode(string ask);
|
|
}
|