개발자 99% 커뮤니티에서 수다 떨어요!
소개하기
pdf를 업로드하여 그 내용을 기반으로 대화할 수 있는 챗봇 앱입니다. pdf파일을 업로드하여 AI가 내용을 인지하고 관련된 내용에 답변할 수 있습니다. 이전에 진행중이던 대화를 불러와 계속할 수 있습니다. 그 외에도 LLM모델 변경 및 사용 통계 표시 기능을 가지고 있습니다.
front repository
https://github.com/znu4847/pdf-gpt-team-prj-front
api repository
https://github.com/znu4847/pdf-gpt-team-prj-api
개발 기술/스택
front: Streamlit, Langchain
api: Django Rest Framework
설명
streamlit과 django를 이용한 pdf챗봇입니다.
구현한 화면 및 기능은 이하와 같습니다.
로그인
1. 등록한 유저의 아이디로 로그인 기능 구현
2. 유효한 아이디/패스워드 확인
3. 로그인시 JWT토큰을 발급하여 세션에 보존
신규등록
1. 신규 유저 등록
2. 유효한 유저/패스워드 확인
API 설정
1. 채팅에 사용할 LLM모델 설정
2. 각 모델에 필요한 API KEY 설정
3. 유효한 API KEY 체크
API 사용량
1. 보존된 총 대화수 통계
2. 사용한 비용 계산
대화하기
1. pdf를 업로드하여 대화를 시작
2. 이전에 대화한 기록을 불러들여 이어서 대화
작업분담
znu:
- 로그인, 새로등록 화면 및 UI, API 기본 뼈대 작성
- API 설정 화면 및 관련 기능 구현
- Deploy관련 패키지 정리, Deploy 실행
swi:
- api측 JWT인증 구현
- 대화하기 화면 및 Lang Chain구현
- API 사용량 화면 및 관련 기능 구현
후기
지난 10주간 시간이 너무나 빠르게 느껴졌지만 특히 이번 2주가 가장 빠르더군요. 마지막의 마지막에 겨우 완성했다는 사실에 안도감과 성취감을 느낍니다.
좋았던 부분은 배운 지식을 활용해서 제한된 시간안에 처음부터 끝까지 하나의 서비스를 완성하는 과정을 직접 진행했다는 점 같습니다. 사실 직장에서도 코드는 작성하지만, 보통 프로젝트 중간 즈음에 참여해서 담당한 부분만 작업하다보니 서비스 개발의 처음과 끝 부분에 대한 경험이 결여되어있었는데 이번 과제로 적게나마 겪게되어 큰 도움이 되었습니다.
힘들었던 부분은 streamlit으로 UI작성하는 부분입니다. 사실 아직 버그가 남아있어서 미완성이기는 합니다. 파일 업로드와 대화 선택하기를 섞어서 사용하면 대화가 꼬여요. 아무래도 UI작성 처리, 입력 처리, 데이터 관리, LLM처리가 한 화면에 뒤섞여서, 그것도 매번 처음부터 끝까지 재실행되는 방식이다보니 로직이나 실행 타이밍이 꼬여서 두손 두발 다 들었습니다. 익숙해지고 통달하면 되지않을까 싶지만 그 노력이면 차라리 다른 방법을 생각하지 않을까 싶네요.
만일 다음에 개인적으로 LLM 앱을 만들게 되면 UI는 vue든 react든 뭐든간에 frontend전용 툴을 사용하고 LLM처리는 django쪽에 넣어서 만들 생각입니다. 어떻게보면 streamlit도 backend니까 backend가 두 개 있는건 이상하다고 생각해요.
다만 streamlit 자체는 여전히 유용하다고 생각합니다. 실행하면 바로 눈으로 확인할 수 있으니, LLM에 관련된 핵심 기능을 구현하고 확인하는 용도로는요.
마지막으로, 제가 LLM 수업을 제대로 못 들어서 걱정했는데 swi님이 큰 힘을 내주셔서 완성할 수 있었습니다. 감사합니다.