Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
PDF 챗봇 팀 프로젝트
#python
1개월 전
1,632
2
  1. 소개하기

pdf를 업로드하여 그 내용을 기반으로 대화할 수 있는 챗봇 앱입니다. pdf파일을 업로드하여 AI가 내용을 인지하고 관련된 내용에 답변할 수 있습니다. 이전에 진행중이던 대화를 불러와 계속할 수 있습니다. 그 외에도 LLM모델 변경 및 사용 통계 표시 기능을 가지고 있습니다.

  1. 최종 배포 URL

    https://znu4847-pdf-gpt-team-prj-front-app-toicpo.streamlit.app/

  • front repository

https://github.com/znu4847/pdf-gpt-team-prj-front

  • api repository

https://github.com/znu4847/pdf-gpt-team-prj-api

  1. 개발 기술/스택

  • front: Streamlit, Langchain

  • api: Django Rest Framework

  1. 설명

  • streamlit과 django를 이용한 pdf챗봇입니다.

  • 구현한 화면 및 기능은 이하와 같습니다.

    • 로그인

      1. 등록한 유저의 아이디로 로그인 기능 구현

      2. 유효한 아이디/패스워드 확인

      3. 로그인시 JWT토큰을 발급하여 세션에 보존

    • 신규등록

      1. 신규 유저 등록

      2. 유효한 유저/패스워드 확인

    • API 설정

      1. 채팅에 사용할 LLM모델 설정

      2. 각 모델에 필요한 API KEY 설정

      3. 유효한 API KEY 체크

    • API 사용량

      1. 보존된 총 대화수 통계

      2. 사용한 비용 계산

    • 대화하기

      1. pdf를 업로드하여 대화를 시작

      2. 이전에 대화한 기록을 불러들여 이어서 대화

  1. 작업분담

znu:

- 로그인, 새로등록 화면 및 UI, API 기본 뼈대 작성

- API 설정 화면 및 관련 기능 구현

- Deploy관련 패키지 정리, Deploy 실행

swi:

- api측 JWT인증 구현

- 대화하기 화면 및 Lang Chain구현

- API 사용량 화면 및 관련 기능 구현

  1. 후기

  • 지난 10주간 시간이 너무나 빠르게 느껴졌지만 특히 이번 2주가 가장 빠르더군요. 마지막의 마지막에 겨우 완성했다는 사실에 안도감과 성취감을 느낍니다.

  • 좋았던 부분은 배운 지식을 활용해서 제한된 시간안에 처음부터 끝까지 하나의 서비스를 완성하는 과정을 직접 진행했다는 점 같습니다. 사실 직장에서도 코드는 작성하지만, 보통 프로젝트 중간 즈음에 참여해서 담당한 부분만 작업하다보니 서비스 개발의 처음과 끝 부분에 대한 경험이 결여되어있었는데 이번 과제로 적게나마 겪게되어 큰 도움이 되었습니다.

  • 힘들었던 부분은 streamlit으로 UI작성하는 부분입니다. 사실 아직 버그가 남아있어서 미완성이기는 합니다. 파일 업로드와 대화 선택하기를 섞어서 사용하면 대화가 꼬여요. 아무래도 UI작성 처리, 입력 처리, 데이터 관리, LLM처리가 한 화면에 뒤섞여서, 그것도 매번 처음부터 끝까지 재실행되는 방식이다보니 로직이나 실행 타이밍이 꼬여서 두손 두발 다 들었습니다. 익숙해지고 통달하면 되지않을까 싶지만 그 노력이면 차라리 다른 방법을 생각하지 않을까 싶네요.

  • 만일 다음에 개인적으로 LLM 앱을 만들게 되면 UI는 vue든 react든 뭐든간에 frontend전용 툴을 사용하고 LLM처리는 django쪽에 넣어서 만들 생각입니다. 어떻게보면 streamlit도 backend니까 backend가 두 개 있는건 이상하다고 생각해요.

  • 다만 streamlit 자체는 여전히 유용하다고 생각합니다. 실행하면 바로 눈으로 확인할 수 있으니, LLM에 관련된 핵심 기능을 구현하고 확인하는 용도로는요.

  • 마지막으로, 제가 LLM 수업을 제대로 못 들어서 걱정했는데 swi님이 큰 힘을 내주셔서 완성할 수 있었습니다. 감사합니다.

2 comments