@@ -34,11 +34,13 @@ def __init__(
3434 raw_stream : Stream [RawResponseStreamEvent ],
3535 text_format : type [TextFormatT ] | NotGiven ,
3636 input_tools : Iterable [ToolParam ] | NotGiven ,
37+ starting_after : int | None ,
3738 ) -> None :
3839 self ._raw_stream = raw_stream
3940 self ._response = raw_stream .response
4041 self ._iterator = self .__stream__ ()
4142 self ._state = ResponseStreamState (text_format = text_format , input_tools = input_tools )
43+ self ._starting_after = starting_after
4244
4345 def __next__ (self ) -> ResponseStreamEvent [TextFormatT ]:
4446 return self ._iterator .__next__ ()
@@ -54,7 +56,8 @@ def __stream__(self) -> Iterator[ResponseStreamEvent[TextFormatT]]:
5456 for sse_event in self ._raw_stream :
5557 events_to_fire = self ._state .handle_event (sse_event )
5658 for event in events_to_fire :
57- yield event
59+ if self ._starting_after is None or event .sequence_number > self ._starting_after :
60+ yield event
5861
5962 def __exit__ (
6063 self ,
@@ -96,11 +99,13 @@ def __init__(
9699 * ,
97100 text_format : type [TextFormatT ] | NotGiven ,
98101 input_tools : Iterable [ToolParam ] | NotGiven ,
102+ starting_after : int | None ,
99103 ) -> None :
100104 self .__stream : ResponseStream [TextFormatT ] | None = None
101105 self .__api_request = api_request
102106 self .__text_format = text_format
103107 self .__input_tools = input_tools
108+ self .__starting_after = starting_after
104109
105110 def __enter__ (self ) -> ResponseStream [TextFormatT ]:
106111 raw_stream = self .__api_request ()
@@ -109,6 +114,7 @@ def __enter__(self) -> ResponseStream[TextFormatT]:
109114 raw_stream = raw_stream ,
110115 text_format = self .__text_format ,
111116 input_tools = self .__input_tools ,
117+ starting_after = self .__starting_after ,
112118 )
113119
114120 return self .__stream
@@ -130,11 +136,13 @@ def __init__(
130136 raw_stream : AsyncStream [RawResponseStreamEvent ],
131137 text_format : type [TextFormatT ] | NotGiven ,
132138 input_tools : Iterable [ToolParam ] | NotGiven ,
139+ starting_after : int | None ,
133140 ) -> None :
134141 self ._raw_stream = raw_stream
135142 self ._response = raw_stream .response
136143 self ._iterator = self .__stream__ ()
137144 self ._state = ResponseStreamState (text_format = text_format , input_tools = input_tools )
145+ self ._starting_after = starting_after
138146
139147 async def __anext__ (self ) -> ResponseStreamEvent [TextFormatT ]:
140148 return await self ._iterator .__anext__ ()
@@ -147,7 +155,8 @@ async def __stream__(self) -> AsyncIterator[ResponseStreamEvent[TextFormatT]]:
147155 async for sse_event in self ._raw_stream :
148156 events_to_fire = self ._state .handle_event (sse_event )
149157 for event in events_to_fire :
150- yield event
158+ if self ._starting_after is None or event .sequence_number > self ._starting_after :
159+ yield event
151160
152161 async def __aenter__ (self ) -> Self :
153162 return self
@@ -192,11 +201,13 @@ def __init__(
192201 * ,
193202 text_format : type [TextFormatT ] | NotGiven ,
194203 input_tools : Iterable [ToolParam ] | NotGiven ,
204+ starting_after : int | None ,
195205 ) -> None :
196206 self .__stream : AsyncResponseStream [TextFormatT ] | None = None
197207 self .__api_request = api_request
198208 self .__text_format = text_format
199209 self .__input_tools = input_tools
210+ self .__starting_after = starting_after
200211
201212 async def __aenter__ (self ) -> AsyncResponseStream [TextFormatT ]:
202213 raw_stream = await self .__api_request
@@ -205,6 +216,7 @@ async def __aenter__(self) -> AsyncResponseStream[TextFormatT]:
205216 raw_stream = raw_stream ,
206217 text_format = self .__text_format ,
207218 input_tools = self .__input_tools ,
219+ starting_after = self .__starting_after ,
208220 )
209221
210222 return self .__stream
0 commit comments