LangChain 튜토리얼: LLM 기반 애플리케이션 구축 안내서

139686_-_Elastic_-_Headers_-_V1_2.jpg

GPT-4 및 LLaMA와 같은 대규모 언어 모델(LLM)은 지난 몇 년 동안 엄청난 가능성을 창출해 왔습니다. 이는 AI 도구 및 애플리케이션의 붐을 예고했으며 ChatGPT는 하룻밤 사이에 누구나 아는 이름이 되었습니다. 그러나 이러한 붐은 새로운 세대의 앱을 촉진하기 위해 만들어진 강력한 도구와 프레임워크가 없었다면 불가능했을 것입니다.

이러한 프레임워크 중 하나는 기존 LLM을 사용하여 새 앱을 쉽게 빌드할 수 있게 해주는 LangChain입니다. LangChain은 머신 러닝 전문가 Harrison Chase가 개발했으며 2022년 오픈 소스 프로젝트로 출시되었습니다. 이 프레임워크는 기존 언어 모델 간의 기술 격차를 해소하고 새롭고 다양한 애플리케이션을 구축하는 데 있어 큰 진전입니다.

LangChain 설명

간단히 말하면, LangChain은 AI 앱 구축 프로세스를 단순화하는 표준화된 인터페이스입니다. 다양한 구성 요소를 연결하고 복잡한 작업 흐름을 만드는 데 사용할 수 있는 다양한 도구를 제공합니다. 여기에는 LLM 및 다양한 유형의 데이터 소스가 포함됩니다. 사용자가 앱과 상호 작용할 때 LangChain은 LLM에 대한 연결을 사용하여 요청을 처리하고 적절한 응답을 생성합니다. 또한 문서나 데이터베이스와 같은 외부 소스의 정보와 데이터를 사용하여 보다 정확하고 상황에 맞는 답변을 제공할 수도 있습니다.

예를 들어, 사용자가 질문을 하면 LangChain은 LLM을 사용하여 질문을 이해하고 답변을 작성합니다. 그러나 응답을 향상시키기 위해 하나 이상의 외부 데이터 소스에서 가져오기도 합니다. 이를 통해 애플리케이션이 훨씬 더 지능적이고 복잡하고 전문적인 쿼리를 처리할 수 있게 됩니다.

기본적으로 LLM에서 해결하려는 문제와 더 정확도가 높은 데이터를 제공하여 LLM의 능력을 강화합니다.

Python 및 TypeScript 패키지로 모두 사용 가능하며 다음과 같은 몇 가지 인상적인 기능을 갖추고 있습니다.

  • 모델 상호 작용: LangChain을 사용하면 모든 언어 모델과 상호 작용하여 입력을 관리하고 출력에서 정보를 추출할 수 있습니다.

  • 효율적인 통합: OpenAI 및 Hugging Face와 같은 인기 있는 AI 플랫폼과 효율적으로 통합됩니다.

  • 유연성 및 맞춤 설정: LangChain은 유연성, 사용자 정의 옵션 및 강력한 구성 요소를 제공하여 다양한 산업 분야에 걸쳐 다양한 애플리케이션을 만들 수 있습니다.

  • 핵심 구성 요소: 프레임워크는 전체 애플리케이션 수명 주기를 단순화하는 LangChain 라이브러리, LangChain 템플릿, LangServe 및 LangSmith로 구성됩니다.

  • 표준화된 인터페이스: 표준화된 인터페이스, 신속한 관리 및 메모리 기능을 제공하여 언어 모델이 데이터 소스와 상호 작용할 수 있게 해줍니다.

이러한 기능 조합은 유연하고 빠르며 확장 가능하며 사용하기 쉽습니다. 이는 AI를 시작하려는 모든 개발자에게 있어 반가운 소식입니다.

LangChain의 작동 방식

LangChain은 LLM과 통합되는 모듈식 프레임워크입니다. 이는 다양한 LLM API 작업의 복잡성과 어려움을 추상화하는 표준화된 인터페이스입니다. 이는 GPT-4, LLaMA 또는 사용하려는 기타 LLM과 통합하는 프로세스와 동일합니다. 또한 동적 LLM 선택 기능이 있어 개발자가 LangChain을 사용하여 수행하는 특정 작업에 가장 적합한 LLM을 선택할 수 있습니다.

또한 모듈식 설계는 입력 데이터를 실행 가능한 출력으로 처리하고 변환하는 것을 용이하게 합니다. 텍스트, 코드, 멀티미디어 형식을 포함한 다양한 데이터 유형을 처리하고 데이터 전처리, 정리 및 정규화를 위한 도구를 제공합니다. 이는 데이터가 LLM에서 사용하기에 적합하고 토큰화, 정규화 및 언어 식별이 포함될 수 있는지 확인하기 위한 것입니다.

