diff --git a/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIResponsesChatClient.cs b/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIResponsesChatClient.cs index e2fbfdf3f84..b85e922a846 100644 --- a/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIResponsesChatClient.cs +++ b/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIResponsesChatClient.cs @@ -456,7 +456,7 @@ private ResponseCreationOptions ToOpenAIResponseCreationOptions(ChatOptions? opt } else { - json = """{"type":"code_interpreter","container":"auto"}"""; + json = """{"type":"code_interpreter","container":{"type":"auto"}}"""; } result.Tools.Add(ModelReaderWriter.Read(BinaryData.FromString(json))); diff --git a/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientIntegrationTests.cs b/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientIntegrationTests.cs index a46a06bb770..c8bdc819ddb 100644 --- a/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientIntegrationTests.cs +++ b/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientIntegrationTests.cs @@ -21,6 +21,22 @@ public class OpenAIResponseClientIntegrationTests : ChatClientIntegrationTests // Test structure doesn't make sense with Responses. public override Task Caching_AfterFunctionInvocation_FunctionOutputUnchangedAsync() => Task.CompletedTask; + [ConditionalFact] + public async Task UseCodeInterpreter_ProducesCodeExecutionResults() + { + SkipIfNotEnabled(); + + var response = await ChatClient.GetResponseAsync("Use the code interpreter to calculate the square root of 42. Return only the nearest integer value and no other text.", new() + { + Tools = [new HostedCodeInterpreterTool()], + }); + Assert.NotNull(response); + + ChatMessage message = Assert.Single(response.Messages); + + Assert.Equal("6", message.Text); + } + [ConditionalFact] public async Task UseWebSearch_AnnotationsReflectResults() {