GN⁺: LangChain의 문제점
(minimaxir.com)- LangChain: AI 텍스트 생성을 위해 OpenAI의 GPT API와 인터페이스하는 Python 및 JavaScript 라이브러리
- ReAct 논문의 구현체로, LLM의 출력 텍스트 품질을 향상시킨다고 알려짐
- ReAct 워크플로우는 InstructGPT/text-davinci-003 에서 특히 효과적이었지만 비용이 많이 들고 소규모 프로젝트에는 사용하기 쉽지 않음
- LangChain은 인기를 얻으면서 별도 수익이나 수익 창출 계획이 없음에도 꽤 많은 자금을 조달
- 실제로 BuzzFeed에서 챗봇을 만드는데 사용하려고 했음
- RAG(Retrieval-Augemented Generation)에 LangChain이 인기있는 도구 였기 때문에
- 하지만, 한참 연구해봐도 잘 안됨. 버그도 많고 품질도 좋지 않음
- 다시 저수준으로 들어가서 직접 개발해보니 LangChain보다 훨씬 좋은 결과가 나옴
- 해커뉴스에서 "100줄의 코드로 LangChain 만들기" 글과 댓글에서 LangChain 비난을 보고 나만 그런게 아니라는 것을 알게됨
- LangChain의 문제는 AI 생태계에 불필요한 복잡성과 편파성을 추가한다는 것
- ChatGPT와 인터페이스 하는 방법을 배우고 싶은 초보자는 절대 LangChain으로 시작하지 말 것
- 예제와 코드는 OpenAI의 공식 Python 라이브러리를 사용하는 것보다 더 복잡함
- LangChain의 프롬프트 엔지니어링은 사실상 추가 단계를 넣어버린 f-strings에 불과함
- Agent 워크플로우와 대화 기억 기능은 문서화가 잘 되어있지 않아 사용하기 헷갈릴 수 있음
- 시스템 프롬프트 기능은 Agent 워크플로우와 제대로 통합되지 않음
- 문서와 예제는 장점보다 문제가 더 많아 실제 사용시 어려움
- LangChain 에이전트는 프롬프트 엔지니어링과 JSON 출력을 통해 독특한 도구 선택 방법을 사용함
- 정상 출력 구조의 변경으로 인해 에이전트가 작동하지 않고 구문 분석 오류 처리가 필요할 수 있음
- 챗봇은 레시피를 올바르게 추출하고 형식화할 수 있지만, 출력이 지루함
- 사용자 정의 에이전트 및 체인 기능을 갖추고 있지만, 이는 프로세스를 복잡하게 만듦
- 텍스트 분리기 및 통합 벡터 저장소와 같은 유틸리티 기능을 갖춘 LangChain은 LangChain 기반 코드만 사용할 수 있도록 제한을 둠
- LangChain은 대부분의 인기 있는 사용 사례에서 오버헤드와 복잡성을 증가시킴
- “it’s complicated, so it must be better!” 철학을 구현한 것 같음
- 저자는 LangChain 대안으로 훨씬 더 간단한 simpleaichat라는 Python 패키지를 개발했음
- simpleaichat 을 광고하는게 아니라, 초보자들이 LangChain으로 갈까봐 걱정됨
저도 langchain 분석을 해본 결과 over engineering되었다는 느낌을 많이 받았습니다.
http://swcho.github.io/blogs/2023-07-15-langchainjs-part-3
langchain은 llm echosystem을 어떻게 구성할 것인가?
에 대한 화두를 던진 첫번째 오픈소스로 그 의미를 찾아야 할 것 같습니다.
langchain의 사용성은 떨어지더라도 langchain이 풀고자했던 문제는 여전히 남아 있으니까요.
요 기사와 이어지는 글이라고 생각됩니다.
이 블로그 저자인 Max Woolf가 위 기사의 댓글에서 LangChain이 정말 쓸모 없다고 비판하더니 대체제인 simpleaichat 을 개발해서 공개했고요.
이번엔 문제점을 정리한 글까지 발행했네요.
Hacker News 의견
- LangChain 쓰레기 소프트웨어로 평가되며 전부 다시 작성할 계획입니다.
- LLM CLI 도구에 Python 라이브러리 API가 추가되어 가벼운 모델 호출이 가능해졌습니다.
- LangChain은 중간 역할로서 불필요하고 코딩 경험을 개선하지 못하는 점에 대해 비판받고 있습니다.
- 문제가 있음에도 불구하고 많은 사용자들이 LangChain을 재미있고 LLM으로 빌드하는 데 유용하게 사용하고 있습니다.
- LangChain은 흥미로운 도구와 예제 선택기를 제공하지만 코드 품질이 부족합니다.
- 이 기사는 비판적이며 원 저자의 작업을 헐뜯는 것으로 비난받고 있습니다.
- 아이디어를 얻고 프로토타이핑하는 데 LangChain이 유용하지만, 모든 것을 직접 구현하는 것이 종종 더 쉽습니다.
- LangChain을 사용하여 프로토타이핑하면 중요한 자원을 투자하기 전에 아이디어를 검증하는 데 도움이 됩니다.
- 유사한 기능을 구현하기 위해 lambda over let over lambda을 사용하는 대안적인 접근 방식이 제안됩니다.