개발자
안녕하세요! 대학교 졸업 프로젝트로 생성형 AI(GPT API 사용)를 활용한 웹 서비스를 개발하려고 하는데요, 서비스에 인공지능을 접목시키는 것이 처음이라 전체적으로 프론트엔드(react), 백엔드(spring boot), AI를 어떻게 구성하고 연결을 해야할지 막막해서 질문 남깁니다 AI가 사용되는 핵심 기능은 사용자와 대화를 주고 받기 위해 실시간으로 질문 및 답변을 생성하는 것입니다. 고민 중인 방법은 아래와 같습니다. 1. gpt api 호출 코드를 python으로 작성 (프론트엔드(react) <-> gpt api 호출(python) <-> 백엔드(spring boot)) 2. gpt api 호출 코드를 spring boot 프로젝트 내에 작성 (프론트엔드(react) <-> 백엔드(spring boot)) 처음에는 답변 속도가 중요한 서비스인 만큼 1번이 더 나은 것 같다고 생각했으나, 이 속도 차이가 크지 않다면 차라리 API 호출 로직들을 한 프레임워크 내에서 관리할 수 있다는 것과 배포 등을 생각하여 2번 방법대로 하는 것이 더 나을 수도 있겠다는 생각이 들기도 하네요.. 전체적인 아키텍처 설계와 관련해서 조언 주시면 감사하겠습니다!
답변 4
인기 답변
안녕하세요! 저도 비슷한 과제를 진행한적이 있어 답변 드려보겠습니다. 어떤 웹 서비스를 개발하시려는건진 잘 몰라 몇가지 케이스를 나누고 설명을 드려보겠습니다. 1. 단순 Chat GPT 와 대화하는 형태 사용자가 직접 시크릿키와 프롬프트 구성을 입력하여 이를 활용하는 방향으로 구성한다면 복잡하게 python 혹은 spring 과 같은 백엔드 구성을 둘 필요 없이 node 와 react 를 활용한 SSR 방식으로 구현이 가능합니다. 중국에서 개발한 비슷한 오픈소스가 있는데요, 참고가 되실 수 있게 링크 드립니다. https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 2. 직접 백엔드를 구성해야하는 형태 DB 연동등과 같이 추가적인 데이터를 관리하기 위해 DB 를 구성하고 연동해야한다면 백엔드 서버를 구축해야할텐데요, 이런 형태로 하실 경우 다음과 같은 방법이 있을 것 같습니다. - 프론트엔드(react) <-> 백엔드(LangServe + LangChain) 이미 아시는지 모르겠습니다만 python 진영에서 LLM Application 개발에 특화된 솔루션이 LangChain 인데요, 이 LangChain App 을 FastAPI 기반 HTTP API 를 생성해주는 솔루션이 바로 LangServe 입니다. 이미 만들어놓은 LangChain App 이 있으시다면 간단한 코드 몇줄로 HTTP API 와 Playground, Swagger 문서 등을 만들 수 있습니다. 제가 과거 한번 포스팅을 한 내용이 있는데 이부분 참고해보시면 좋겠습니다.(https://careerly.co.kr/comments/96274?utm_campaign=self-share) - 프론트엔드(react) <-> 백엔드(Java Spring) Java 에서도 LangChain 과 비슷한 컨셉으로 개발된 솔루션이 있습니다. 바로 LangChain4j(https://github.com/langchain4j/langchain4j) 라는 솔루션인데요 이 프로젝트를 활용하면 Spring Boot 와 통합하여 LLM Application 을 만들 수 있습니다. 다만 LangChain 을 기반으로 만든 프로젝트이다보니 업데이트나 신규 기술 반영이 LangChain 보다 다소 늦는 경향이 있습니다. 링크드린 LangChain4j 에 Spring Boot 와 통합하는 example 도 간단하게 정리되어 있으니 이를 참고해보시면 좋겠습니다. Spring AI(https://spring.io/projects/spring-ai) 프로젝트도 새로 진행되고 있는 상황이긴 합니다만, 아직 정식 릴리즈가 된 상황은 아닌거로 알고 있어 지금 당장 무언가를 해야하는 상황이라면 다소 무리가 있을 수 있습니다. 제가 알고 있는 부분은 여기까지 인데요, 부디 저의 짧은 지식이 조금이나마 도움이 되시길 바라겠습니다.
익명
작성자
2024년 05월 28일
케이스까지 나눠서 상세히 답변해 주셔서 감사합니다!!🙂 말씀해 주신 내용 참고해서 팀원들과 다시 논의해 보겠습니다!
저도 궁금하네요. 저는 우선 사이드에서 진행했을때 프론트에서 먼저 gpt actions을 작성하여 요청을 보내고 받은 데이터를 사용자에게 먼저 보여주도록 했어요. 그것도 만약 받아야할 값들이 많다면 시간이 꽤 오래 걸렸습니다.. 그래서 백엔드에 보내기전 유저에게 보여주는게 맞다고 생각했어요. 그 이후 유저에게 보여주는 동시에 내부적으로 백엔드로 보내서 데이터는 저장시키도록 했었어요. 근데 처음에 파이썬으로 작성해야하는 이유가 있으실까요? 리액트로 프론트를 구현하시면 js로도 gpt api요청하면될것 같아서요! 도움이되실지 모르겠지만 이후에 진행되는 방법도 공유해주시면 좋을것 같아요!
삭제된 사용자
2024년 06월 01일
데이터베이스의 필요성이 충분히 검토되지 않은 문제이기도 해서, 저도 다른 분 말씀처럼 node와 react로 SSR 통해 구성하는 걸 먼저 권장드려요. 설계 단계에 그 부분이 명확치 않은 경우 제 경험 상 당초에 데이터베이스가 (당연히) 있어야 해! 라는 사고를 디폴트로 두어서 다른 대안을 탐색치 못한 경우가 많더군요. 그리고 api 응답 속도가 서비스를 평가하는 주요한 지표가 아니라면 그 부분은 ui단에서 api 응답을 아직 받지 못했을 시에(또는 일부로 기본값으로 5초 정도의 지연시간을 설정) ' ... ' 과 같이 답변을 생성 중이거나 생각 중이라는 (도넛 게이지가 될 수도 있고요) 안내를 사용자한테 주는 방식도 가능해요. 전체적인 퀄리티도 올라가고 이게 자연스러운 흐름이구나 라고 사용자한테 응답속도와 무관하게 제시할 수 있으니까요. 비슷한 프로젝트 경험 상 사용자의 만족이나 프로덕트 성능 개선에 오랜 시간을 쏟을 수 없을 때 가성비(?) 높은 방법이기는 합니다. 물론 이게 현명하거나 좋은 코드를 작성하는 방법은 아닐지 모르지만 일단 제 경험을 나눠봅니다😅
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!