chainlit

AI Chat UIsCLIPython

★ 12,445주당 +21조회 4

무엇인가

Chainlit은 LLM 애플리케이션의 대화 계층을 담당하는 파이썬 프레임워크다. 사용자 입력 수신, 모델 호출, 중간 과정 표시, 응답 스트리밍, 세션 이력 저장처럼 채팅 앱마다 반복되는 부분을 프레임워크가 맡고 개발자는 에이전트·RAG·도구 호출 로직만 작성한다. React 프론트엔드와 실시간 서버를 처음부터 조립하는 자리를 대체한다.

어떻게 동작하나

백엔드는 FastAPI와 Socket.IO로, 프론트엔드는 React 애플리케이션으로 구성된다. `chainlit run`은 두 요소를 한 프로세스에서 서빙하고 브라우저는 Socket.IO 연결로 메시지와 스트리밍 토큰을 주고받는다. 개발자는 `@cl.on_chat_start`, `@cl.on_message`, `@cl.step` 데코레이터로 핸들러를 등록한다. `@cl.step`으로 감싼 구간은 접고 펼칠 수 있는 중간 단계로 화면에 나타난다. 이미지·PDF·파일·텍스트는 `cl.Image`, `cl.Pdf`, `cl.File`, `cl.Text` 같은 Element로 메시지에 붙는다. 대화 이력과 요소는 SQLAlchemy 데이터 계층에 저장되고 기본값은 SQLite이며 `DATABASE_URL`로 다른 데이터베이스를 지정한다.

무엇과 다른가

Streamlit이나 Gradio는 스크립트를 다시 실행해 화면을 그리는 범용 앱 도구이고, Chainlit은 세션을 유지한 채 이벤트 핸들러를 호출하는 구조다. 그래서 사용자마다 독립된 대화 상태를 가질 수 있고 같은 세션에서 이어지는 후속 질문이 동일한 컨텍스트를 공유한다. React와 FastAPI를 직접 조립하는 방식과 비교하면 두 층이 이미 연결되어 있고 확장점은 파이썬 쪽에 열려 있다.

어떻게 쓰나

설치는 `pip install chainlit`이다. 핸들러를 정의한 앱 파일을 만든 뒤 `chainlit run app.py -w`로 실행하면 기본 포트 8000에서 서버가 뜨고 브라우저에 채팅 화면이 열린다. `-w`는 파일 변경 시 자동 재시작을 켠다. UI 문구·테마·기능 토글은 `.chainlit/config.toml`에서, 첫 화면에 보이는 안내 문서는 `chainlit.md`에서 관리한다. 인증이 필요하면 `@cl.password_auth_callback`이나 `@cl.oauth_callback`을 등록한다.

전제와 한계

파이썬 런타임과 pip가 필요하고 UI는 CLI가 서빙하는 웹 화면이므로 브라우저가 전제된다. 화면 구조는 채팅 패러다임에 고정되어 임의 레이아웃 구성은 범위 밖이다. 인증·데이터 영속화·세션 재개 같은 기능은 각각 콜백과 데이터 계층 설정을 켜야 동작한다. 배포할 때는 호스트·포트 옵션을 주어 실행하거나 컨테이너 이미지로 패키징한다.

유사 도구