728x90
ChatGPT 를 사용하다보면 기존의 챗봇에서 타자를 마치 사람이 치는것처럼 '타타타타타닥' 하면서 글자들이 출력되곤 하는데요. 챗봇을 구축할때 나도 저걸 할 수 없을까 생각을 한적이 있습니다. 막상 아 그냥 프론트엔드 영역이겠지~ 하고 넘어갔는데요. 손쉽게 구현이 가능 했습니다.
LCEL object 에서 stream 이 사용이 가능한데요. 모델이 토큰을 다 생성되고 출력을 해주는게 아니고 생성되는 토큰마다 바로 출력물을 제공하도록 Chunk 단위로 쪼개서 출력을 시켜주는 방식입니다.
여기에 time.sleep(0.5) 이렇게 넣는다면 이제 아 이건 GPT-4 처럼 느리게 출력물을 받을 수 있는데요 지금 드는 생각이 추론 gpt-turbo 는 time sleep 을 걸지 않은게 아닌가? 이렇게 생각이 드네요.
While 문을 통해서 구현 예시를 살펴보겠습니다.
quit_msg = {'exit', ''}
while True:
user_input = input("Client: ")
if user_input in quit_msg:
break
print(f"WiznetAI: ", end='')
response = ""
for chunk in conv_chain.stream({"input": user_input}):
print(chunk.content, end="", flush=True)
response += chunk.content
memory.save_context({"input": user_input}, {"output": response})
Exit 와 공백을 누르면 나가지고
While 문으로 챗봇을 시작을 합니다
인풋을 받고 인풋에 만약 quit_msg 가 있다면 break 로 루프는 탈출합니다.
청크단위로 쪼개면서 실행을 해줍니다. 그러면 이제 타타탁 하면서 답변이 나옵니다
그리고 메모리에 저장하는 코드입니다.
순간 써보면서 '앗 이거다 싶어서 글로 남깁니다.
728x90
'AI > Contents' 카테고리의 다른 글
Attention Mechanism 이란? - (1) (4) | 2024.03.04 |
---|---|
Chat With RTX 사용방법과 후기 (4) | 2024.02.20 |
Ollama를 활용한 VScode 로 Local GithubCopilot 만들기 - (3) (2) | 2024.02.15 |
Ollama를 활용한 맥북 Github Copilot 구축하기 - (2) (1) | 2024.02.15 |
Ollama를 활용한 아이폰으로 Ondevice AI 같은 서비스 구축하기 (1) | 2024.02.15 |