제퍼넷 로고

LangChain을 사용하여 대규모 언어 모델이 소프트웨어와 잘 작동하도록 만드는 방법 – KDnuggets

시간

LangChain을 사용하여 대규모 언어 모델이 소프트웨어와 잘 작동하도록 만드는 방법
편집자별 이미지
 

OpenAI의 GPT-3, Google의 BERT, Meta의 LLaMA와 같은 대형 언어 모델(LLM)은 마케팅 카피와 데이터 과학 스크립트에서 시에 이르기까지 광범위한 텍스트를 생성하는 기능을 통해 다양한 분야에 혁명을 일으키고 있습니다.

ChatGPT의 직관적인 인터페이스가 오늘날 대부분의 사람들의 장치에 탑재되어 있지만, 다양한 소프트웨어 통합에서 LLM을 사용할 수 있는 잠재력이 아직 무궁무진합니다.

주요 문제는 무엇입니까?

대부분의 응용 프로그램에는 LLM과의 보다 유연하고 기본적인 커뮤니케이션이 필요합니다.

그리고 이것이 바로 LangChain이 시작되는 곳입니다!

Generative AI 및 LLM에 관심이 있다면 이 튜토리얼이 맞춤 제작되었습니다.

그럼... 시작해 볼까요!

만약 당신이 동굴에 살고 있는데 최근에 어떤 소식도 듣지 못했다면, LLM(Large Language Models)에 대해 간략하게 설명하겠습니다. 

LLM은 인간과 같은 텍스트 이해 및 생성을 모방하도록 구축된 정교한 인공 지능 시스템입니다. 이러한 모델은 막대한 데이터 세트를 학습하여 복잡한 패턴을 식별하고 언어적 미묘함을 파악하며 일관된 출력을 생성합니다. 

이러한 AI 기반 모델과 상호 작용하는 방법이 궁금하다면 이를 수행하는 두 가지 주요 방법이 있습니다. 

  1. 가장 일반적이고 직접적인 방법은 모델과 대화하거나 채팅하는 것입니다. 여기에는 프롬프트를 작성하여 이를 AI 기반 모델로 보내고 응답으로 텍스트 기반 출력을 받는 작업이 포함됩니다. 
  2. 또 다른 방법은 텍스트를 숫자 배열로 변환하는 것입니다. 이 프로세스에는 AI에 대한 프롬프트를 구성하고 그 대가로 숫자 배열을 받는 작업이 포함됩니다. 일반적으로 "임베딩"이라고 알려진 것입니다. 최근 벡터 데이터베이스와 의미 검색이 급증했습니다. 

그리고 LangChain이 해결하려고 하는 것은 바로 이 두 가지 주요 문제입니다. LLM과 상호 작용할 때 발생하는 주요 문제에 관심이 있다면 이 기사를 확인하세요. 여기에서 지금 확인해 보세요.

LangChain은 LLM을 기반으로 구축된 오픈 소스 프레임워크입니다. LLM 기반 애플리케이션의 아키텍처를 간소화하는 다양한 도구, 구성 요소 및 인터페이스를 제공합니다.

LangChain을 사용하면 언어 모델을 활용하고, 다양한 구성 요소를 상호 연결하고, API 및 데이터베이스와 같은 자산을 통합하는 것이 매우 쉬워집니다. 이 직관적인 프레임워크는 LLM 응용 프로그램 개발 과정을 크게 단순화합니다. 

Long Chain의 핵심 아이디어는 체인이라고도 알려진 다양한 구성 요소나 모듈을 함께 연결하여 보다 정교한 LLM 기반 솔루션을 만들 수 있다는 것입니다. 

LangChain의 뛰어난 기능은 다음과 같습니다.

  1. 상호 작용을 표준화하기 위한 사용자 정의 가능한 프롬프트 템플릿입니다. 
  2. 정교한 사용 사례에 맞게 맞춤화된 체인 링크 구성 요소입니다.
  3. OpenAI의 GPT 및 HuggingFace Hub의 GPT를 포함한 주요 언어 모델과의 원활한 통합.
  4. 특정 문제나 작업을 평가하기 위한 혼합 및 일치 접근 방식을 위한 모듈형 구성 요소입니다.  

 

