LLM FullStacker/LangChain

[LangChain] LangChain is like Spring Framework for LLM

Peter Note 2024. 6. 30. 14:17

"LangChain 은 LLM기반  AI 애플리케이션 개발에 있어서의  Spring Framework이다."

LangChain vs Spring Framework, Created by ChatGPT

 

Java로 웹개발을 한다면 기본 Framework으로 개발자들이 Spring Framework을 사용하듯이 LLM 기반 AI 애플리케이션 개발은 LangChain 프레임워크로 시작하게 될 것이다. 따라서 LLM 기반 AI 애플리케이션을 개발하고 싶다면 기본 LangChain Framework을 사용하게되는 시즌이 시작되었다는 뜻이다. 

 

Python vs Javascript(Typescripit)

LangChain, LangGraph, LangSmith등 서비스를 사용하기 위하여 Python 또는 Javascript 중 하나를 선택해서 시작할 수 있다. 

  - LangGraph Cloud는 아직 Python만 지원한다.

  - LangSmith는 상업적 이용시 Commercial 이다.  

 

Javascript를 해보았으니, Python으로 시작해 본다. 

 

ChatGPT 설명

LangChain Package Structure

LangChain은 언어 모델을 사용한 애플리케이션 개발을 위한 프레임워크로, 다양한 패키지와 모듈로 구성되어 있습니다. 아래는 LangChain의 일반적인 패키지 구조입니다:

 

LangChain: 최상위 패키지

Chains: 체인 및 워크플로우 관리

LLMChain: 대형 언어 모델 체인 클래스

VectorDBQAChain: 벡터 데이터베이스 기반 QA 체인 클래스

SQLDBQAChain: SQL 데이터베이스 기반 QA 체인 클래스

Prompts: 프롬프트 관리 및 생성

PromptTemplate: 프롬프트 템플릿 클래스

FewShotPromptTemplate: 몇 샷 학습 프롬프트 템플릿 클래스

Agents: 에이전트 및 도구 통합

AgentExecutor: 에이전트 실행기 클래스

Tool: 도구 클래스

Memory: 메모리 관리

BufferMemory: 버퍼 메모리 클래스

VectorStoreRetrieverMemory: 벡터 저장소 리트리버 메모리 클래스

LLMs: 대형 언어 모델 통합

OpenAI: OpenAI 모델 통합 클래스

Cohere: Cohere 모델 통합 클래스

Utilities: 유틸리티 도구

Wikipedia: Wikipedia 통합 유틸리티

PythonREPL: Python REPL 유틸리티

 

이 구조는 LangChain의 주요 구성 요소와 각 구성 요소가 제공하는 기능을 잘 나타내고 있습니다. LangChain은 체인 관리, 프롬프트 생성, 에이전트 통합, 메모리 관리, 대형 언어 모델 통합, 그리고 다양한 유틸리티 도구를 통해 언어 모델 기반 애플리케이션 개발을 지원합니다.

 

LangGraph Package Structure

LangGraph는 언어 모델을 활용한 그래프 기반 애플리케이션을 구축하기 위한 프레임워크입니다. 아래는 LangGraph의 일반적인 패키지 구조입니다

 

LangGraph: 최상위 패키지

Graphs: 그래프 생성 및 관리

GraphBuilder: 그래프 빌더 클래스

Node: 그래프의 노드 클래스

Edge: 그래프의 엣지 클래스

Algorithms: 그래프 알고리즘

PathFinding: 경로 찾기 알고리즘 (예: Dijkstra, A*)

Centrality: 중심성 측정 알고리즘 (예: Betweenness, Closeness)

Clustering: 그래프 클러스터링 알고리즘

Visualization: 그래프 시각화 도구

GraphVisualizer: 그래프 시각화 클래스

PlotSettings: 시각화 설정 클래스

Data: 데이터 처리 및 로딩

DataLoader: 데이터 로딩 클래스

DataProcessor: 데이터 처리 클래스

Models: 언어 모델 통합

ModelInterface: 언어 모델 인터페이스

LLMIntegration: 대형 언어 모델 통합 클래스 (예: GPT-4, BERT)

Utilities: 유틸리티 도구

Logger: 로깅 유틸리티

ConfigManager: 설정 관리 유틸리티

 

