1. LangChain 개요
랭체인(LangChain)은 언어 모델을 기반으로 한 애플리케이션을 개발하기 위한 프레임워크이며 언어 모델을 API를 통해 호출하는 것 뿐만 아니라 외부 데이터를 인식하거나 타 시스템과의 상호작용하는 애플리케이션을 개발하고자 하는 요구 사항에서 시작된 오픈소스입니다.
우리가 요즘 엄청나게 사용하는 LLM모델중 하나인 예를 들어 ChatGPT는 수많은 대규모 언어모델의 하나이고 학습한 내용을 기반으로 동작합니다. 그 외에도 수도 없이 많은 LLM 모델들이 많이 개발되어 있지만 상용으로는 chatGPT가 독보적이라고 할수 있습니다.
하지만 더 나은 서비스를 원하는 사용자의 요구사항이 늘어나고 있습니다.
- 추가적인 전문 데이터를 더 학습시켜서 특화 시키려는 요구
- 최신 정보를 검색해서 자연스럽게 능력을 확장하는 요구
- 다른 서비스와의 연동
- 주어진 시나리오 대로 동작시키고 싶은 요구
LangChain의 등장
- 언어모델 학습시 사용된 데이터 외에 새로운 사용자 데이터를 인식할 수 있게 함
- 여러가지 LLM 언어모델을 선택적으로 사용할 수 있게 함
- 능동적으로 다른 기능과 연동하여 추가적인 결과를 낼 수 있게 함
- 여러 기능 모듈을 체인으로 연결하여 출력을 다른 툴의 입력으로 사용하는 방식으로 기능 확장이 자유로움
- 라이브러리 wrap이 잘되어 있어서 구현이 상대적으로 편함 (파이썬, 자바스크립트)
- 계속 엄청난 속도로 기능 추가 확장 중
2. LangChain 의 주요 모듈
LangChain은 각 모듈에 대해 확장 가능한 표준 인터페이스와 외부 기능 통합을 제공합니다.
간략하게 분류하면 다음과 같습니다.
2.1 Model I/O
언어 모델 인터페이스
모든 언어 모델 애플리케이션의 핵심 요소는 바로 모델입니다. LangChain은 모든 언어 모델과 인터페이스할 수 있는 빌딩 블록을 제공합니다.
- Prompt : 모델 입력을 템플릿화, 동적으로 선택 및 관리하기
- Language models : 언어 모델: 공통 인터페이스를 통해 언어 모델을 호출
- Output Parser : 모델 출력에서 정보 추출
2.2 Data Connection
애플리케이션별 데이터와의 인터페이스
많은 LLM 애플리케이션에는 모델 훈련 세트의 일부가 아닌 사용자별 데이터가 필요합니다. LangChain은 데이터를 로드, 변환, 저장 및 쿼리할 수 있는 빌딩 블록을 제공합니다:
- Document loaders: 다양한 소스에서 문서 불러오기
- Document transformers: 문서 분할, Q&A 형식으로 문서 변환, 중복 문서 삭제 등 다양한 작업 수행
- Text embedding models: 비정형 텍스트를 float 숫자 목록으로 변환
- Vector stores: embedding된 데이터 저장 및 검색
- Retrievers: 데이터 쿼리 처리
2.3 Chains
호출 시퀀스 구성
간단한 애플리케이션의 경우 LLM을 단독으로 사용할 수 있지만 더 복잡한 애플리케이션의 경우 서로 또는 다른 기능을 수행하는 컴포넌트와 함께 LLM을 연결해야 합니다.
LangChain은 이러한 컴포넌트를 "chain"으로 연결할 수 있는 인터페이스를 제공하고 컴포넌트에 대한 호출 시퀀스로 정의합니다.
2.4 Agents
체인이 사용할 도구를 선택하여 동작 하도록 지원
에이전트의 핵심 아이디어는 LLM을 사용하여 수행할 작업 순서를 선택하는 것입니다.
에이전트에서는 언어 모델이 추론 엔진으로 사용되어 어떤 작업을 어떤 순서로 수행할지 결정합니다.
에이전트는 tool이라는 것을 이용하여 목표를 달성하려고 노력합니다.
Tools는 필수적으로 다음과 같은 내용을 제공해야 합니다.
- agent가 올바른 tools을 사용할 수 있도록 액세스 권한
- agent가 tool의 기능과 사용법을 알수 있도록 설명
또한 여러가지의 tool을 묶어 특정 능을 구성해 놓은 것을 toolkit이라고 합니다.
2.5 memory
체인 실행 사이에 이전 상황을 기억하여 애플리케이션 상태 유지
대부분의 LLM 애플리케이션에는 대화형 인터페이스가 있습니다. 메모리는 이전 대화에 소개된 정보를 참조할 수 있도록 지원합니다.
대화형 시스템은 과거 메시지의 일부에 직접 액세스할 수 있어야 하고 더 복잡한 시스템이라면 지속적으로 이를 업데이트 하며 정보를 유지하는 등의 작업을 수행할 수 있어야 합니다.
2.6 Callbacks
모든 체인의 중간 단계 기록 및 스트리밍
LangChain은 LLM 애플리케이션의 다양한 단계에 연결할 수 있는 콜백 시스템을 제공합니다.
이는 로깅, 모니터링, 스트리밍 및 기타 작업에 유용하며 API 전체에서 사용할 수 있는 콜백 인수를 사용하여 이러한 이벤트를 받을 수 있습니다.
다음은 Langchine에대한 참고 사이트 입니다.
https://github.com/langchain-ai/langchain
'IT > 개발' 카테고리의 다른 글
(3) Langchain을 이용하여 system role을 주고 chat 모델을 구동해보자 (0) | 2023.08.07 |
---|---|
(2) Langchain을 이용하여 LLM을 간단히 구동 시켜보자 (0) | 2023.08.04 |
파이썬 pip 특정 패키지 버전, 정보 확인 및 업데이트 하기(pip show, pip upgrade) (0) | 2023.07.31 |
GitHub repository를 VSCode와 연동하여 작업 소스 관리하기 (0) | 2023.07.28 |
VSCode에서 파이썬 코드를 지정한 Conda 환경으로 실행하기(python interpreter 변경, conda env 변경) (0) | 2023.07.28 |