LangChain을 사용하여 대규모 언어 모델이 소프트웨어와 잘 작동하도록 만드는 방법
작성자 별 이미지
 

LangChain은 적응성과 모듈식 설계에 초점을 맞춘다는 점에서 차별화됩니다. 

LangChain의 주요 아이디어는 자연어 처리 시퀀스를 개별 부분으로 나누어 개발자가 요구 사항에 따라 워크플로를 맞춤화할 수 있도록 하는 것입니다. 

이러한 다양성으로 인해 LangChain은 다양한 상황과 산업 분야에서 AI 솔루션을 구축하기 위한 최고의 선택이 되었습니다. 

가장 중요한 구성 요소 중 일부는 다음과 같습니다.

 

LangChain을 사용하여 대규모 언어 모델이 소프트웨어와 잘 작동하도록 만드는 방법
작성자 별 이미지

1. LLM

LLM은 방대한 양의 교육 데이터를 활용하여 인간과 유사한 텍스트를 이해하고 생성하는 기본 구성 요소입니다. 이는 LangChain 내의 많은 작업의 핵심이며 텍스트 입력을 분석, 해석 및 응답하는 데 필요한 언어 처리 기능을 제공합니다.

용법: 챗봇 강화, 다양한 애플리케이션을 위한 인간과 유사한 텍스트 생성, 정보 검색 지원 및 기타 언어 처리 수행

2. 프롬프트 템플릿

프롬프트는 LLM과 상호 작용하기 위한 기본이며 특정 작업을 수행할 때 구조는 유사한 경향이 있습니다. 체인 전반에 걸쳐 사용할 수 있는 미리 설정된 프롬프트인 프롬프트 템플릿을 사용하면 특정 값을 추가하여 "프롬프트"를 표준화할 수 있습니다. 이를 통해 모든 LLM의 적응성과 사용자 정의가 향상됩니다.

용법: LLM과의 상호 작용 프로세스를 표준화합니다.

3. 출력 파서

출력 파서는 체인의 이전 단계에서 원시 출력을 가져와 구조화된 형식으로 변환하는 구성 요소입니다. 이렇게 구조화된 데이터는 후속 단계에서 보다 효과적으로 사용되거나 최종 사용자에게 응답으로 전달될 수 있습니다.

용법: 예를 들어, 챗봇에서 출력 파서는 언어 모델에서 원시 텍스트 응답을 가져와 핵심 정보를 추출하고 이를 구조화된 응답으로 형식화할 수 있습니다.

4. 구성 요소 및 체인

LangChain에서 각 구성 요소는 언어 처리 순서에서 특정 작업을 담당하는 모듈 역할을 합니다. 이러한 구성요소를 연결하여 형태를 만들 수 있습니다. 쇠사슬 맞춤형 워크플로를 위한 것입니다.

용법: 특정 챗봇에서 감정 감지 및 응답 생성기 체인을 생성합니다. 

5. 기억

LangChain의 메모리는 워크플로 내의 정보에 대한 저장 및 검색 메커니즘을 제공하는 구성 요소를 나타냅니다. 이 구성 요소는 LLM과 상호 작용하는 동안 다른 구성 요소에서 액세스하고 조작할 수 있는 데이터의 임시 또는 영구 저장을 허용합니다. 

용법: 이는 상황 인식 응답을 제공하기 위해 챗봇에 대화 기록을 저장하는 등 다양한 처리 단계에서 데이터를 유지해야 하는 시나리오에 유용합니다.

6. 대리인

에이전트는 처리하는 데이터를 기반으로 조치를 취할 수 있는 자율 구성 요소입니다. LangChain 워크플로 내에서 특정 작업을 수행하기 위해 다른 구성 요소, 외부 시스템 또는 사용자와 상호 작용할 수 있습니다.

용법: 예를 들어 에이전트는 사용자 상호 작용을 처리하고, 들어오는 요청을 처리하고, 체인을 통한 데이터 흐름을 조정하여 적절한 응답을 생성할 수 있습니다.

7. 인덱스와 검색기