이 패키지 구조는 LangGraph의 주요 구성 요소와 각 구성 요소가 제공하는 기능을 잘 나타내고 있습니다. LangGraph는 그래프 기반의 데이터 구조를 생성, 관리, 분석 및 시각화하는 데 필요한 다양한 도구를 제공하며, 언어 모델과의 통합을 통해 더욱 강력한 기능을 지원합니다.

---

LangChain과 Spring Framework는 각각의 도메인에서 비슷한 역할을 수행합니다, 단지 다른 맥락에서 사용된다는 차이가 있습니다:

 

LangChain:

 

도메인: 언어 모델 및 자연어 처리.

목적: 언어 모델(예: GPT-3, GPT-4 등)로 구동되는 애플리케이션을 구축하기 위한 프레임워크를 제공합니다. LangChain은 언어 모델의 통합, 배포 및 오케스트레이션을 간소화하는 것을 목표로 합니다.

특징:

체인 관리: 여러 언어 모델과 작업을 관리하고 오케스트레이션하는 데 도움을 줍니다.

모듈성: 언어 모델 애플리케이션을 구축, 미세 조정 및 배포하는 모듈식 접근 방식을 제공합니다.

확장성: 기능을 향상시키기 위해 다양한 API 및 외부 도구와 쉽게 통합할 수 있습니다.

유틸리티 도구: 프롬프트 엔지니어링, 대화 흐름 관리 등을 위한 유틸리티를 제공합니다.

 

Spring Framework:

 

도메인: 엔터프라이즈 자바 애플리케이션.

목적: 자바 기반의 엔터프라이즈 애플리케이션을 개발하기 위한 포괄적인 프레임워크입니다. Spring은 인프라 지원을 제공하여 애플리케이션 개발을 단순화합니다.

특징:

의존성 주입: 객체 생성과 의존성을 유연하고 느슨하게 관리합니다.

관점 지향 프로그래밍(AOP): 횡단 관심사(예: 로깅, 보안 등)를 분리할 수 있습니다.

데이터 접근: 데이터베이스 상호작용과 트랜잭션 관리를 위한 템플릿을 제공합니다.

웹 프레임워크: 웹 애플리케이션, RESTful 서비스 등을 구축하기 위한 모듈을 포함합니다.

보안: 애플리케이션을 보호하기 위한 강력한 보안 기능을 제공합니다.

 

유사점:

 

1. 프레임워크 목적: 각 도메인에서 애플리케이션 구축에 구조적인 접근 방식을 제공하여 보일러플레이트 코드를 줄이고 생산성을 높이는 것을 목표로 합니다.

2. 모듈성: 모듈성 및 확장성을 강조하여 개발자가 필요에 따라 다양한 구성 요소를 플러그인할 수 있습니다.

3. 통합: 다른 도구 및 기술과의 광범위한 통합을 지원하여 원활한 개발 워크플로우를 가능하게 합니다.

4. 커뮤니티와 생태계: 강력한 커뮤니티 지원과 풍부한 확장 및 플러그인 생태계를 가지고 있습니다.

 

차이점:

 

1. 도메인: LangChain은 언어 모델 애플리케이션에 특화되어 있고, Spring은 자바 엔터프라이즈 애플리케이션을 위한 일반 목적의 프레임워크입니다.

2. 언어 및 플랫폼: LangChain은 일반적으로 파이썬과 언어 모델 API를 사용하고, Spring은 자바 및 JVM 기반 애플리케이션과 함께 사용됩니다.

3. 범위: LangChain은 대형 언어 모델의 사용을 간소화하는 데 중점을 두고 있으며, Spring은 데이터 접근, 보안, 웹 개발 등 엔터프라이즈 애플리케이션 개발의 다양한 측면을 위한 도구를 제공합니다.

 

요약하면, LangChain과 Spring Framework는 다른 기술적 맥락에서 작동하지만, 각각의 도메인에서 애플리케이션 개발을 단순화하고 구조화하는 공통 목표를 공유합니다.

 

References

https://python.langchain.com/v0.2/docs/introduction/

 

Introduction | 🦜️🔗 LangChain

LangChain is a framework for developing applications powered by large language models (LLMs).

python.langchain.com

https://js.langchain.com/v0.2/docs/introduction/

 

Introduction | 🦜️🔗 Langchain

LangChain is a framework for developing applications powered by large language models (LLMs).

js.langchain.com