LangChain 챗봇7장 · 웹 UI 연동과 배포21 / 22← 이전목차다음 →MetaContents

7장. 웹 UI 연동과 배포

정리

Streamlit 의 실행 모델, 챗봇 로직 연동, 배포와 점검의 세 칸에 실습에서 본 숫자를 한 장에 모은 인포그래픽
  • Streamlit 은 파이썬 파일 하나를 웹 화면으로 바꿉니다. 손님이 위젯을 만질 때마다 스크립트가 맨 위부터 다시 돌고, 그때 남는 것은 위젯의 값과 st.session_state 입니다. 실습 1에서 화면을 세 번 그리는 동안 runs 는 3 이 되었지만 보통 변수 clicks 는 0 으로 돌아갔습니다.
  • st.session_state 는 손님(브라우저 탭)마다 따로 있는 메모장입니다. 대화 기록을 여기에 두고 다시 돌 때마다 st.chat_message 로 다시 그리면 채팅 화면이 됩니다. 실습 2에서 첫 손님의 기록은 6개, 새 손님은 0개에서 시작해 섞이지 않았습니다.
  • 챗봇 로직은 make_chain(), answer() 같은 함수로 화면과 떼어 둡니다. 4장의 세션 id 와 기록 상자 자리에 st.session_state 가 들어갑니다.
  • 모델과 문서 색인처럼 무거운 부품은 st.cache_resource 로 서버에서 한 번만 만들어 모든 손님이 함께 씁니다. 실습 5에서 스크립트는 세 번 돌았지만 약관 색인(조각 11개)은 한 번만 만들었습니다.
  • st.write_stream(chain.stream(...)) 은 답을 조각이 오는 대로 말풍선에 이어 쓰고, 다 쓴 글을 돌려줍니다. 그 글을 그대로 기록에 넣습니다.
  • 키는 클라우드에서는 Secrets 칸(st.secrets), 내 PC 에서는 .env 에서 읽습니다. secrets.toml 이 없으면 st.secrets 가 FileNotFoundError 를 내므로 try 로 감쌉니다.
  • 배포할 폴더에는 앱, 앱이 읽는 파일, requirements.txt, 비밀 값 견본, .gitignore 가 갖춰져야 합니다. 프로젝트에서 실수를 넣은 폴더는 AppTest 두 가지를 통과하고도 파일 점검 다섯 가지에서 모두 걸렸습니다.
← 이전 절7장 · 프로젝트 1 — 배포 점검다음 절 →7장 · 확인문제와 해답