LangChain의 구조 (Architecture)
LangChain은 프레임워크로서, 다양한 패키지로 구성되어 있다.
1. langchain-core (핵심 패키지)
이 패키지는 다른 요소들의 기본적인 추상화와 그들을 함께 구성하는 방법을 포함하고 있다. LLM, 벡터 스토어, retrievers와 같은 핵심 요소들이 여기 정의되어 있다.
2. langchain (파트너 패키지)
이 패키지는 chains, agents, 그리고 어플리케이션의 인지 구조를 구성하는 retrieval strategies를 포함하고 있다. 이 패키지 안의 모든 체인, 에이전트, 검색 전략은 특정 integration에 국한된 것이 아니라 모든 일반적인 integration에 공통적으로 적용된다.
3. langchain-community (파트너 패키지)
이 패키지는 LangChain community에 의해 유지 및 보수되는 third party integrations를 포함하고 있다. 주요 partner 패키지는 분리되어 있다. 여기에는 다양한 구성요소(LLMs, vector stores, retrievers)에 대한 모든 integrations이 포함되어 있다.
4. langgraph (파트너 패키지)
5. langserve (파트너 패키지)
LangChain을 REST API로 배포하는 패키지.
- LangSmith
LLM 어플리케이션을 디버그, 테스트, 평가 및 모니터링할 수 있는 개발자 플랫폼.
LangChain Expression Language (LCEL)
LCEL은 LangChain 구성 요소를 체인으로 연결하는 declarative 방법이다. LCEL은 프로토타입을 코드 변경 없이 생산 환경에 배포할 수 있도록 설계되었다.
- 주요 특징
- 최적화된 스트리밍 지원 (First-class streaming support)
- LCEL을 사용하면 첫 번째 토큰이 출력되기까지의 시간을 최소화할 수 있다.
- LLM에서 스트리밍 출력 파서로 직접 토큰을 스트리밍하여 실시간으로 처리된 출력 조각을 얻을 수 있다.
- 비동기 지원 (Async support)
- LCEL로 구축된 체인은 동기 및 비동기 API 모두에서 호출할 수 있다.
- 이는 프로토타입과 생산 환경에서 동일한 코드를 사용하여 뛰어난 성능과 다수의 동시 요청을 처리할 수 있게 한다.
- 최적화된 병렬 실행 (Optimized parallel execution)
- LCEL 체인의 단계가 병렬로 실행될 수 있는 경우, 이를 자동으로 병렬 철하여 지연 시간을 최소화 한다.
- 재시도 및 폴백 (Retries and fallbacks)
- LCEL 체인의 어떤 부분이든 재시도 및 폴백을 구성할 수 있다.
- 이는 대규모 체인의 신뢰성을 높이는 데 유용하며, 스트리밍 지원이 추가되어 지연 시간 없이 신뢰성을 향상시킬 수 있다.
- 중간 결과 접근 (Access intermediate)
- 복잡한 체인에서 최종 출력이 생성되기 전에 중간 단계의 결과에 접근할 수 있다.
- 이는 사용자에게 진행 상황을 알리거나 체인을 디버깅하는데 유용하다.
- 중간 결과는 LangServer 에서 스트리밍할 수 있다.
- 입력 및 출력 스키마 (Input and output schemas)
- 모든 LCEL 체인은 체인의 구조로부터 Pydantic 및 JSONSchema 스키마를 추론한다.
- 이는 입력 및 출력의 유효성 검사를 위해 사용되며, LangServe의 중요한 부분이다.
- 매끄러운 LangSmith 추적 (Seamless LangSmith tracing)
- 체인이 점점 더 복잡해짐에 따라 각 단계에서 무슨 일이 일어나는지 이해하는 것이 중요하다.
- LCEL은 모든 단계를 자동으로 LangSmith에 기록하여 최대한의 가시성과 디버깅 기능을 제공한다.
- 최적화된 스트리밍 지원 (First-class streaming support)
LCEL은 LLMChain, ConversationRetrievalChain과 같은 기존 하위 클래스 체인에 비해 행동과 사용자 정의에 일관성을 제공하는 것을 목표로 한다. 이러한 레거시 체인의 대부분은 프롬프트와 같은 중요한 세부사항을 숨기고 있으며, 실행 가능한 다양한 모델이 등장함에 따라 사용자 정의가 점점 더 중요해지고 있다.
참조
Conceptual guide | 🦜️🔗 LangChain
Conceptual guide | 🦜️🔗 LangChain
This section contains introductions to key parts of LangChain.
python.langchain.com
'인공지능 > LangChain' 카테고리의 다른 글
[LangChain] 공식문서 Build a Chatbot 실습 (2) (2) | 2024.07.26 |
---|---|
[LangChain] 공식문서 Build a Chatbot 실습 (1) (0) | 2024.07.25 |
[LangChain] 공식문서 Conceptual Guide docs (2) Components (0) | 2024.07.21 |
[LangChain] 2. 초거대언어모델 (LLM) (0) | 2024.07.16 |
[LangChain] 1. LangChain에 대해서 (2) | 2024.07.16 |