LangChain은 또한 LLM의 출력을 처리하여 앱 또는 작업별 요구 사항에 적합한 형식으로 변환합니다. 여기에는 텍스트 서식 지정, 코드 조각 생성, 복잡한 데이터 요약 제공 등이 포함됩니다.

LangChain의 핵심 개념

LangChain의 아키텍처는 구성 요소와 체인의 개념을 기반으로 구축되었습니다. 구성 요소는 입력 데이터 처리, 텍스트 형식 생성, 외부 정보 액세스 또는 워크플로우 관리와 같은 특정 작업을 수행하는 재사용 가능한 모듈을 나타냅니다. 체인은 문서 요약, 창의적인 텍스트 형식 생성, 맞춤 추천 제공 등 더 광범위한 목표를 달성하기 위해 함께 작동하는 일련의 구성 요소입니다.

구성 요소 및 모듈

LangChain에서는 "구성 요소"와 "모듈"이라는 용어가 때때로 같은 의미로 사용되지만 둘 사이에는 미묘한 차이가 있습니다.

  • 구성 요소는 특정 작업이나 기능을 나타내는 LangChain의 핵심 구성 요소입니다. 이는 일반적으로 작고 집중적이며 다양한 애플리케이션과 워크플로우에서 재사용될 수 있습니다.

  • 반면에 모듈은 여러 구성 요소를 결합하여 더 복잡한 기능을 형성합니다. LangChain은 메모리 모듈(대규모 언어 모델에서 사용할 데이터를 저장하고 관리하는 재사용 가능한 빌딩 블록)과 에이전트(실시간 피드백 및 사용자 상호 작용을 기반으로 체인을 조정하는 동적 제어 장치)를 포함하여 일부 주요 모듈에 대한 표준 인터페이스도 제공합니다.

구성 요소와 마찬가지로, 모듈은 재사용이 가능하며 서로 결합하여 훨씬 더 복잡한 워크플로우를 만들 수 있습니다. 이를 체인이라고 하며, 특정 목표를 달성하기 위해 일련의 구성 요소 또는 모듈을 함께 배치합니다. 체인은 LangChain의 워크플로우 조정의 기본이며 광범위한 작업을 처리하는 효과적인 애플리케이션을 구축하는 데 필수적입니다.

LLM과의 통합

LangChain은 표준화된 인터페이스를 제공하여 LLM과 원활하게 통합됩니다. 그러나 LLM과 LangChain의 통합은 단순히 연결 메커니즘을 제공하는 것 이상입니다. 또한 언어 기반 애플리케이션 구축을 위해 LLM 사용을 최적화하는 여러 기능을 제공합니다.

  • 신속한 관리: LangChain을 사용하면 LLM이 작업을 이해하고 유용한 응답을 생성하는 데 도움이 되는 효과적인 프롬프트를 만들 수 있습니다.

  • 동적 LLM 선택: 이를 통해 복잡성, 정확성 요구 사항, 계산 리소스 등의 요소를 기반으로 다양한 작업에 가장 적합한 LLM을 선택할 수 있습니다.

  • 메모리 관리 통합: LangChain은 메모리 모듈과 통합되어 LLM이 외부 정보에 액세스하고 처리할 수 있음을 의미합니다.

  • 에이전트 기반 관리: 이를 통해 변화하는 상황과 사용자 요구에 맞춰 복잡한 LLM 기반 워크플로우를 조정할 수 있습니다.

워크플로우 관리

LangChain에서 워크플로우 관리는 특정 문제를 해결하기 위해 체인과 에이전트의 실행을 조정하고 제어하는 프로세스입니다. 여기에는 데이터 흐름 관리, 구성 요소 실행 조정, 애플리케이션이 사용자 상호 작용 및 변화하는 상황에 효과적으로 응답하도록 보장하는 작업이 포함됩니다. 주요 작업 흐름 관리 구성 요소는 다음과 같습니다.

  • 체인 조정: LangChain은 작업이 올바른 순서로 수행되고 데이터가 구성 요소 간에 올바르게 전달되도록 체인 실행을 조정합니다.

  • 에이전트 기반 관리: 사전 정의된 템플릿과 사용자 친화적인 인터페이스를 통해 에이전트 사용이 단순화되었습니다.

  • 상태 관리: LangChain은 자동으로 애플리케이션 상태를 추적하여 개발자에게 상태 정보에 액세스하고 수정할 수 있는 통합 인터페이스를 제공합니다.

  • 동시성 관리: LangChain은 동시 실행의 복잡성을 처리하므로 개발자는 스레딩이나 동기화 문제에 대한 걱정 없이 작업과 상호 작용에 집중할 수 있습니다.

LangChain 설정

