Skip to content

Commit 87964c3

Browse files
authored
Expose reasoning streaming events in Responses (#808)
Expose reasoning streaming events in Responses
1 parent b022d58 commit 87964c3

29 files changed

+20772
-13272
lines changed

api/OpenAI.net8.0.cs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6430,6 +6430,72 @@ public class StreamingResponseQueuedUpdate : StreamingResponseUpdate, IJsonModel
64306430
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
64316431
}
64326432
[Experimental("OPENAI001")]
6433+
public class StreamingResponseReasoningSummaryPartAddedUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningSummaryPartAddedUpdate>, IPersistableModel<StreamingResponseReasoningSummaryPartAddedUpdate> {
6434+
public string ItemId { get; }
6435+
public int OutputIndex { get; }
6436+
public ReasoningSummaryPart Part { get; }
6437+
public int SummaryIndex { get; }
6438+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
6439+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
6440+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
6441+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
6442+
}
6443+
[Experimental("OPENAI001")]
6444+
public class StreamingResponseReasoningSummaryPartDoneUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningSummaryPartDoneUpdate>, IPersistableModel<StreamingResponseReasoningSummaryPartDoneUpdate> {
6445+
public string ItemId { get; }
6446+
public int OutputIndex { get; }
6447+
public ReasoningSummaryPart Part { get; }
6448+
public int SummaryIndex { get; }
6449+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
6450+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
6451+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
6452+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
6453+
}
6454+
[Experimental("OPENAI001")]
6455+
public class StreamingResponseReasoningSummaryTextDeltaUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningSummaryTextDeltaUpdate>, IPersistableModel<StreamingResponseReasoningSummaryTextDeltaUpdate> {
6456+
public string Delta { get; }
6457+
public string ItemId { get; }
6458+
public int OutputIndex { get; }
6459+
public int SummaryIndex { get; }
6460+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
6461+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
6462+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
6463+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
6464+
}
6465+
[Experimental("OPENAI001")]
6466+
public class StreamingResponseReasoningSummaryTextDoneUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningSummaryTextDoneUpdate>, IPersistableModel<StreamingResponseReasoningSummaryTextDoneUpdate> {
6467+
public string ItemId { get; }
6468+
public int OutputIndex { get; }
6469+
public int SummaryIndex { get; }
6470+
public string Text { get; }
6471+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
6472+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
6473+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
6474+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
6475+
}
6476+
[Experimental("OPENAI001")]
6477+
public class StreamingResponseReasoningTextDeltaUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningTextDeltaUpdate>, IPersistableModel<StreamingResponseReasoningTextDeltaUpdate> {
6478+
public int ContentIndex { get; }
6479+
public string Delta { get; }
6480+
public string ItemId { get; }
6481+
public int OutputIndex { get; }
6482+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
6483+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
6484+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
6485+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
6486+
}
6487+
[Experimental("OPENAI001")]
6488+
public class StreamingResponseReasoningTextDoneUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningTextDoneUpdate>, IPersistableModel<StreamingResponseReasoningTextDoneUpdate> {
6489+
public int ContentIndex { get; }
6490+
public string ItemId { get; }
6491+
public int OutputIndex { get; }
6492+
public string Text { get; }
6493+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
6494+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
6495+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
6496+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
6497+
}
6498+
[Experimental("OPENAI001")]
64336499
public class StreamingResponseRefusalDeltaUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseRefusalDeltaUpdate>, IPersistableModel<StreamingResponseRefusalDeltaUpdate> {
64346500
public int ContentIndex { get; }
64356501
public string Delta { get; }

api/OpenAI.netstandard2.0.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5652,6 +5652,66 @@ public class StreamingResponseQueuedUpdate : StreamingResponseUpdate, IJsonModel
56525652
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
56535653
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
56545654
}
5655+
public class StreamingResponseReasoningSummaryPartAddedUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningSummaryPartAddedUpdate>, IPersistableModel<StreamingResponseReasoningSummaryPartAddedUpdate> {
5656+
public string ItemId { get; }
5657+
public int OutputIndex { get; }
5658+
public ReasoningSummaryPart Part { get; }
5659+
public int SummaryIndex { get; }
5660+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
5661+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
5662+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
5663+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
5664+
}
5665+
public class StreamingResponseReasoningSummaryPartDoneUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningSummaryPartDoneUpdate>, IPersistableModel<StreamingResponseReasoningSummaryPartDoneUpdate> {
5666+
public string ItemId { get; }
5667+
public int OutputIndex { get; }
5668+
public ReasoningSummaryPart Part { get; }
5669+
public int SummaryIndex { get; }
5670+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
5671+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
5672+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
5673+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
5674+
}
5675+
public class StreamingResponseReasoningSummaryTextDeltaUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningSummaryTextDeltaUpdate>, IPersistableModel<StreamingResponseReasoningSummaryTextDeltaUpdate> {
5676+
public string Delta { get; }
5677+
public string ItemId { get; }
5678+
public int OutputIndex { get; }
5679+
public int SummaryIndex { get; }
5680+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
5681+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
5682+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
5683+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
5684+
}
5685+
public class StreamingResponseReasoningSummaryTextDoneUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningSummaryTextDoneUpdate>, IPersistableModel<StreamingResponseReasoningSummaryTextDoneUpdate> {
5686+
public string ItemId { get; }
5687+
public int OutputIndex { get; }
5688+
public int SummaryIndex { get; }
5689+
public string Text { get; }
5690+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
5691+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
5692+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
5693+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
5694+
}
5695+
public class StreamingResponseReasoningTextDeltaUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningTextDeltaUpdate>, IPersistableModel<StreamingResponseReasoningTextDeltaUpdate> {
5696+
public int ContentIndex { get; }
5697+
public string Delta { get; }
5698+
public string ItemId { get; }
5699+
public int OutputIndex { get; }
5700+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
5701+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
5702+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
5703+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
5704+
}
5705+
public class StreamingResponseReasoningTextDoneUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseReasoningTextDoneUpdate>, IPersistableModel<StreamingResponseReasoningTextDoneUpdate> {
5706+
public int ContentIndex { get; }
5707+
public string ItemId { get; }
5708+
public int OutputIndex { get; }
5709+
public string Text { get; }
5710+
protected override StreamingResponseUpdate JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
5711+
protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
5712+
protected override StreamingResponseUpdate PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
5713+
protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
5714+
}
56555715
public class StreamingResponseRefusalDeltaUpdate : StreamingResponseUpdate, IJsonModel<StreamingResponseRefusalDeltaUpdate>, IPersistableModel<StreamingResponseRefusalDeltaUpdate> {
56565716
public int ContentIndex { get; }
56575717
public string Delta { get; }

specification/base/typespec/responses/models.tsp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1343,6 +1343,8 @@ union ResponseStreamEventType {
13431343
response_reasoning_done: "response.reasoning.done",
13441344
response_reasoning_summary_delta: "response.reasoning_summary.delta",
13451345
response_reasoning_summary_done: "response.reasoning_summary.done",
1346+
response_reasoning_text_delta: "response.reasoning_text.delta",
1347+
response_reasoning_text_done: "response.reasoning_text.done",
13461348
}
13471349
@discriminator("type")
13481350
model ResponseStreamEvent {
@@ -1750,6 +1752,44 @@ model ResponseReasoningSummaryTextDoneEvent extends ResponseStreamEvent {
17501752
text: string;
17511753
}
17521754

1755+
// Tool customization: Remove shared sequence_number property that was moved to the common parent
1756+
/** Emitted when a delta is added to a reasoning text. */
1757+
model ResponseReasoningTextDeltaEvent extends ResponseStreamEvent {
1758+
/** The type of the event. Always `response.reasoning_text.delta`. */
1759+
type: ResponseStreamEventType.response_reasoning_text_delta;
1760+
1761+
/** The ID of the item this reasoning text delta is associated with. */
1762+
item_id: string;
1763+
1764+
/** The index of the output item this reasoning text delta is associated with. */
1765+
output_index: int32;
1766+
1767+
/** The index of the reasoning content part this delta is associated with. */
1768+
content_index: int32;
1769+
1770+
/** The text delta that was added to the reasoning content. */
1771+
delta: string;
1772+
}
1773+
1774+
// Tool customization: Remove shared sequence_number property that was moved to the common parent
1775+
/** Emitted when a reasoning text is completed. */
1776+
model ResponseReasoningTextDoneEvent extends ResponseStreamEvent {
1777+
/** The type of the event. Always `response.reasoning_text.done`. */
1778+
type: ResponseStreamEventType.response_reasoning_text_done;
1779+
1780+
/** The ID of the item this reasoning text is associated with. */
1781+
item_id: string;
1782+
1783+
/** The index of the output item this reasoning text is associated with. */
1784+
output_index: int32;
1785+
1786+
/** The index of the reasoning content part. */
1787+
content_index: int32;
1788+
1789+
/** The full text of the completed reasoning content. */
1790+
text: string;
1791+
}
1792+
17531793
// Tool customization: Remove shared sequence_number property that was moved to the common parent
17541794
/** Emitted when a web search call is completed. */
17551795
model ResponseWebSearchCallCompletedEvent extends ResponseStreamEvent {

src/Custom/Responses/Internal/GeneratorStubs.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,6 @@ namespace OpenAI.Responses;
5252
[CodeGenType("ResponseItemList")] internal partial class InternalResponseItemList {}
5353
[CodeGenType("ResponseItemListObject")] internal readonly partial struct InternalResponseItemListObject {}
5454
[CodeGenType("ResponseObject")] internal readonly partial struct InternalCreateResponsesResponseObject {}
55-
[CodeGenType("ResponseReasoningSummaryPartAddedEvent")] internal partial class InternalResponseReasoningSummaryPartAddedEvent {}
56-
[CodeGenType("ResponseReasoningSummaryPartDoneEvent")] internal partial class InternalResponseReasoningSummaryPartDoneEvent {}
57-
[CodeGenType("ResponseReasoningSummaryTextDeltaEvent")] internal partial class InternalResponseReasoningSummaryTextDeltaEvent {}
58-
[CodeGenType("ResponseReasoningSummaryTextDoneEvent")] internal partial class InternalResponseReasoningSummaryTextDoneEvent {}
5955
[CodeGenType("ResponsesAssistantMessageItemParam")] internal partial class InternalResponsesAssistantMessageItemParam {}
6056
[CodeGenType("ResponsesDeveloperMessageItemParam")] internal partial class InternalResponsesDeveloperMessageItemParam {}
6157
[CodeGenType("ResponsesMessageItemParam")] internal partial class InternalResponsesMessageItemParam {}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace OpenAI.Responses;
2+
3+
// CUSTOM: Renamed.
4+
[CodeGenType("ResponseReasoningSummaryPartAddedEvent")]
5+
public partial class StreamingResponseReasoningSummaryPartAddedUpdate : StreamingResponseUpdate
6+
{
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace OpenAI.Responses;
2+
3+
// CUSTOM: Renamed.
4+
[CodeGenType("ResponseReasoningSummaryPartDoneEvent")]
5+
public partial class StreamingResponseReasoningSummaryPartDoneUpdate : StreamingResponseUpdate
6+
{
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace OpenAI.Responses;
2+
3+
// CUSTOM: Renamed.
4+
[CodeGenType("ResponseReasoningSummaryTextDeltaEvent")]
5+
public partial class StreamingResponseReasoningSummaryTextDeltaUpdate : StreamingResponseUpdate
6+
{
7+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace OpenAI.Responses;
2+
3+
// CUSTOM: Renamed.
4+
[CodeGenType("ResponseReasoningSummaryTextDoneEvent")]
5+
public partial class StreamingResponseReasoningSummaryTextDoneUpdate : StreamingResponseUpdate
6+
{
7+
}
8+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace OpenAI.Responses;
2+
3+
// CUSTOM: Renamed.
4+
[CodeGenType("ResponseReasoningTextDeltaEvent")]
5+
public partial class StreamingResponseReasoningTextDeltaUpdate : StreamingResponseUpdate
6+
{
7+
}
8+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace OpenAI.Responses;
2+
3+
// CUSTOM: Renamed.
4+
[CodeGenType("ResponseReasoningTextDoneEvent")]
5+
public partial class StreamingResponseReasoningTextDoneUpdate : StreamingResponseUpdate
6+
{
7+
}

0 commit comments

Comments
 (0)