33 lines
865 B
Python
33 lines
865 B
Python
|
import asyncio
|
||
|
from src.schema.response import Item, ResponseItem
|
||
|
import random
|
||
|
|
||
|
|
||
|
async def conversation_streamer():
|
||
|
for l in "Hello, nice to meet you!":
|
||
|
yield l
|
||
|
await asyncio.sleep(0.2)
|
||
|
|
||
|
|
||
|
async def json_streamer():
|
||
|
response_item: ResponseItem = ResponseItem(id=1, title="Test Title", items=[])
|
||
|
for i in range(9):
|
||
|
|
||
|
response_item.items.append(
|
||
|
Item(
|
||
|
title=f"Item {i}",
|
||
|
description=f"Description {i}",
|
||
|
type=random.choice(['A', 'B']),
|
||
|
)
|
||
|
)
|
||
|
text = response_item.model_dump_json()
|
||
|
index = 0
|
||
|
while True:
|
||
|
next_index = random.randint(1, 3) + index
|
||
|
yield text[index : min(len(text), next_index)]
|
||
|
index = next_index
|
||
|
if index >= len(text):
|
||
|
break
|
||
|
else:
|
||
|
await asyncio.sleep(0.2)
|