채팅을 이용해서 답변을 답으면 줄이 주르르 생기면서 stream으로 답변을 해주는데
api의 경우 답변을 받고 가져오기까지 시간이 걸려 이용자가 지루해 할 수 있다.
이때 langchain의 streaming을 사용한다.
https://python.langchain.com/docs/concepts/streaming/
from langchain.chat_models import ChatOpenAI
from langchain.schema import (
HumanMessage,
)
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
chat = ChatOpenAI(streaming=True, callbacks=StreamingStdOutCallbackHandler())
resp = chat([HumanMessage(content="Write me a song about sparkling water.")])
여기서 streaming을 True로 실행시켜주고 callback함수를 실행해야 하는데 콜백함수는 데이터가 요청이 될때마다 실행되는 함수이다.
클래스를 생성하여 stream을 받아줄 handler를 생성해준다.
from langchain.callbacks.base import BaseCallbackHandler
class StreamHandler(BaseCallbackHandler):
def __init__(self, container, initial_text=""):
self.container = container
self.text=initial_text
def on_llm_new_token(self, token: str, **kwargs) -> None:
self.text+=token
self.container.markdown(self.text)
여기서는 토큰을 생성하여 text와 container에 넣어준다.
'컴퓨터 과학 > AI' 카테고리의 다른 글
이미지 생성 AI 사이트 (0) | 2025.01.03 |
---|---|
ChatPDF - pdf를 읽어서 chatgpt에게 물어보기 (0) | 2024.12.31 |
LLaMa2 - local에서 LLM돌리기 (0) | 2024.12.31 |
LangChain(랭체인) - 어플리케이션 개발 프레임워크 (0) | 2024.12.30 |