response = await chat_engine.astream_chat(query) result = "" async for token in response.async_response_gen(): result += token yield token
async def generate_response_qa( query: str, chat_session_id: str, type: str, db ) -> AsyncGenerator[str, None]: memory, message_history, chat_memory = await get_memory_for_session(chat_session_id, db) chat_engine = SimpleChatEngine.from_defaults(memory=chat_memory, llm=QA_LLM_MODEL, prefix_messages=[]) response = await chat_engine.astream_chat(query) result = "" async for token in response.async_response_gen(): result += token yield token
python async for token in response.async_response_gen(): result += token yield token
async def generate_response_qa( query: str, chat_session_id: str, type: str, db ) -> AsyncGenerator[str, None]: chat_memory = await get_memory_for_session(chat_session_id, db) chat_engine = SimpleChatEngine.from_defaults(memory=chat_memory, llm=QA_LLM_MODEL, prefix_messages=[]) response = await run_in_threadpool(chat_engine.stream_chat, query) result = "" async for token in async_wrap_generator(response.response_gen): result += token yield token
async def async_wrap_generator(sync_gen: Generator[Any, None, None]) -> AsyncGenerator[Any, None]: for value in sync_gen: await asyncio.sleep(0) # Yield control to the event loop yield value