LangChain의 장점 중 하나는 시작하기 위한 요구 사항이 거의 없다는 것입니다. 이 안내서에서는 Python을 사용하므로 컴퓨터에 Python 3.8 이상이 설치되어 있어야 합니다. 그게 다입니다!

설치 및 구성

첫 번째 단계는 핵심 LangChain 프레임워크를 설치하는 것입니다. 이를 수행하는 가장 쉬운 방법은 다음 PIP 명령을 사용하는 것입니다.

pip install langchain

다음으로 필요한 것은 LangChain과 상호 작용할 LLM입니다. 이 예에서는 OpenAI를 사용하지만 앱에 원하는 LLM을 사용할 수 있습니다.

pip install openai

OpenAI가 작동하려면 요청을 인증하기 위한 API 키도 필요합니다. OpenAI 계정을 생성하고 API 키 섹션으로 이동하여 “새 비밀 키 생성”을 선택하면 얻을 수 있습니다. 키를 얻은 후에는 어딘가에 안전하게 보관해 두세요. 곧 필요하게 됩니다.

마지막으로, data.txt라는 텍스트 파일을 만듭니다. 이는 LLM에 컨텍스트를 제공하는 데 사용하는 외부 데이터 소스가 될 것입니다.

In West Philadelphia born and raised
On the playground was where I spent most of my days
Chillin' out, maxin', relaxin', all cool
And all shootin' some b-ball outside of the school

이제 드디어 즐거운 시간이 되었습니다!

LangChain으로 애플리케이션 개발

이 LangChain 앱을 빌드하려면 선택한 텍스트 편집기나 IDE를 열고 data.txt와 동일한 위치에 새 Python(.py) 파일을 만들어야 합니다. OpenAI의 GPT-3 LLM에 메시지를 보내고 응답을 인쇄하는 초기본 앱을 만들겠습니다.

좀 더 발전된 기능을 찾고 계신가요? Elasticsearch 및 Langchain과 함께 Amazon Bedrock 사용에 대한 안내서를 확인하세요.

1단계: LangChain에서 OpenAI 클래스 가져오기

Python 스크립트 상단에 다음 가져오기 문을 추가하여 LangChain의 LLM 모듈에서 OpenAI 클래스를 가져옵니다.

from langchain.llms import OpenAI

2단계: 텍스트 파일에서 기능적 읽기 데이터 정의

함수를 정의하여 앱이 파일 경로를 인수로 사용하도록 합니다. 그러면 읽기 위해 파일이 열리고 내용이 반환됩니다.

def read_data_from_file(file_path):
    with open(file_path, 'r') as file:
        return file.read()

3단계: OpenAI 모델 초기화

API 키를 사용하여 OpenAI 클래스의 인스턴스를 생성하고 YOUR-OPENAI-KEY를 OpenAI에서 얻은 실제 키로 바꿉니다.

gpt3 = OpenAI(api_key='YOUR-OPENAI-KEY')

4단계: OpenAI로부터 응답을 요청하는 함수 정의

프롬프트를 인수로 취하고 GPT-3 모델의 응답을 반환하는 함수를 작성하세요.

def get_response(prompt):
    return gpt3(prompt)

5단계: 텍스트 파일에서 데이터 읽기

텍스트 파일의 경로를 지정하고 앞서 정의한 함수를 사용하여 해당 내용을 읽습니다. 그런 다음 external_data 변수에 데이터를 저장합니다.

file_path = 'data.txt'
external_data = read_data_from_file(file_path)

6단계: 테스트 프롬프트 만들기

여기서 GPT-3에 보낼 메시지를 정의합니다. 이 예에서는 텍스트를 읽고 텍스트 파일이 말하는 TV 프로그램이 무엇인지 알려달라고 요청합니다.

prompt = f"Based on the following data: {external_data}, what TV show is this about?"

7단계: GPT-3에서 응답을 받아 인쇄

준비된 프롬프트를 보낸 다음 GPT-3에서 응답을 검색하고 인쇄하는 함수를 호출합니다.

print("Response:", get_response(prompt))

8단계: 앱을 실행하고 응답 확인

이 모든 작업을 완료하면 다음과 같은 Python 앱이 완성됩니다.

from langchain.llms import OpenAI

# Function to read data from a file
def read_data_from_file(file_path):
    with open(file_path, 'r') as file:
        return file.read()

# Initialize the LLM
gpt3 = OpenAI(api_key='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')

def get_response(prompt):
    return gpt3(prompt)

# Read data from your text file
file_path = 'data.txt'
external_data = read_data_from_file(file_path)

# Prepare your prompt including the external data
prompt = f"Based on the following data: {external_data}, what TV show is this about?"

# Get the response from GPT-3
print("Response:", get_response(prompt))

