autogen/dotnet/samples/AutoGen.BasicSamples/CodeSnippet/RunCodeSnippetCodeSnippet.cs
Xiaoyun Zhang 9ba14ee15b
Fix dotnet test and reformat dotnet code (#3603)
* fix test

* install aspire workload

* format

* fix build error

* fix format

* format
2024-10-02 14:42:27 -04:00

81 lines
2.5 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved.
// RunCodeSnippetCodeSnippet.cs
#region code_snippet_0_1
using AutoGen.Core;
using AutoGen.DotnetInteractive;
using AutoGen.DotnetInteractive.Extension;
#endregion code_snippet_0_1
namespace AutoGen.BasicSample.CodeSnippet;
public class RunCodeSnippetCodeSnippet
{
public async Task CodeSnippet1()
{
IAgent agent = new DefaultReplyAgent("agent", "Hello World");
#region code_snippet_1_1
var kernel = DotnetInteractiveKernelBuilder
.CreateDefaultInProcessKernelBuilder() // add C# and F# kernels
.Build();
#endregion code_snippet_1_1
#region code_snippet_1_2
// register middleware to execute code block
var dotnetCodeAgent = agent
.RegisterMiddleware(async (msgs, option, innerAgent, ct) =>
{
var lastMessage = msgs.LastOrDefault();
if (lastMessage == null || lastMessage.GetContent() is null)
{
return await innerAgent.GenerateReplyAsync(msgs, option, ct);
}
if (lastMessage.ExtractCodeBlock("```csharp", "```") is string codeSnippet)
{
// execute code snippet
var result = await kernel.RunSubmitCodeCommandAsync(codeSnippet, "csharp");
return new TextMessage(Role.Assistant, result, from: agent.Name);
}
else
{
// no code block found, invoke next agent
return await innerAgent.GenerateReplyAsync(msgs, option, ct);
}
});
var codeSnippet = @"
```csharp
Console.WriteLine(""Hello World"");
```";
await dotnetCodeAgent.SendAsync(codeSnippet);
// output: Hello World
#endregion code_snippet_1_2
#region code_snippet_1_3
var content = @"
```csharp
// This is csharp code snippet
```
```python
// This is python code snippet
```
";
#endregion code_snippet_1_3
#region code_snippet_1_4
var pythonKernel = DotnetInteractiveKernelBuilder
.CreateDefaultInProcessKernelBuilder()
.AddPythonKernel(venv: "python3")
.Build();
var pythonCode = """
print('Hello from Python!')
""";
var result = await pythonKernel.RunSubmitCodeCommandAsync(pythonCode, "python3");
#endregion code_snippet_1_4
}
}