LLM (Large Language Model) 을 활용한 애플리케이션 개발에 많이 활용되는 프레임워크로 LangChain과 Semantic Kernel 이 있습니다. 

 

이번 포스팅에서는 

 

1. LangChain의 주요 컴포넌트 및 특징

2. Semantic Kernel의 주요 컴포넌트 및 특징

3. LangChain과 Semantic Kernel 의 관계

 

에 대해서 소개하겠습니다. 

 

 


1. LangChain의 주요 컴포넌트 및 특징

 

LangChain은 언어 모델을 기반으로 한 애플리케이션을 개발하기 위한 프레임워크입니다. 특히 복잡한 추론, 다단계 작업 처리, 그리고 외부 데이터 소스와의 통합에 중점을 둡니다. 이 프레임워크를 통해 다음과 같은 애플리케이션을 구현할 수 있습니다.  

문맥 인식 (Are context-aware): 언어 모델을 문맥의 출처(프롬프트 지시사항, 소수 샷 예시, 반응을 근거로 하는 내용 등)에 연결합니다. 

 

추론 (Reason): 언어 모델이 제공된 문맥을 바탕으로 어떻게 답변할지, 어떤 행동을 취할지 등에 대해 추론하도록 합니다. 

 


이 프레임워크는 여러 부분으로 구성되어 있습니다. 


(1) LangChain 라이브러리 (LangChain Libraries): Python과 JavaScript 라이브러리입니다. 다양한 컴포넌트의 인터페이스와 통합, 이러한 컴포넌트를 체인과 에이전트로 결합하는 기본 런타임, 그리고 체인과 에이전트의 즉각적인 구현을 포함합니다.  


LangChain은 다음 모듈에 대한 표준적이고 확장 가능한 인터페이스 및 통합을 제공합니다.  

 
  - 모델 I/O (Models I/O): 언어 모델과의 인터페이스

  - 검색 (Retrieval): 애플리케이션별 데이터와의 인터페이스

  - 에이전트 (Agents): 고수준 지시에 따라 모델이 사용할 도구를 선택하도록 함

 


(2) LangChain 템플릿 (LangChain Templates): 다양한 작업에 쉽게 배포할 수 있는 참조 아키텍처 모음입니다.  


(3) LangServe: LangChain 체인을 REST API로 배포하기 위한 라이브러리입니다.  


(4) LangSmith: 어떤 LLM 프레임워크에서 구축된 체인을 디버깅, 테스트, 평가 및 모니터링할 수 있게 해주는 개발자 플랫폼으로, LangChain과 원활하게 통합됩니다.  

 

[ LangChain Stack ]

LangChain Stack


* 출처: https://python.langchain.com/docs/get_started/introduction



이러한 제품들은 애플리케이션 수명 주기 전체를 간소화합니다. 


개발 (Develop): LangChain/LangChain.js에서 애플리케이션을 작성할 수 있습니다. 템플릿(Templates)을 참조하여 신속하게 시작할 수 있습니다.  


제품화 (Productionize): LangSmith를 사용하여 체인을 검사, 테스트 및 모니터링하면 지속적으로 개선하고 자신있게 배포할 수 있습니다.  


배포 (Deploy): LangServe를 사용하여 어떤 체인도 API로 전환합니다.  

 

 

LangChain을 활용한 애플리케이션 수명주기 간소화

 




LangChain의 주요 구성요소는 다음과 같습니다.  

 

(1) 언어 모델 (Language Models): LangChain의 핵심으로, 텍스트 생성에 필요한 기능을 제공합니다. GPT-3와 같은 다양한 언어 모델과 호환됩니다. 모델 I/O 모듈은 LLM과의 상호 작용을 다룹니다.  


(2) 체이닝 (Chaining): 여러 언어 모델 출력을 연결하여 일관되고 확장된 응답이나 해결책을 형성하는 과정입니다. 이를 통해 모델은 단일 단계에서 할 수 있는 것보다 더 복잡한 작업을 수행할 수 있습니다. 


(3) 도구 (Tools): LangChain은 웹 브라우저, 데이터베이스, 기타 API와 같은 다양한 도구를 통합하여 언어 모델이 정보를 수집하거나 작업을 수행할 수 있게 합니다. 


(4) 메모리 (Memory): 대화나 작업의 이전 부분에서 얻은 정보를 기억할 수 있는 메모리 시스템을 포함합니다. 이 메모리는 단기(단일 대화 동안) 또는 장기(대화 간 지속)로 사용될 수 있습니다. 


