@@ -142,39 +142,71 @@ def test_format_request_message_content(content, exp_result):
142142
143143@pytest .mark .asyncio
144144async def test_stream (litellm_acompletion , api_key , model_id , model , agenerator , alist ):
145- mock_tool_call_1_part_1 = unittest .mock .Mock (index = 0 )
146- mock_tool_call_2_part_1 = unittest .mock .Mock (index = 1 )
147145 mock_delta_1 = unittest .mock .Mock (
148146 reasoning_content = "" ,
149147 content = None ,
150148 tool_calls = None ,
151149 )
150+
152151 mock_delta_2 = unittest .mock .Mock (
153152 reasoning_content = "\n I'm thinking" ,
154153 content = None ,
155154 tool_calls = None ,
156155 )
157156 mock_delta_3 = unittest .mock .Mock (
157+ reasoning_content = None ,
158+ content = "One second" ,
159+ tool_calls = None ,
160+ )
161+ mock_delta_4 = unittest .mock .Mock (
162+ reasoning_content = "\n I'm think" ,
163+ content = None ,
164+ tool_calls = None ,
165+ )
166+ mock_delta_5 = unittest .mock .Mock (
167+ reasoning_content = "ing again" ,
168+ content = None ,
169+ tool_calls = None ,
170+ )
171+
172+ mock_tool_call_1_part_1 = unittest .mock .Mock (index = 0 )
173+ mock_tool_call_2_part_1 = unittest .mock .Mock (index = 1 )
174+ mock_delta_6 = unittest .mock .Mock (
158175 content = "I'll calculate" , tool_calls = [mock_tool_call_1_part_1 , mock_tool_call_2_part_1 ], reasoning_content = None
159176 )
160177
161178 mock_tool_call_1_part_2 = unittest .mock .Mock (index = 0 )
162179 mock_tool_call_2_part_2 = unittest .mock .Mock (index = 1 )
163- mock_delta_4 = unittest .mock .Mock (
180+ mock_delta_7 = unittest .mock .Mock (
164181 content = "that for you" , tool_calls = [mock_tool_call_1_part_2 , mock_tool_call_2_part_2 ], reasoning_content = None
165182 )
166183
167- mock_delta_5 = unittest .mock .Mock (content = "" , tool_calls = None , reasoning_content = None )
184+ mock_delta_8 = unittest .mock .Mock (content = "" , tool_calls = None , reasoning_content = None )
168185
169186 mock_event_1 = unittest .mock .Mock (choices = [unittest .mock .Mock (finish_reason = None , delta = mock_delta_1 )])
170187 mock_event_2 = unittest .mock .Mock (choices = [unittest .mock .Mock (finish_reason = None , delta = mock_delta_2 )])
171188 mock_event_3 = unittest .mock .Mock (choices = [unittest .mock .Mock (finish_reason = None , delta = mock_delta_3 )])
172189 mock_event_4 = unittest .mock .Mock (choices = [unittest .mock .Mock (finish_reason = None , delta = mock_delta_4 )])
173- mock_event_5 = unittest .mock .Mock (choices = [unittest .mock .Mock (finish_reason = "tool_calls" , delta = mock_delta_5 )])
174- mock_event_6 = unittest .mock .Mock ()
190+ mock_event_5 = unittest .mock .Mock (choices = [unittest .mock .Mock (finish_reason = None , delta = mock_delta_5 )])
191+ mock_event_6 = unittest .mock .Mock (choices = [unittest .mock .Mock (finish_reason = None , delta = mock_delta_6 )])
192+ mock_event_7 = unittest .mock .Mock (choices = [unittest .mock .Mock (finish_reason = None , delta = mock_delta_7 )])
193+ mock_event_8 = unittest .mock .Mock (choices = [unittest .mock .Mock (finish_reason = "tool_calls" , delta = mock_delta_8 )])
194+ mock_event_9 = unittest .mock .Mock ()
175195
176196 litellm_acompletion .side_effect = unittest .mock .AsyncMock (
177- return_value = agenerator ([mock_event_1 , mock_event_2 , mock_event_3 , mock_event_4 , mock_event_5 , mock_event_6 ])
197+ return_value = agenerator (
198+ [
199+ mock_event_1 ,
200+ mock_event_2 ,
201+ mock_event_3 ,
202+ mock_event_4 ,
203+ mock_event_5 ,
204+ mock_event_6 ,
205+ mock_event_7 ,
206+ mock_event_8 ,
207+ mock_event_9 ,
208+ ]
209+ )
178210 )
179211
180212 messages = [{"role" : "user" , "content" : [{"type" : "text" , "text" : "calculate 2+2" }]}]
@@ -184,6 +216,15 @@ async def test_stream(litellm_acompletion, api_key, model_id, model, agenerator,
184216 {"messageStart" : {"role" : "assistant" }},
185217 {"contentBlockStart" : {"start" : {}}},
186218 {"contentBlockDelta" : {"delta" : {"reasoningContent" : {"text" : "\n I'm thinking" }}}},
219+ {"contentBlockStop" : {}},
220+ {"contentBlockStart" : {"start" : {}}},
221+ {"contentBlockDelta" : {"delta" : {"text" : "One second" }}},
222+ {"contentBlockStop" : {}},
223+ {"contentBlockStart" : {"start" : {}}},
224+ {"contentBlockDelta" : {"delta" : {"reasoningContent" : {"text" : "\n I'm think" }}}},
225+ {"contentBlockDelta" : {"delta" : {"reasoningContent" : {"text" : "ing again" }}}},
226+ {"contentBlockStop" : {}},
227+ {"contentBlockStart" : {"start" : {}}},
187228 {"contentBlockDelta" : {"delta" : {"text" : "I'll calculate" }}},
188229 {"contentBlockDelta" : {"delta" : {"text" : "that for you" }}},
189230 {"contentBlockStop" : {}},
@@ -211,9 +252,9 @@ async def test_stream(litellm_acompletion, api_key, model_id, model, agenerator,
211252 {
212253 "metadata" : {
213254 "usage" : {
214- "inputTokens" : mock_event_6 .usage .prompt_tokens ,
215- "outputTokens" : mock_event_6 .usage .completion_tokens ,
216- "totalTokens" : mock_event_6 .usage .total_tokens ,
255+ "inputTokens" : mock_event_9 .usage .prompt_tokens ,
256+ "outputTokens" : mock_event_9 .usage .completion_tokens ,
257+ "totalTokens" : mock_event_9 .usage .total_tokens ,
217258 },
218259 "metrics" : {"latencyMs" : 0 },
219260 }
@@ -253,8 +294,6 @@ async def test_stream_empty(litellm_acompletion, api_key, model_id, model, agene
253294 tru_events = await alist (response )
254295 exp_events = [
255296 {"messageStart" : {"role" : "assistant" }},
256- {"contentBlockStart" : {"start" : {}}},
257- {"contentBlockStop" : {}},
258297 {"messageStop" : {"stopReason" : "end_turn" }},
259298 ]
260299
0 commit comments