using AutoGen.Core;using AutoGen.DotnetInteractive;using AutoGen.DotnetInteractive.Extension;var kernel = DotnetInteractiveKernelBuilder .CreateDefaultInProcessKernelBuilder() .Build();
2
Execute code
var code = @"Console.WriteLine(""Hello from C#!"");var sum = 1 + 2;Console.WriteLine($""Sum: {sum}"");";var result = await kernel.RunSubmitCodeCommandAsync(code, "csharp");Console.WriteLine(result);// Output:// Hello from C#!// Sum: 3
using AutoGen.Core;using AutoGen.DotnetInteractive;using AutoGen.DotnetInteractive.Extension;using AutoGen.OpenAI;using AutoGen.OpenAI.Extension;public class CodeExecutionExample{ public static async Task RunAsync() { var kernel = DotnetInteractiveKernelBuilder .CreateDefaultInProcessKernelBuilder() .Build(); var coder = new OpenAIChatAgent( chatClient: GetOpenAIClient(), name: "coder", systemMessage: @" You are a C# coding assistant. When writing code, put it between ```csharp and ``` ") .RegisterMessageConnector() .RegisterPrintMessage(); // Add code execution middleware var codeAgent = coder.RegisterMiddleware( async (messages, options, innerAgent, ct) => { var lastMessage = messages.LastOrDefault(); if (lastMessage?.GetContent() is string content) { // Extract code block var codeBlock = lastMessage.ExtractCodeBlock( "```csharp", "```"); if (codeBlock != null) { // Execute the code var result = await kernel.RunSubmitCodeCommandAsync( codeBlock, "csharp"); return new TextMessage( Role.Assistant, result, from: coder.Name); } } return await innerAgent.GenerateReplyAsync(messages, options, ct); }); // Use the agent var response = await codeAgent.SendAsync(@" Write C# code to calculate the first 10 Fibonacci numbers "); Console.WriteLine(response.GetContent()); }}
using AutoGen.Core;using AutoGen.DotnetInteractive;using AutoGen.DotnetInteractive.Extension;using AutoGen.OpenAI;using AutoGen.OpenAI.Extension;using OpenAI;public class MultiLanguageCodeAssistant{ public static async Task RunAsync() { var apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY"); var openAIClient = new OpenAIClient(apiKey); // Create kernel with multiple language support var kernel = DotnetInteractiveKernelBuilder .CreateDefaultInProcessKernelBuilder() // C# and F# .AddPythonKernel(venv: "python3") // Python .AddPowershellKernel() // PowerShell .Build(); // Create coding agent var coder = new OpenAIChatAgent( chatClient: openAIClient.GetChatClient("gpt-4"), name: "coder", systemMessage: @" You are a multi-language coding assistant. Support C#, F#, Python, and PowerShell. Wrap code in appropriate markdown blocks: - ```csharp for C# - ```fsharp for F# - ```python for Python - ```powershell for PowerShell ") .RegisterMessageConnector() .RegisterPrintMessage(); // Add code execution middleware var executor = coder.RegisterMiddleware( async (messages, options, innerAgent, ct) => { var lastMessage = messages.LastOrDefault(); if (lastMessage?.GetContent() is not string content) { return await innerAgent.GenerateReplyAsync( messages, options, ct); } // Try to extract and execute code for each language var languages = new[] { ("```csharp", "csharp"), ("```fsharp", "fsharp"), ("```python", "python3"), ("```powershell", "pwsh") }; foreach (var (marker, kernel_name) in languages) { var code = lastMessage.ExtractCodeBlock(marker, "```"); if (code != null) { try { var result = await kernel.RunSubmitCodeCommandAsync( code, kernel_name); return new TextMessage( Role.Assistant, $"Execution result:\n{result}", from: coder.Name); } catch (Exception ex) { return new TextMessage( Role.Assistant, $"Execution error: {ex.Message}", from: coder.Name); } } } // No code found, generate reply normally return await innerAgent.GenerateReplyAsync( messages, options, ct); }); // Test with different languages Console.WriteLine("=== C# Example ==="); await executor.SendAsync( "Write C# code to calculate factorial of 5"); Console.WriteLine("\n=== Python Example ==="); await executor.SendAsync( "Write Python code to create a list of squares from 1 to 5"); Console.WriteLine("\n=== F# Example ==="); await executor.SendAsync( "Write F# code to filter even numbers from 1 to 10"); }}
try{ var result = await kernel.RunSubmitCodeCommandAsync( code, language); return new TextMessage( Role.Assistant, $"Success:\n{result}");}catch (Exception ex){ return new TextMessage( Role.Assistant, $"Error: {ex.Message}\nPlease fix the code.");}