아마도 LangChain은 탄생부터 평판이 양극화된 제품이 될 운명이었습니다.
LangChain에 대해 낙관적인 사람들은 LangChain의 풍부한 도구와 구성 요소 및 통합의 용이성을 높이 평가합니다. LangChain에 대해 낙관적이지 않은 사람들은 LangChain이 실패할 운명이라고 믿습니다. 기술이 너무 빠르게 변화하는 이 시대에는 단순히 불가능합니다. LangChain으로 모든 것을 구축하세요.
일부 과장:
"저는 컨설팅 업무에서 사람들에게 langchain이나 llamaindex를 사용하지 말라고 설득하는 데 에너지의 70%를 소비합니다. 이를 통해 문제의 90%가 해결됩니다.
최근 LangChain의 불만 사항이 다시 한 번 기사가 되었습니다. 뜨거운 토론의 초점:
저자 Fabian Both는 AI 테스트 툴 Octomind의 딥러닝 엔지니어입니다. Octomind 팀은 여러 LLM이 포함된 AI 에이전트를 사용하여 Playwright에서 엔드투엔드 테스트를 자동으로 생성하고 수정합니다.
랭체인 선정부터 시작해 랭체인과의 끈질긴 투쟁의 무대에 들어서기까지 1년 넘게 이어진 이야기다. 2024년, 그들은 마침내 LangChain과 작별하기로 결정했습니다.
그들이 어떤 일을 겪었는지 살펴보겠습니다:
"LangChain이 최선의 선택이었습니다"
우리는 2023년 초부터 LangChain을 생산에 사용하고 2024년에 제거하여 12개월 이상 사용했습니다.
2023년에는 LangChain이 최선의 선택이 될 것 같습니다. 인상적인 구성 요소와 도구 배열이 포함되어 있으며 인기가 급상승했습니다. LangChain은 "개발자가 오후에 아이디어를 실행 가능한 코드로 전환할 수 있도록 허용"하겠다고 약속했지만 요구 사항이 점점 더 복잡해지면서 문제가 표면화되기 시작했습니다.
LangChain은 생산성의 원천이 아닌 저항의 원천이 됩니다.
LangChain의 경직성이 드러나기 시작하면서 우리는 시스템의 기본 동작을 개선하기 위해 LangChain의 내부를 더 깊이 조사하기 시작했습니다. 그러나 LangChain은 의도적으로 많은 세부 사항을 추상화하기 때문에 필요한 기본 코드를 쉽게 작성할 수 없습니다.
우리 모두 알고 있듯이 AI와 LLM은 매주 새로운 개념과 아이디어가 등장하면서 분야가 빠르게 변화하고 있습니다. 그러나 여러 신흥 기술을 중심으로 만들어진 추상적인 개념인 LangChain의 프레임워크 디자인은 시간의 테스트를 견디기가 어렵습니다.
LangChain이 그렇게 추상적인 이유
처음에 LangChain은 우리의 단순한 요구 사항이 LangChain의 사용 가정과 일치할 때 도움을 줄 수도 있습니다. 그러나 높은 수준의 추상화로 인해 코드를 이해하기가 더 어려워지고 유지 관리가 어려워졌습니다. 팀이 기능을 구축하는 것만큼 LangChain을 이해하고 디버깅하는 데 많은 시간을 소비한다는 것은 좋은 징조가 아닙니다.
LangChain의 추상적인 접근 방식의 문제점은 "영어 단어를 이탈리아어로 번역하는 것"이라는 사소한 예를 통해 설명할 수 있습니다.
다음은 OpenAI 패키지만 사용하는 Python 예제입니다.
이것은 하나의 클래스와 하나의 함수 호출만 포함하는 간단하고 이해하기 쉬운 코드입니다. 나머지는 표준 Python 코드입니다.
LangChain 버전과 비교해 보세요:
코드는 거의 동일하지만 유사성은 여기서 끝납니다.
이제 3개의 클래스와 4개의 함수 호출이 있습니다. 그러나 걱정스러운 것은 LangChain이 세 가지 새로운 추상 개념을 도입한다는 것입니다.
프롬프트 템플릿: LLM에 대한 프롬프트 제공
출력 파서: LLM의 출력을 처리합니다.
Chain: "LCEL 구문" Python의 | 연산자를 다룹니다.
LangChain이 하는 일은 뚜렷한 이점 없이 코드의 복잡성을 증가시키는 것뿐입니다.
이런 종류의 코드는 초기 프로토타입에 적합할 수 있습니다. 그러나 실제 사용 환경에서 예상치 못한 충돌이 발생하지 않도록 실제 생산에 사용하려면 각 구성 요소를 합리적으로 이해해야 합니다. 주어진 데이터 구조를 준수하고 이러한 추상화를 중심으로 애플리케이션을 설계해야 합니다.
Python의 또 다른 추상 비교를 살펴보겠습니다. 이번에는 API에서 JSON을 가져옵니다.
내장 http 패키지 사용:
요청 패키지 사용:
차이는 분명합니다. 이것이 좋은 추상화의 느낌입니다.
물론 이는 사소한 예입니다. 하지만 제가 말하려는 것은 좋은 추상화는 코드를 단순화하고 코드를 이해하는 데 필요한 인지 부하를 줄여준다는 것입니다.
LangChain은 세부 사항을 숨기고 더 적은 코드로 더 많은 작업을 수행하여 귀하의 삶을 더 쉽게 만들려고 노력합니다. 그러나 이것이 단순성과 유연성을 희생한다면 추상화는 가치를 잃습니다.
LangChain은 다른 추상화 위에 추상화를 사용하는 데에도 사용되므로 API를 올바르게 사용하려면 중첩 추상화 측면에서 생각해야 하는 경우가 많습니다. 이는 필연적으로 새로운 기능을 구현하는 대신 거대한 스택 추적을 이해하고 작성하지 않은 내부 프레임워크 코드를 디버깅하는 것으로 이어집니다.
LangChain이 개발 팀에 미치는 영향
일반적으로 애플리케이션은 테스트 케이스 발견, Playwright 테스트 생성, 자동 수정과 같은 다양한 유형의 작업을 수행하기 위해 AI 에이전트를 많이 사용합니다.
단일 Sequential Agent 아키텍처에서 더 복잡한 아키텍처로 전환하려는 경우 LangChain은 제한 요소가 됩니다. 예를 들어 하위 에이전트를 생성하고 원본 에이전트와 상호 작용하도록 합니다. 또는 여러 전문 에이전트가 서로 상호 작용합니다.
또 다른 예에서는 비즈니스 로직과 LLM의 출력을 기반으로 에이전트가 액세스할 수 있는 도구의 가용성을 동적으로 변경해야 합니다. 하지만 LangChain은 Agent 상태를 외부에서 관찰할 수 있는 방법을 제공하지 않기 때문에 LangChain Agent의 제한된 기능에 적응하기 위해 구현 범위를 줄여야 했습니다.
이를 제거하면 더 이상 우리의 요구 사항을 LangChain에 적합한 솔루션으로 변환할 필요가 없습니다. 우리는 코드만 작성하면 됩니다.
그럼 LangChain을 사용하지 않는다면 어떤 프레임워크를 사용해야 할까요? 어쩌면 프레임워크가 전혀 필요하지 않을 수도 있습니다.
AI 애플리케이션 구축을 위한 프레임워크가 정말 필요한가요?
LangChain은 초기에 LLM 기능을 제공하여 우리가 애플리케이션 구축에 집중할 수 있도록 했습니다. 그러나 돌이켜보면 우리는 프레임워크가 없었다면 장기적으로 더 나았을 것입니다.
LangChain 구성 요소의 긴 목록은 LLM 기반 애플리케이션을 구축하는 것이 매우 복잡하다는 인상을 줍니다. 그러나 대부분의 애플리케이션에 필요한 핵심 구성 요소는 일반적으로 다음과 같습니다.
LLM 통신용 클라이언트
함수 호출용 기능/도구
RAG용 벡터 데이터베이스
추적, 평가, 그리고 더.
에이전트 공간은 빠르게 발전하여 흥미진진한 가능성과 흥미로운 사용 사례를 가져오지만, 조언은 에이전트의 사용 패턴이 확고해질 때까지 지금은 단순하게 유지하세요. 인공 지능 분야의 많은 개발 작업은 실험과 프로토타입 제작을 통해 이루어집니다.
위 내용은 지난 1년간 Fabian Both의 개인적인 경험이지만 LangChain에 장점이 전혀 없는 것은 아닙니다.
다른 개발자 Tim Valishev는 한동안 LangChain을 계속 사용할 것이라고 말했습니다.
저는 Langsmith를 정말 좋아합니다.
상자에서 시각적 로그아웃
프롬프트 놀이터, 프롬프트를 즉시 수정할 수 있습니다. 동일한 입력에서 어떻게 수행되는지 확인하세요.
한 번의 클릭으로 프롬프트에서 간단한 테스트 세트를 실행하는 옵션을 사용하여(또는 코드에서 수행) 로그에서 직접 테스트 데이터 세트를 쉽게 구축할 수 있습니다. 테스트 종료)
테스트 점수 기록
신속한 버전 관리
전체 체인의 스트리밍을 훌륭하게 지원하므로 이를 수동으로 구현하려면 시간이 좀 걸립니다.
게다가 API에만 의존하는 것만으로는 충분하지 않으며, 대형 모델 제조업체마다 API가 다르며 "원활한 전환"이 불가능합니다.
어떻게 생각하시나요?
원본 링크: https://www.octomind.dev/blog/why-we-no-longer-use-langchain-for-building-our-ai-agents
위 내용은 왜 LangChain을 포기하셨나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!