Skip to content

Commit 47c8b50

Browse files
committed
Fix ReasoningResponseItem's Status property not generating correctly
1 parent 27ac530 commit 47c8b50

File tree

7 files changed

+75
-9
lines changed

7 files changed

+75
-9
lines changed

api/OpenAI.net8.0.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,6 +1056,7 @@ public class AudioClient {
10561056
public AudioClient(string model, ApiKeyCredential credential, OpenAIClientOptions options);
10571057
public AudioClient(string model, ApiKeyCredential credential);
10581058
public AudioClient(string model, string apiKey);
1059+
public string Model { get; }
10591060
public ClientPipeline Pipeline { get; }
10601061
public virtual ClientResult GenerateSpeech(BinaryContent content, RequestOptions options = null);
10611062
public virtual ClientResult<BinaryData> GenerateSpeech(string text, GeneratedSpeechVoice voice, SpeechGenerationOptions options = null, CancellationToken cancellationToken = default);
@@ -1403,6 +1404,7 @@ public class ChatClient {
14031404
public ChatClient(string model, ApiKeyCredential credential, OpenAIClientOptions options);
14041405
public ChatClient(string model, ApiKeyCredential credential);
14051406
public ChatClient(string model, string apiKey);
1407+
public string Model { get; }
14061408
public ClientPipeline Pipeline { get; }
14071409
public virtual ClientResult<ChatCompletion> CompleteChat(params ChatMessage[] messages);
14081410
public virtual ClientResult CompleteChat(BinaryContent content, RequestOptions options = null);
@@ -2277,6 +2279,7 @@ public class EmbeddingClient {
22772279
public EmbeddingClient(string model, ApiKeyCredential credential, OpenAIClientOptions options);
22782280
public EmbeddingClient(string model, ApiKeyCredential credential);
22792281
public EmbeddingClient(string model, string apiKey);
2282+
public string Model { get; }
22802283
public ClientPipeline Pipeline { get; }
22812284
public virtual ClientResult<OpenAIEmbedding> GenerateEmbedding(string input, EmbeddingGenerationOptions options = null, CancellationToken cancellationToken = default);
22822285
public virtual Task<ClientResult<OpenAIEmbedding>> GenerateEmbeddingAsync(string input, EmbeddingGenerationOptions options = null, CancellationToken cancellationToken = default);
@@ -3239,6 +3242,7 @@ public class ImageClient {
32393242
public ImageClient(string model, ApiKeyCredential credential, OpenAIClientOptions options);
32403243
public ImageClient(string model, ApiKeyCredential credential);
32413244
public ImageClient(string model, string apiKey);
3245+
public string Model { get; }
32423246
public ClientPipeline Pipeline { get; }
32433247
public virtual ClientResult<GeneratedImage> GenerateImage(string prompt, ImageGenerationOptions options = null, CancellationToken cancellationToken = default);
32443248
public virtual Task<ClientResult<GeneratedImage>> GenerateImageAsync(string prompt, ImageGenerationOptions options = null, CancellationToken cancellationToken = default);
@@ -3425,6 +3429,7 @@ public class ModerationClient {
34253429
public ModerationClient(string model, ApiKeyCredential credential, OpenAIClientOptions options);
34263430
public ModerationClient(string model, ApiKeyCredential credential);
34273431
public ModerationClient(string model, string apiKey);
3432+
public string Model { get; }
34283433
public ClientPipeline Pipeline { get; }
34293434
public virtual ClientResult ClassifyText(BinaryContent content, RequestOptions options = null);
34303435
public virtual ClientResult<ModerationResultCollection> ClassifyText(IEnumerable<string> inputs, CancellationToken cancellationToken = default);

api/OpenAI.netstandard2.0.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -967,6 +967,7 @@ public class AudioClient {
967967
public AudioClient(string model, ApiKeyCredential credential, OpenAIClientOptions options);
968968
public AudioClient(string model, ApiKeyCredential credential);
969969
public AudioClient(string model, string apiKey);
970+
public string Model { get; }
970971
public ClientPipeline Pipeline { get; }
971972
public virtual ClientResult GenerateSpeech(BinaryContent content, RequestOptions options = null);
972973
public virtual ClientResult<BinaryData> GenerateSpeech(string text, GeneratedSpeechVoice voice, SpeechGenerationOptions options = null, CancellationToken cancellationToken = default);
@@ -1266,6 +1267,7 @@ public class ChatClient {
12661267
public ChatClient(string model, ApiKeyCredential credential, OpenAIClientOptions options);
12671268
public ChatClient(string model, ApiKeyCredential credential);
12681269
public ChatClient(string model, string apiKey);
1270+
public string Model { get; }
12691271
public ClientPipeline Pipeline { get; }
12701272
public virtual ClientResult<ChatCompletion> CompleteChat(params ChatMessage[] messages);
12711273
public virtual ClientResult CompleteChat(BinaryContent content, RequestOptions options = null);
@@ -1980,6 +1982,7 @@ public class EmbeddingClient {
19801982
public EmbeddingClient(string model, ApiKeyCredential credential, OpenAIClientOptions options);
19811983
public EmbeddingClient(string model, ApiKeyCredential credential);
19821984
public EmbeddingClient(string model, string apiKey);
1985+
public string Model { get; }
19831986
public ClientPipeline Pipeline { get; }
19841987
public virtual ClientResult<OpenAIEmbedding> GenerateEmbedding(string input, EmbeddingGenerationOptions options = null, CancellationToken cancellationToken = default);
19851988
public virtual Task<ClientResult<OpenAIEmbedding>> GenerateEmbeddingAsync(string input, EmbeddingGenerationOptions options = null, CancellationToken cancellationToken = default);
@@ -2840,6 +2843,7 @@ public class ImageClient {
28402843
public ImageClient(string model, ApiKeyCredential credential, OpenAIClientOptions options);
28412844
public ImageClient(string model, ApiKeyCredential credential);
28422845
public ImageClient(string model, string apiKey);
2846+
public string Model { get; }
28432847
public ClientPipeline Pipeline { get; }
28442848
public virtual ClientResult<GeneratedImage> GenerateImage(string prompt, ImageGenerationOptions options = null, CancellationToken cancellationToken = default);
28452849
public virtual Task<ClientResult<GeneratedImage>> GenerateImageAsync(string prompt, ImageGenerationOptions options = null, CancellationToken cancellationToken = default);
@@ -2995,6 +2999,7 @@ public class ModerationClient {
29952999
public ModerationClient(string model, ApiKeyCredential credential, OpenAIClientOptions options);
29963000
public ModerationClient(string model, ApiKeyCredential credential);
29973001
public ModerationClient(string model, string apiKey);
3002+
public string Model { get; }
29983003
public ClientPipeline Pipeline { get; }
29993004
public virtual ClientResult ClassifyText(BinaryContent content, RequestOptions options = null);
30003005
public virtual ClientResult<ModerationResultCollection> ClassifyText(IEnumerable<string> inputs, CancellationToken cancellationToken = default);

src/Custom/Responses/Items/ReasoningResponseItem.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System.Collections.Generic;
2-
using System.Diagnostics.CodeAnalysis;
32
using System.Linq;
43

54
namespace OpenAI.Responses;
@@ -20,13 +19,15 @@ public partial class ReasoningResponseItem
2019

2120
// CUSTOM: Enable reuse as an input model
2221
public ReasoningResponseItem(IEnumerable<ReasoningSummaryPart> summaryParts)
23-
: this(id: null, summaryParts)
24-
{ }
22+
: this(id: null, status: null, summaryParts)
23+
{
24+
}
2525

2626
// CUSTOM: Facilitate typical single-item summary text input model use
2727
public ReasoningResponseItem(string summaryText)
2828
: this(summaryParts: [new ReasoningSummaryTextPart(summaryText)])
29-
{ }
29+
{
30+
}
3031

3132
// CUSTOM: Provide convenience for typical single-item or text-concatenation scenario
3233
public string GetSummaryText()

src/Custom/Responses/Items/ReasoningStatus.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace OpenAI.Responses;
66
// - Added Experimental attribute.
77
// - Renamed.
88
[Experimental("OPENAI001")]
9-
[CodeGenType("ReasoningItemStatus")]
9+
[CodeGenType("ReasoningItemResourceStatus")]
1010
public enum ReasoningStatus
1111
{
1212
InProgress,

src/Generated/Models/Responses/ReasoningResponseItem.Serialization.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace OpenAI.Responses
1212
{
1313
public partial class ReasoningResponseItem : IJsonModel<ReasoningResponseItem>
1414
{
15-
internal ReasoningResponseItem() : this(InternalItemType.Reasoning, null, null, null, null)
15+
internal ReasoningResponseItem() : this(InternalItemType.Reasoning, null, null, null, default, null)
1616
{
1717
}
1818

@@ -36,6 +36,11 @@ protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWri
3636
writer.WritePropertyName("encrypted_content"u8);
3737
writer.WriteStringValue(EncryptedContent);
3838
}
39+
if (_additionalBinaryDataProperties?.ContainsKey("status") != true)
40+
{
41+
writer.WritePropertyName("status"u8);
42+
writer.WriteStringValue(Status.Value.ToSerialString());
43+
}
3944
if (_additionalBinaryDataProperties?.ContainsKey("summary") != true)
4045
{
4146
writer.WritePropertyName("summary"u8);
@@ -71,6 +76,7 @@ internal static ReasoningResponseItem DeserializeReasoningResponseItem(JsonEleme
7176
string id = default;
7277
IDictionary<string, BinaryData> additionalBinaryDataProperties = new ChangeTrackingDictionary<string, BinaryData>();
7378
string encryptedContent = default;
79+
ReasoningStatus? status = default;
7480
IReadOnlyList<ReasoningSummaryPart> summaryParts = default;
7581
foreach (var prop in element.EnumerateObject())
7682
{
@@ -94,6 +100,11 @@ internal static ReasoningResponseItem DeserializeReasoningResponseItem(JsonEleme
94100
encryptedContent = prop.Value.GetString();
95101
continue;
96102
}
103+
if (prop.NameEquals("status"u8))
104+
{
105+
status = prop.Value.GetString().ToReasoningStatus();
106+
continue;
107+
}
97108
if (prop.NameEquals("summary"u8))
98109
{
99110
List<ReasoningSummaryPart> array = new List<ReasoningSummaryPart>();
@@ -107,7 +118,13 @@ internal static ReasoningResponseItem DeserializeReasoningResponseItem(JsonEleme
107118
// Plugin customization: remove options.Format != "W" check
108119
additionalBinaryDataProperties.Add(prop.Name, BinaryData.FromString(prop.Value.GetRawText()));
109120
}
110-
return new ReasoningResponseItem(kind, id, additionalBinaryDataProperties, encryptedContent, summaryParts);
121+
return new ReasoningResponseItem(
122+
kind,
123+
id,
124+
additionalBinaryDataProperties,
125+
encryptedContent,
126+
status,
127+
summaryParts);
111128
}
112129

113130
BinaryData IPersistableModel<ReasoningResponseItem>.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options);

src/Generated/Models/Responses/ReasoningResponseItem.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,17 @@ namespace OpenAI.Responses
1313
[Experimental("OPENAI001")]
1414
public partial class ReasoningResponseItem : ResponseItem
1515
{
16-
internal ReasoningResponseItem(string id, IEnumerable<ReasoningSummaryPart> summaryParts) : base(InternalItemType.Reasoning, id)
16+
internal ReasoningResponseItem(string id, ReasoningStatus? status, IEnumerable<ReasoningSummaryPart> summaryParts) : base(InternalItemType.Reasoning, id)
1717
{
18+
Status = status;
1819
SummaryParts = summaryParts.ToList();
1920
}
2021

21-
internal ReasoningResponseItem(InternalItemType kind, string id, IDictionary<string, BinaryData> additionalBinaryDataProperties, string encryptedContent, IReadOnlyList<ReasoningSummaryPart> summaryParts) : base(kind, id, additionalBinaryDataProperties)
22+
internal ReasoningResponseItem(InternalItemType kind, string id, IDictionary<string, BinaryData> additionalBinaryDataProperties, string encryptedContent, ReasoningStatus? status, IReadOnlyList<ReasoningSummaryPart> summaryParts) : base(kind, id, additionalBinaryDataProperties)
2223
{
2324
// Plugin customization: ensure initialization of collections
2425
EncryptedContent = encryptedContent;
26+
Status = status;
2527
SummaryParts = summaryParts ?? new ChangeTrackingList<ReasoningSummaryPart>();
2628
}
2729

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// <auto-generated/>
2+
3+
#nullable disable
4+
5+
using System;
6+
7+
namespace OpenAI.Responses
8+
{
9+
internal static partial class ReasoningStatusExtensions
10+
{
11+
public static string ToSerialString(this ReasoningStatus value) => value switch
12+
{
13+
ReasoningStatus.InProgress => "in_progress",
14+
ReasoningStatus.Completed => "completed",
15+
ReasoningStatus.Incomplete => "incomplete",
16+
_ => throw new ArgumentOutOfRangeException(nameof(value), value, "Unknown ReasoningStatus value.")
17+
};
18+
19+
public static ReasoningStatus ToReasoningStatus(this string value)
20+
{
21+
if (StringComparer.OrdinalIgnoreCase.Equals(value, "in_progress"))
22+
{
23+
return ReasoningStatus.InProgress;
24+
}
25+
if (StringComparer.OrdinalIgnoreCase.Equals(value, "completed"))
26+
{
27+
return ReasoningStatus.Completed;
28+
}
29+
if (StringComparer.OrdinalIgnoreCase.Equals(value, "incomplete"))
30+
{
31+
return ReasoningStatus.Incomplete;
32+
}
33+
throw new ArgumentOutOfRangeException(nameof(value), value, "Unknown ReasoningStatus value.");
34+
}
35+
}
36+
}

0 commit comments

Comments
 (0)