(5) 제어 시스템 (Control Systems): 모델이 다양한 컴포넌트를 어떻게 사용할지 결정하는 방식을 관리합니다. 예를 들어, 제어 시스템은 정보를 찾기 위해 언제 브라우저 도구를 사용할지 또는 모델의 내부 지식에 의존할지 결정할 수 있습니다. 


(6) 사용자 인터페이스 (User Interfaces): LangChain은 다양한 사용자 인터페이스와 통합될 수 있어, 챗봇, 가상 보조원 또는 더 전문화된 도구와 같은 다양한 애플리케이션에서 사용될 수 있습니다. 


(7) 애플리케이션 로직 (Application Logic): LangChain 모델이 특정 애플리케이션에서 어떻게 동작할지 정의하는 특정 로직과 규칙을 포함합니다. 이것이 LangChain을 다양한 사용 사례에 맞게 사용자 정의하는 부분입니다. 


(8) 콜백 (Callback): LangChain은 개발자에게 LLM 애플리케이션의 다양한 단계에 연결할 수 있는 콜백 시스템을 제공합니다. 이는 로깅, 모니터링, 스트리밍 및 기타 작업에 유용합니다. 파이프라인 내에서 특정 상황이 발생할 때 호출되는 사용자 지정 콜백 핸들러를 작성할 수 있게 해줍니다.  


LangChain의 모듈식 아키텍처는 개발자들이 언어 모델을 혁신적인 방식으로 활용하는 다양한 애플리케이션을 구축할 수 있는 유연성과 맞춤 설정 기능을 제공합니다. 

 


2. Semantic Kernel의 주요 컴포넌트 및 특징


Semantic Kernel은 언어 모델의 의미론적 이해와 텍스트 처리 기능을 향상시키기 위해 설계된 프레임워크입니다. 이는 언어 모델이 보다 정교하고 깊이 있는 의미론적 분석을 수행할 수 있도록 하는 데 중점을 두고 있습니다.  


Semantic Kernel 의 플러그인(Plugins)과 커넥터(connectors) 를 활용하면 AI 개발을 확장할 수 있습니다.  

Semantic Kernel은 플러그인(Plugins)을 통해 기존 코드를 AI 에이전트에 쉽게 추가할 수 있도록 설계되었습니다. 플러그인을 사용하면, 기존 앱과 서비스를 호출하여 에이전트가 실제 세계와 상호작용할 수 있는 능력을 부여할 수 있습니다. 이런 방식으로, 플러그인은 AI 앱의 "팔과 손"과 같습니다. 

또한, Semantic Kernel의 인터페이스는 어떤 AI 서비스와도 유연하게 통합할 수 있게 해줍니다. 이는 기억과 AI 모델을 쉽게 추가할 수 있는 일련의 커넥터(Connectors)들을 통해 이루어집니다. 이런 방식으로 Semantic Kernel은 앱에 시뮬레이션된 "뇌"를 추가할 수 있으며, 새롭고 더 나은 AI 모델이 나올 때마다 쉽게 교체할 수 있습니다. 

Semantic Kernel이 커넥터와 플러그인으로 제공하는 확장성 덕분에, 특정 AI 모델 제공업체에 구속되지 않고 거의 모든 기존 코드를 조율할 수 있습니다. 예를 들어, OpenAI의 ChatGPT용으로 다수의 플러그인을 구축했다면, Semantic Kernel을 사용하여 Azure나 Hugging Face와 같은 다른 제공업체의 모델과 함께 조율할 수 있습니다. 

Semantic Kernel은 어떤 제공업체의 AI 플러그인도 조율할 수 있습니다. 

개발자로서, Semantic Kernel의 다양한 구성요소를 별도로 사용할 수 있습니다. 예를 들어, OpenAI와 Azure OpenAI 서비스에 대한 추상화만 필요한 경우, 수제 프롬프트를 실행하기 위해 SDK만 사용할 수 있지만, Semantic Kernel의 진정한 힘은 이러한 구성요소를 함께 결합할 때 나타납니다. 


Semantic Kernel makes AI development extensible: Connectors, Plugins




Semantic Kernel의 주요 컴포넌트 및 특징은 다음과 같습니다. 

(1) 의미론적 분석 (Semantic Analysis): 이 컴포넌트는 텍스트의 의미를 보다 정확하게 파악하고 분석하는 데 도움을 줍니다. 이는 언어 모델이 텍스트의 뉘앙스와 복잡한 의미 구조를 더 잘 이해하고 반영할 수 있도록 합니다. 

