시간날때 작성..
@router.get("")
async def chatToAI(chat: str):
stream_it = AsyncIteratorCallbackHandler()
gen = create_gen(chat, stream_it)
return StreamingResponse(gen, media_type="text/event-stream")
async def run_call(query: str, stream_it: AsyncIteratorCallbackHandler):
llm = ChatOpenAI(temperature=0.5, model_name="gpt-3.5-turbo-16k",
openai_api_key=gpt_api_key, streaming=True,
callbacks=[stream_it],
)
# Question & Answer chain 구성
qChain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever = vectorstore.as_retriever(search_kwargs={'k': 3}),
return_source_documents=False,
)
response = await qChain.acall(query)
return response
async def create_gen(text: str, stream_it: AsyncIteratorCallbackHandler):
task = asyncio.create_task(run_call(text, stream_it))
async for token in stream_it.aiter():
yield token
await task