@@ -227,6 +227,123 @@ async def test_simple_chat_flow(test_client):
227
227
assert response_data ["session_state" ] is None
228
228
229
229
230
+ @pytest .mark .asyncio
231
+ async def test_simple_chat_streaming_flow (test_client ):
232
+ """test the simple chat streaming flow route with hybrid retrieval mode"""
233
+ response = test_client .post (
234
+ "/chat/stream" ,
235
+ json = {
236
+ "context" : {
237
+ "overrides" : {"top" : 1 , "use_advanced_flow" : False , "retrieval_mode" : "hybrid" , "temperature" : 0.3 }
238
+ },
239
+ "messages" : [{"content" : "What is the capital of France?" , "role" : "user" }],
240
+ },
241
+ )
242
+ response_data = response .content .split (b"\n " )
243
+ assert response .status_code == 200
244
+ assert response .headers ["Content-Type" ] == "application/x-ndjson"
245
+ assert response_data [0 ] == (
246
+ b'{"message": {"content": "", "role": "assistant"}, "context": {"data_points":'
247
+ + b' {"1": {"id": 1, "type": "Footwear", "brand": "Daybird", "name": "Wanderer B'
248
+ + b'lack Hiking Boots", "description": "Daybird\' s Wanderer Hiking Boots in s'
249
+ + b"leek black are perfect for all your outdoor adventures. These boots are made"
250
+ + b" with a waterproof leather upper and a durable rubber sole for superior trac"
251
+ + b"tion. With their cushioned insole and padded collar, these boots will keep y"
252
+ + b'ou comfortable all day long.", "price": 109.99}}, "thoughts": [{"title": "Se'
253
+ + b'arch query for database", "description": "What is the capital of France?", "'
254
+ + b'props": {"top": 1, "vector_search": true, "text_search": true}}, {"title": "'
255
+ + b'Search results", "description": [{"id": 1, "type": "Footwear", "brand": "Day'
256
+ + b'bird", "name": "Wanderer Black Hiking Boots", "description": "Daybird\' s '
257
+ + b"Wanderer Hiking Boots in sleek black are perfect for all your outdoor advent"
258
+ + b"ures. These boots are made with a waterproof leather upper and a durable rub"
259
+ + b"ber sole for superior traction. With their cushioned insole and padded colla"
260
+ + b'r, these boots will keep you comfortable all day long.", "price": 109.99}], '
261
+ + b'"props": {}}, {"title": "Prompt to generate answer", "description": ["{\' '
262
+ + b"role': 'system', 'content': \\ \" Assistant helps customers with questio"
263
+ + b"ns about products.\\ \\ nRespond as if you are a salesperson helping a custo"
264
+ + b"mer in a store. Do NOT respond with tables.\\ \\ nAnswer ONLY with the produ"
265
+ + b"ct details listed in the products.\\ \\ nIf there isn't enough information b"
266
+ + b"elow, say you don't know.\\ \\ nDo not generate answers that don't use the s"
267
+ + b"ources below.\\ \\ nEach product has an ID in brackets followed by colon and"
268
+ + b" the product details.\\ \\ nAlways include the product ID for each product y"
269
+ + b"ou use in the response.\\ \\ nUse square brackets to reference the source, f"
270
+ + b"or example [52].\\ \\ nDon't combine citations, list each product separately"
271
+ + b", for example [27][51].\\ \" }\" , \" {'role': 'user', 'content': \\ \" What is "
272
+ + b"the capital of France?\\ \\ n\\ \\ nSources:\\ \\ n[1]:Name:Wanderer Black Hikin"
273
+ + b"g Boots Description:Daybird's Wanderer Hiking Boots in sleek black are perfe"
274
+ + b"ct for all your outdoor adventures. These boots are made with a waterproof l"
275
+ + b"eather upper and a durable rubber sole for superior traction. With their cus"
276
+ + b"hioned insole and padded collar, these boots will keep you comfortable all d"
277
+ + b'ay long. Price:109.99 Brand:Daybird Type:Footwear\\ \\ n\\ \\ n\\ "}"], "props'
278
+ + b'": {"model": "gpt-35-turbo", "deployment": "gpt-35-turbo"}}], "followup_ques'
279
+ + b'tions": null}, "session_state": null}'
280
+ )
281
+
282
+
283
+ @pytest .mark .asyncio
284
+ async def test_advanved_chat_streaming_flow (test_client ):
285
+ """test the advanced chat streaming flow route with hybrid retrieval mode"""
286
+ response = test_client .post (
287
+ "/chat/stream" ,
288
+ json = {
289
+ "context" : {
290
+ "overrides" : {"top" : 1 , "use_advanced_flow" : True , "retrieval_mode" : "hybrid" , "temperature" : 0.3 }
291
+ },
292
+ "messages" : [{"content" : "What is the capital of France?" , "role" : "user" }],
293
+ },
294
+ )
295
+ response_data = response .content .split (b"\n " )
296
+ assert response .status_code == 200
297
+ assert response .headers ["Content-Type" ] == "application/x-ndjson"
298
+ assert response_data [0 ] == (
299
+ b'{"message": {"content": "", "role": "assistant"}, "context": {"data_points":'
300
+ + b' {"1": {"id": 1, "type": "Footwear", "brand": "Daybird", "name": "Wanderer B'
301
+ + b'lack Hiking Boots", "description": "Daybird\' s Wanderer Hiking Boots in s'
302
+ + b'leek black are perfect for all your outdoor adventures. These boots are made'
303
+ + b' with a waterproof leather upper and a durable rubber sole for superior trac'
304
+ + b'tion. With their cushioned insole and padded collar, these boots will keep y'
305
+ + b'ou comfortable all day long.", "price": 109.99}}, "thoughts": [{"title": "Pr'
306
+ + b'ompt to generate search arguments", "description": ["{\' role\' : \' system\' , '
307
+ + b"'content': 'Below is a history of the conversation so far, and a new questio"
308
+ + b'n asked by the user that needs to be answered by searching database rows'
309
+ + b'.\\ \\ nYou have access to an Azure PostgreSQL database with an items table '
310
+ + b'that has columns for title, description, brand, price, and type.\\ \\ nGener'
311
+ + b'ate a search query based on the conversation and the new question.\\ \\ nIf '
312
+ + b'the question is not in English, translate the question to English before gen'
313
+ + b'erating the search query.\\ \\ nIf you cannot generate a search query, retur'
314
+ + b'n the original user question.\\ \\ nDO NOT return anything besides the query'
315
+ + b'.\' }", "{\' role\' : \' user\' , \' content\' : \' What is the capital of Franc'
316
+ + b'e?\' }"], "props": {"model": "gpt-35-turbo", "deployment": "gpt-35-turbo"}'
317
+ + b'}, {"title": "Search using generated search arguments", "description": "The '
318
+ + b'capital of France is Paris. [Benefit_Options-2.pdf].", "props": {"top": 1, "'
319
+ + b'vector_search": true, "text_search": true, "filters": []}}, {"title": "Searc'
320
+ + b'h results", "description": [{"id": 1, "type": "Footwear", "brand": "Daybird"'
321
+ + b', "name": "Wanderer Black Hiking Boots", "description": "Daybird\' s Wande'
322
+ + b'rer Hiking Boots in sleek black are perfect for all your outdoor adventures.'
323
+ + b' These boots are made with a waterproof leather upper and a durable rubber s'
324
+ + b'ole for superior traction. With their cushioned insole and padded collar, th'
325
+ + b'ese boots will keep you comfortable all day long.", "price": 109.99}], "prop'
326
+ + b's": {}}, {"title": "Prompt to generate answer", "description": ["{\' role\' '
327
+ + b': \' system\' , \' content\' : \\ "Assistant helps customers with questions ab'
328
+ + b'out products.\\ \\ nRespond as if you are a salesperson helping a customer i'
329
+ + b'n a store. Do NOT respond with tables.\\ \\ nAnswer ONLY with the product de'
330
+ + b"tails listed in the products.\\ \\ nIf there isn't enough information below,"
331
+ + b" say you don't know.\\ \\ nDo not generate answers that don't use the source"
332
+ + b's below.\\ \\ nEach product has an ID in brackets followed by colon and the '
333
+ + b'product details.\\ \\ nAlways include the product ID for each product you us'
334
+ + b'e in the response.\\ \\ nUse square brackets to reference the source, for ex'
335
+ + b"ample [52].\\ \\ nDon't combine citations, list each product separately, for"
336
+ + b' example [27][51].\\ "}", "{\' role\' : \' user\' , \' content\' : \\ "What is the c'
337
+ + b'apital of France?\\ \\ n\\ \\ nSources:\\ \\ n[1]:Name:Wanderer Black Hiking Boo'
338
+ + b"ts Description:Daybird's Wanderer Hiking Boots in sleek black are perfect fo"
339
+ + b'r all your outdoor adventures. These boots are made with a waterproof leathe'
340
+ + b'r upper and a durable rubber sole for superior traction. With their cushione'
341
+ + b'd insole and padded collar, these boots will keep you comfortable all day lo'
342
+ + b'ng. Price:109.99 Brand:Daybird Type:Footwear\\ \\ n\\ \\ n\\ "}"], "props": {"'
343
+ + b'model": "gpt-35-turbo", "deployment": "gpt-35-turbo"}}], "followup_questions'
344
+ + b'": null}, "session_state": null}'
345
+ )
346
+
230
347
@pytest .mark .asyncio
231
348
async def test_advanced_chat_flow (test_client ):
232
349
"""test the advanced chat flow route with hybrid retrieval mode"""
0 commit comments