(2) 문맥 관리 (Context Management): SemanticKernel은 긴 대화나 문서에서 문맥을 더 효과적으로 관리하는 기능을 제공합니다. 이를 통해 모델은 대화의 전체 흐름을 더 잘 이해하고, 이전에 나온 정보를 적절히 활용할 수 있습니다. 

(3) 향상된 언어 생성 (Enhanced Language Generation): 의미론적 분석을 통해 얻은 통찰력을 바탕으로, SemanticKernel은 언어 모델이 보다 정교하고 자연스러운 텍스트를 생성할 수 있도록 지원합니다. 이는 모델이 더 복잡하고 세부적인 표현을 생성하는 데 유용합니다. 

(4) 긴 문서 처리 (Long Document Handling): 긴 텍스트나 문서를 처리할 때, SemanticKernel은 중요한 정보를 추출하고 의미론적으로 관련된 내용을 더 잘 연결하는 데 도움을 줍니다. 

SemanticKernel의 핵심 목표는 언어 모델의 기본적인 언어 이해 능력을 향상시켜, 더 깊이 있는 의미론적 이해와 정교한 언어 생성을 가능하게 하는 것입니다. 이 프레임워크는 특히 의미론적으로 복잡한 작업, 긴 문서 분석, 또는 자연스러운 언어 생성이 필요한 응용 프로그램에서 유용하게 사용될 수 있습니다. 

 

 

 

3. LangChain과 Semantic Kernel 의 목적, 구성요소 및 관계


LangChain과 Semantic Kernel은 언어 모델의 기능을 향상시키기 위해 설계된 프레임워크지만, 각각 다른 목적을 가지고 있으며 다른 방식으로 작동합니다.

 

(1) LangChain


목적: LangChain은 언어 모델 응용 프로그램을 구축하기 위한 프레임워크로, 특히 멀티스텝 추론과 외부 도구와의 통합에 중점을 둡니다. 이는 언어 모델이 다양한 데이터 소스, 도구와 상호작용하거나 확장된 추론 작업을 수행하는 복잡한 응용 프로그램을 만드는 데 사용됩니다.


구성요소: 이 프레임워크는 언어 모델 출력의 연결, 브라우저나 데이터베이스와 같은 도구와의 통합, 메모리 처리 및 특정 응용 프로그램 로직을 포함합니다.


초점: LangChain의 주요 초점은 언어 모델이 복잡한 멀티스텝 작업을 수행하고 외부 데이터 소스와 상호작용할 수 있도록 함으로써 응용 프로그램 구축 프로세스를 향상시키는 데 있습니다.

 

 

(2) Semantic Kernel


목적: SemanticKernel은 언어 모델이 텍스트를 이해하고 생성하는 능력을 향상시키기 위해 설계된 프레임워크입니다. 이는 언어 모델의 의미론적 이해와 추론 능력을 향상시키는 데 중점을 둡니다.


구성요소: SemanticKernel은 더 나은 문맥 관리, 의미론적 이해 및 긴 대화나 문서 처리에 대한 효과적인 관리와 같은 기술 및 도구를 포함합니다.


초점: SemanticKernel의 주요 목표는 모델이 깊은 의미론적 이해와 뉘앙스 있는 언어 생성을 요구하는 작업에서 더 효과적이도록 언어 모델의 기본 언어 이해 및 처리 능력을 향상시키는 것입니다.

 


(3) LongChain과 Semantic Kernel의 보완적 관계


보완적 성격: LangChain과 Semantic Kernel은 서로 보완적입니다. LangChain은 외부 도구와 멀티스텝 추론을 활용하여 복잡한 작업을 수행할 수 있는 응용 프로그램을 구축하는 데 관한 것이며, 반면 Semantic Kernel은 언어 모델의 의미론적 처리 능력을 향상시키는 데 중점을 둡니다.


통합 가능성: 실제 응용 프로그램에서 Semantic Kernel을 사용하여 LangChain 프레임워크 내의 모델의 언어 이해 및 생성 능력을 향상시킬 수 있습니다. 이 통합은 LangChain의 고급 응용 프로그램 구축 기능과 Semantic Kernel의 향상된 의미론적 처리 능력을 결합합니다.

 


이 두 프레임워크는 언어 모델 기능을 향상시키는 다른 레이어를 나타냅니다. LangChain은 응용 프로그램 및 워크플로우 영역에서, Semantic Kernel은 핵심 언어 처리 및 이해 영역에서 작동합니다. 

 

이번 포스팅이 많은 도움이 되었기를 바랍니다. 

행복한 데이터 과학자 되세요! 

 

728x90
반응형
Posted by Rfriend
,