RAG

패스트캠퍼스 환급챌린지 14일차 : 테디노트의 RAG 비법노트 강의 후기

Sssadie 2025. 11. 25. 21:19
반응형

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

02. [프로젝트] Streamlit 으로 나만의 ChatGPT 웹앱 제작 (2)

 

LLM의 응답을 한 번에 보여주는 것이 아니라, 실제 ChatGPT 처럼 토큰 단위로 응답이 실시간으로 생성되는 듯한 효과 구현

  • st.chat_message("assistant") 블록 내부에 st.empty()를 이용해 빈 컨테이너 생성
  • 이 컨테이너에 LLM으로부터 받은 각 token을 answer 변수에 누적하면서, 누적된 answer를 container.markdown(answer)를 통해 지속적으로 쌓아서 출력

    with st.chat_message("assistant"):
        # 빈 공간(컨테이너)을 만들어서, 여기에 토큰을 스트리밍 출력
        container = st.empty()

        answer = ""     #빈 문자열에 토큰들을 계속 쌓아 올림
        for token in response:  
            answer += token    #answer에 토큰 누적
            container.markdown(answer)



 

 

# 사이드바 생성
with st.sidebar:
    # 초기화 버튼 생성
    clear_btn = st.button("대화 초기화")

 

 

 

 

 

 

 

 

 

사용자가 원할 때 언제든지 이전 대화를 깨끗하게 지우고 새로운 대화를 시작할 수 있는 '대화 초기화' 버튼 생성

  • streamlit의 사이드바(st.sidebar)에 st.button("대화 초기화") 버튼 생성
  • 이 버튼이 눌렸을 때 (if clear_btn:), st.session_state["messages"]에 저장된 이전 대화 기록 리스트를 빈 리스트[ ] 로 초기화
  • 이후 print_messages() 함수를 호출하면, 빈 리스트가 출력되면서 화면상의 모든 대화가 사라짐. 
# 초기화 버튼이 눌리면
if clear_btn:
    st.session_state["messages"] = []

# 이전 대화 기록 출력
print_messages()

 


이번 수업에서는 LangChain으로 LLM을 연결하고, 이를 Streamlit이라는 파이썬 라이브러리를 활용하여 나만의 ChatGPT와 같은 웹 어플리케이션으로 구현하는 실습을 진행했습니다. 특히, 단순히 기능을 구현하는 것을 넘어 사용자 경험(UX)를 고려한 스트리밍 출력 방식과 대화 기록 초기화 기능을 젹용할 수 있었던 점이 흥미로웠어요!! Streamlit이 제공하는 간결한 API 덕분에 복잡한 프론트엔드 지식 없이도 사용자 친화적인 웹앱을 구축할 수 있겠어요. 제가 이전에 쌓아왔던 경험들과 이렇게 배운 내용을 활용해서 제가 취업 준비하면서 도움받을 수 있는 챗봇을 구현할 수도 있을 것 같아요! 지금부터 구상 들어갑니다. 

 

 

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr

 

 

반응형