이제 Python 앱을 실행하여 작동하는지 확인하는 일만 남았습니다. 파일을 저장하고 터미널에서 다음 명령을 사용하여 앱을 실행합니다.

python YOUR-APP-NAME.py

모든 것이 계획대로 진행되면 다음과 같은 응답을 받게 됩니다.

Response: 
This is the opening theme song for the popular 1990s TV show "The Fresh Prince of Bel-Air".

사용 사례

이 예는 지나치게 단순화된 데모이지만 LangChain의 유연성은 새로운 AI 앱을 구축할 수 있는 가능성이 무한하다는 것을 의미합니다. 여기에 모두 나열할 수는 없지만 구축할 수 있는 다양한 항목을 강조하기 위해 몇 가지 사례 연구를 살펴보겠습니다.

  • 챗봇: 자연어로 질문하고 대화 기록을 유지할 수 있는 나만의 챗봇을 구축하세요.

  • Q&A 앱: 원하는 정보를 요청할 수 있는 앱을 만들고 저장된 문서에서 답변을 찾아보세요.

  • 텍스트 검색(BM25): 대량의 데이터를 검색하려면 자신만의 텍스트 검색 앱을 만드세요.

  • 벡터 검색: 데이터 유사성을 검색하고 메타데이터를 필터링하는 앱을 구축합니다.

  • 하이브리드 검색(텍스트 및 벡터): 텍스트 필터링과 벡터 필터링을 모두 사용하여 유사한 문서를 일치시키는 AI를 개발합니다.

  • 자신만의 LLM을 갖춘 LangChain: LangChain을 사용하여 외부 데이터 소스와 함께 자체 LLM을 사용하는 AI 앱을 구축하세요.

LangChain을 사용하여 LLM 기반 앱 구축

LLM의 강력한 기능을 외부 데이터 소스의 컨텍스트 및 추가 정보와 결합하여 LangChain이 무한한 가능성을 제공한다는 점은 이제 분명해졌습니다. 이 LangChain 튜토리얼에서 볼 수 있듯이 시작하는 것도 매우 쉽습니다. 이러한 사용 용이성과 LangChain의 유연성 및 성능이 결합되어 LangChain은 광범위한 AI 애플리케이션을 개발하는 데 이상적인 플랫폼이 됩니다. 챗봇, Q&A 앱, 검색 엔진 등 무엇을 구축하든 LangChain은 혁신적이고 효과적인 솔루션을 만드는 데 도움을 줄 수 있습니다.

다음에 해야 할 일

준비가 되시면, 비즈니스 데이터에서 인사이트를 활용하는 데 도움이 되는 다음 네 가지 방법을 확인해 보세요.

  1. 무료 체험판을 시작하고 Elastic이 여러분의 비즈니스에 어떻게 도움이 되는지 알아보세요.

  2. 저희 솔루션을 둘러보며 Elasticsearch 플랫폼이 어떻게 작동하는지, 그리고 저희 솔루션이 여러분의 요구에 어떻게 부합하는지 알아보세요.

  3. 기업에 생성형 AI를 통합하는 방법을 알아보세요.

  4. 이 블로그 게시물에 관심이 있을 만한 사람과 공유하세요. 이메일, 링크드인, 트위터 또는 페이스북을 통해 공유하세요.

이 게시물에 설명된 기능의 릴리즈 및 시기는 Elastic의 단독 재량에 따릅니다. 현재 이용할 수 없는 기능은 정시에 또는 전혀 제공되지 않을 수도 있습니다.

이 블로그 포스팅에서, Elastic은 각 소유자가 소유하고 운영하는 서드파티 생성형 AI 도구를 사용했거나 참조했을 수 있습니다. Elastic은 서드파티 도구에 대한 어떠한 통제권도 없으며 당사는 그 내용, 작동 또는 사용에 대한 책임이나 법적 의무가 없고 이러한 도구의 사용으로 인해 발생할 수 있는 손실 또는 손상에 대해 책임을 지지 않습니다. 개인 정보, 민감한 정보 또는 기밀 정보와 함께 AI 도구를 사용할 때 주의하세요. 제출하신 모든 데이터는 AI 교육을 위해 또는 다른 목적으로 사용될 수 있습니다. 제공하시는 정보가 안전하게 유지되거나 기밀로 유지된다는 보장은 없습니다. 사용 전에 생성형 AI 도구의 개인 정보 보호 관행 및 사용 약관을 숙지하셔야 합니다.

Elastic, Elasticsearch, ESRE, Elasticsearch Relevance Engine 및 관련 마크는 미국 및 기타 국가에서 Elasticsearch N.V.의 상표, 로고 또는 등록 상표입니다. 기타 모든 회사 및 제품 이름은 해당 소유자의 상표, 로고 또는 등록 상표입니다.