인덱스와 검색기는 데이터를 효율적으로 관리하고 액세스하는 데 중요한 역할을 합니다. 인덱스는 모델 훈련 데이터의 정보와 메타데이터를 보유하는 데이터 구조입니다. 반면, 검색기는 이러한 인덱스와 상호 작용하여 지정된 기준에 따라 관련 데이터를 가져오고 관련 컨텍스트를 제공하여 모델이 더 잘 응답할 수 있도록 하는 메커니즘입니다. 

용법: 이는 정보 검색이나 질문 답변과 같은 작업에 필수적인 대규모 데이터 세트에서 관련 데이터나 문서를 빠르게 가져오는 데 중요한 역할을 합니다.

8. 문서 변환기

LangChain에서 문서 변환기는 문서를 추가 분석 또는 처리에 적합하게 만드는 방식으로 처리하고 변환하도록 설계된 특수 구성 요소입니다. 이러한 변환에는 텍스트 정규화, 특징 추출 또는 텍스트를 다른 형식으로 변환하는 등의 작업이 포함될 수 있습니다.

용법: 머신러닝 모델에 의한 분석이나 효율적인 검색을 위한 인덱싱 등 후속 처리 단계를 위해 텍스트 데이터를 준비합니다.

9. 모델 삽입

이는 텍스트 데이터를 고차원 공간의 수치 벡터로 변환하는 데 사용됩니다. 이러한 모델은 단어와 구문 사이의 의미론적 관계를 포착하여 기계가 읽을 수 있는 표현을 가능하게 합니다. 이는 LangChain 생태계 내에서 다양한 다운스트림 자연어 처리(NLP) 작업의 기반을 형성합니다.

용법: 텍스트의 수치 표현을 제공하여 의미 체계 검색, 유사성 비교 및 ​​기타 기계 학습 작업을 촉진합니다.

10. 벡터 스토어

임베딩을 통해 정보를 저장하고 검색하는 데 특화된 데이터베이스 시스템 유형으로, 기본적으로 텍스트와 같은 데이터의 수치 표현을 분석합니다. VectorStore는 이러한 임베딩을 위한 저장 시설 역할을 합니다.

용법: 의미적 유사성을 기반으로 효율적인 검색이 가능합니다.

PIP를 사용하여 설치

우리가 가장 먼저 해야 할 일은 우리 환경에 LangChain이 설치되어 있는지 확인하는 것입니다. 

pip install langchain

 

환경 설정

LangChain을 활용한다는 것은 일반적으로 다양한 모델 제공자, 데이터 저장소, API 등의 구성 요소를 통합하는 것을 의미합니다. 그리고 이미 알고 계시듯이, 모든 통합과 마찬가지로 관련성이 있고 올바른 API 키를 제공하는 것은 LangChain의 운영에 매우 중요합니다. 

OpenAI API를 사용하고 싶다고 상상해 보세요. 다음 두 가지 방법으로 이를 쉽게 수행할 수 있습니다.

  1. 키를 환경 변수로 설정
OPENAI_API_KEY="..."

 

or 

import os

os.environ['OPENAI_API_KEY'] = “...”

 

환경 변수를 설정하지 않기로 선택한 경우 OpenAI LLM 클래스를 시작할 때 openai_api_key라는 매개변수를 통해 직접 키를 제공할 수 있는 옵션이 있습니다.

  1. 해당 클래스에서 직접 키를 설정합니다.
from langchain.llms import OpenAI

llm = OpenAI(openai_api_key="...")

LLM 간 전환이 간단해집니다.

LangChain은 OpenAI 및 Hugging Face와 같은 다양한 언어 모델 제공자와 상호 작용할 수 있는 LLM 클래스를 제공합니다. 

LLM의 가장 기본적이고 구현하기 쉬운 기능은 텍스트 생성이기 때문에 LLM을 시작하는 것은 매우 쉽습니다. 

그러나 동시에 다른 LLM에 동일한 프롬프트를 요청하는 것은 그리 쉬운 일이 아닙니다. 

이것이 LangChain이 시작되는 곳입니다…

