LLM을 React 앱에 연결하는 일은 이제 진입장벽이 거의 없다. fetch 하나, 커스텀 훅 하나면 챗 인터페이스가 화면에 뜬다. dev.to에 올라온 DeepSeek R1 통합 튜토리얼처럼, API 서비스 레이어 → 상태 관리 훅 → UI 컴포넌트라는 3레이어 구조는 이미 거의 표준화됐다. 문제는 '어떻게 붙이느냐'가 아니라, '붙이고 나서 그게 진짜 쓸모 있는가'다.
3레이어 구조는 출발점일 뿐
DeepSeek R1 통합 가이드가 제안하는 아키텍처는 실용적이다. generateText를 담당하는 서비스 레이어, useDeepSeek 커스텀 훅으로 메시지 상태와 로딩·에러를 캡슐화하는 레이어, 그리고 ChatInterface 컴포넌트로 분리된 UI 레이어. TypeScript 타입, useCallback으로 감싼 메모이제이션, useEffect로 구현한 자동 스크롤까지—코드 품질 자체는 합격점이다.
스트리밍 응답, localStorage 퍼시스턴스, 재시도 로직(지수 백오프 포함), React.memo를 활용한 메시지 컴포넌트 최적화까지 갖추면 '작동하는 프로토타입'은 완성된다. 그런데 바로 이 시점이 가장 위험한 순간이다. 작동한다는 사실이 가치 있다는 착각을 만들기 때문이다.
AI 도구 90%가 탈락하는 이유
매달 50개 이상의 AI 도구를 리뷰하는 samchenreviews의 평가 프레임워크는 냉혹하다. 그가 제시하는 첫 번째 필터는 단 세 가지 질문이다. "AI 이전에도 존재했던 문제를 해결하는가?