Post

WIL: 학습 내용 그리고 팀 프로젝트 진행 기록

이번 주에는 팀 프로젝트로 AI 챗봇을 개발하며, LangChain, Streamlit, Neon PostgreSQL, Django Channels를 학습하고 적용하였습니다.

WIL: 학습 내용 그리고 팀 프로젝트 진행 기록

FACTS(사실, 객관)

1. 팀 프로젝트 진행 상황

  • 지난 수요일(2/14)부터 팀 프로젝트를 진행하고 있으며, 개발자 모의 기술 면접 AI 챗봇을 개발하고 있습니다.
  • 챗봇을 Streamlit을 이용하여 배포하는 것이 목표지만, 구현이 예상보다 어렵고 멀티턴 대화가 정상적으로 작동하지 않는 문제가 발생하고 있습니다.
  • 저는 RDB(Database) 부분을 담당하여 Neon 서버리스 PostgreSQL을 도입하고, 초기 설정 및 테이블 설계를 진행하였습니다.

2. 학습한 내용

  • LangChain 기본 개념 및 환경 설정 → LangChain을 활용하여 LLM 기반 AI 애플리케이션을 구축하는 방법을 학습하였습니다.
  • LangChain Streaming 응답 구현 → 실시간 응답을 위한 Streaming 방식을 학습하고 적용을 시도하였습니다.
  • LangChain에서 Caching을 활용한 응답 속도 최적화 → 반복되는 요청의 성능을 개선하기 위해 캐싱을 적용하는 방법을 익혔습니다.
  • LangChain의 프롬프트 템플릿과 메시지 유형 활용 → 일관된 대화를 생성하기 위해 Prompt Template을 활용하는 방법을 배웠습니다.
  • LangChain에서 Multi-turn 대화 구현 → 멀티턴 대화(대화 히스토리를 유지하며 문맥을 이해하는 대화)를 적용하는 방법을 학습하였습니다.
  • LangChain 에이전트 개념과 활용 → AI가 특정한 도구를 활용하여 문제를 해결하도록 만드는 에이전트(Agent) 개념을 익혔습니다.
  • GitHub Actions 기본 개념 → CI/CD 자동화를 위해 GitHub Actions의 구조와 Workflow 설정 방법을 학습하였습니다.
  • Django에서 WebSocket 지원 방법 → Django Channels를 이용하여 WebSocket을 활용하는 방법을 익혔습니다.

FEELINGS(느낌, 주관)

  • 팀 프로젝트를 진행하면서 Streamlit을 활용한 배포멀티턴 대화 구현이 예상보다 어렵다는 것을 실감하였습니다.
  • 프로젝트 초반이라 기능이 완벽하게 동작하지 않아 답답함이 있었지만, 한 단계씩 해결해 나가는 과정에서 성취감도 느낄 수 있었습니다.
  • RDB를 맡으며 Neon 서버리스 DB를 처음 사용해보았는데, 기존의 RDB와 다른 점을 학습할 기회가 되어 유익했습니다.

FINDINGS(배운 것)

  • 멀티턴 대화를 구현할 때 대화 기록을 유지하는 것이 중요하며, 이를 위해 ChatMessageHistory와 같은 기능을 활용해야 한다는 점을 깨달았습니다.
  • Streamlit을 이용한 배포 과정에서 세션 상태 관리가 중요하며, 이를 해결하기 위해 st.session_state를 적극적으로 활용해야 한다는 점을 배웠습니다.
  • Neon 서버리스 PostgreSQL을 사용하면 별도의 인프라 설정 없이 데이터베이스를 손쉽게 운영할 수 있다는 장점이 있지만, 기존의 로컬 DB와 차이점이 존재하여 주의가 필요하다는 것을 경험했습니다.
  • Django Channels를 활용한 WebSocket 구현이 쉽지 않지만, 실시간 데이터 처리를 위해 필수적인 요소라는 점을 다시금 느꼈습니다.

FUTURE(미래 계획)

  • 멀티턴 대화 구현을 더욱 개선하여 자연스럽고 문맥을 유지하는 챗봇을 만들기 위해 RunnableWithMessageHistory를 적용해 볼 예정입니다.
  • Streamlit 배포 안정화를 위해 상태 관리 방식을 정리하고, 배포 환경에서 발생하는 문제를 해결하는 방법을 추가로 학습할 계획입니다.
  • Neon PostgreSQL 활용 심화 → 서버리스 DB의 장점과 단점을 분석하고, 데이터 처리 속도 및 안정성을 높이는 최적화 방법을 연구할 예정입니다.
  • WebSocket을 활용한 실시간 기능 강화 → Django Channels의 비동기 처리 방식을 더 깊이 이해하고, Redis를 활용한 성능 최적화 방법을 실험해 볼 계획입니다.

프로젝트는 점점 더 완성도 높은 챗봇을 만들어 나가기 위해 노력하겠습니다. 다음 주에는 구현한 기능을 테스트하고, 실제 데이터와 연동하는 과정을 진행할 예정입니다.

This post is licensed under CC BY 4.0 by the author.