LLM의 가장 쉬운 기능으로 돌아가서 문자열 프롬프트를 받고 지정된 LLM의 출력을 반환하는 LangChain을 사용하여 애플리케이션을 쉽게 구축할 수 있습니다.

작성자 별 코드

우리는 동일한 프롬프트를 사용하여 몇 줄의 코드 내에서 서로 다른 두 모델의 응답을 얻을 수 있습니다!

작성자 별 코드

인상적이군요… 그렇죠?

프롬프트 템플릿을 사용하여 프롬프트에 구조 제공

LLM(언어 모델)의 일반적인 문제는 복잡한 애플리케이션을 에스컬레이션할 수 없다는 것입니다. LangChain은 프롬프트 생성 프로세스를 간소화하는 솔루션을 제공함으로써 이 문제를 해결합니다. 이는 AI의 페르소나를 개략적으로 설명하고 사실적 정확성을 보장해야 하기 때문에 작업을 정의하는 것보다 더 복잡한 경우가 많습니다. 이 중 중요한 부분은 반복적인 상용구 텍스트와 관련이 있습니다. LangChain은 새로운 프롬프트에 상용구 텍스트를 자동으로 포함하는 프롬프트 템플릿을 제공하여 프롬프트 생성을 단순화하고 다양한 작업 전반에 걸쳐 일관성을 보장함으로써 이러한 문제를 완화합니다.

작성자 별 코드

출력 파서를 사용하여 구조화된 응답 얻기

채팅 기반 상호 작용에서 모델의 출력은 단지 텍스트입니다. 그러나 소프트웨어 애플리케이션 내에서는 구조화된 출력을 갖는 것이 추가 프로그래밍 작업을 허용하므로 바람직합니다. 예를 들어 데이터 세트를 생성할 때 CSV나 JSON과 같은 특정 형식으로 응답을 받는 것이 바람직합니다. AI로부터 일관되고 적절한 형식의 응답을 이끌어내기 위해 프롬프트를 제작할 수 있다고 가정하면 이 출력을 관리하기 위한 도구가 필요합니다. LangChain은 구조화된 출력을 효과적으로 처리하고 활용할 수 있는 출력 파서 도구를 제공하여 이러한 요구 사항을 충족합니다.

작성자 별 코드

내 페이지에서 전체 코드를 확인할 수 있습니다. GitHub의

얼마 전까지만 해도 ChatGPT의 고급 기능이 우리를 경외하게 만들었습니다. 그러나 기술 환경은 끊임없이 변화하고 있으며 이제 LangChain과 같은 도구를 손쉽게 사용할 수 있으므로 단 몇 시간 만에 개인용 컴퓨터에서 뛰어난 프로토타입을 제작할 수 있습니다.

무료로 사용할 수 있는 Python 플랫폼인 LangChain은 사용자가 LLM(언어 모델 모델)을 기반으로 하는 애플리케이션을 개발할 수 있는 수단을 제공합니다. 이 플랫폼은 다양한 기본 모델에 대한 유연한 인터페이스를 제공하여 프롬프트 처리를 간소화하고 프롬프트 템플릿, 더 많은 LLM, 외부 정보 및 현재 문서를 기준으로 에이전트를 통한 기타 리소스와 같은 요소에 대한 넥서스 역할을 합니다.

챗봇, 디지털 비서, 언어 번역 도구, 감정 분석 유틸리티를 상상해 보십시오. 이러한 모든 LLM 지원 애플리케이션은 LangChain을 통해 구현됩니다. 개발자는 이 플랫폼을 활용하여 고유한 요구 사항을 해결하는 맞춤형 언어 모델 솔루션을 제작합니다.

자연어 처리의 지평이 확장되고 채택이 심화됨에 따라 그 응용 분야는 무한해 보입니다.
 
 

조셉 페레르 바르셀로나 출신의 분석 엔지니어입니다. 물리공학과를 졸업하고 현재 인간의 이동성을 응용한 데이터 사이언스 분야에서 일하고 있다. 그는 데이터 과학 및 기술에 중점을 둔 파트 타임 콘텐츠 제작자입니다. 당신은 그에게 연락 할 수 있습니다 링크드인, 트위터 or 중급.

spot_img

최신 인텔리전스

spot_img