diff --git a/OpenAI-DotNet-Tests/TestFixture_12_Threads.cs b/OpenAI-DotNet-Tests/TestFixture_12_Threads.cs index 43c89c8d..495b13ab 100644 --- a/OpenAI-DotNet-Tests/TestFixture_12_Threads.cs +++ b/OpenAI-DotNet-Tests/TestFixture_12_Threads.cs @@ -403,6 +403,23 @@ public async Task Test_07_01_SubmitToolOutput() // waiting while run in Queued and InProgress run = await run.WaitForStatusChangeAsync(); Assert.AreEqual(RunStatus.Completed, run.Status); + runStepList = await run.ListRunStepsAsync(); + + foreach (var runStep in runStepList.Items) + { + Assert.IsNotNull(runStep); + Assert.IsNotNull(runStep.Client); + var retrievedRunStep = await runStep.UpdateAsync(); + Assert.IsNotNull(retrievedRunStep); + Console.WriteLine($"[{runStep.Id}] {runStep.Status} {runStep.CreatedAt} -> {(runStep.ExpiresAtUnixTimeSeconds.HasValue ? runStep.ExpiresAt : runStep.CompletedAt)}"); + if (runStep.StepDetails.ToolCalls == null) { continue; } + + foreach (var runStepToolCall in runStep.StepDetails.ToolCalls) + { + Console.WriteLine($"[{runStep.Id}][{runStepToolCall.Type}][{runStepToolCall.Id}] {runStepToolCall.FunctionCall.Name}: {runStepToolCall.FunctionCall.Output}"); + } + } + var messages = await run.ListMessagesAsync(); Assert.IsNotNull(messages); Assert.IsNotEmpty(messages.Items); diff --git a/OpenAI-DotNet/OpenAI-DotNet.csproj b/OpenAI-DotNet/OpenAI-DotNet.csproj index bddb5a37..98fcc04e 100644 --- a/OpenAI-DotNet/OpenAI-DotNet.csproj +++ b/OpenAI-DotNet/OpenAI-DotNet.csproj @@ -28,8 +28,10 @@ More context [on Roger Pincombe's blog](https://rogerpincombe.com/openai-dotnet- OpenAI-DotNet.pfx True True - 7.6.0 + 7.6.1 +Version 7.6.1 +- Include Output in Threads.FunctionCall Version 7.6.0 - Changed License to MIT - Added OpenAI.Chat logprob parameters diff --git a/OpenAI-DotNet/Threads/FunctionCall.cs b/OpenAI-DotNet/Threads/FunctionCall.cs index 86862d35..6dbaa915 100644 --- a/OpenAI-DotNet/Threads/FunctionCall.cs +++ b/OpenAI-DotNet/Threads/FunctionCall.cs @@ -19,5 +19,12 @@ public sealed class FunctionCall [JsonInclude] [JsonPropertyName("arguments")] public string Arguments { get; private set; } + + /// + /// The output of the function. This will be null if the outputs have not been submitted yet. + /// + [JsonInclude] + [JsonPropertyName("output")] + public string Output { get; private set; } } -} \ No newline at end of file +}