요즘IT
위시켓
최근 검색어
전체 삭제
최근 검색어가 없습니다.

IT 지식이 무엇보다 중요해진 요즘, 여러분은 어떻게 공부하고 있나요? 가장 먼저 눈길이 가는 건 다양한 IT 강의 영상일 겁니다. 강의를 제공하는 교육 기업들과 함께, 요즘IT에서 ‘IT 강의 시리즈’를 준비했습니다. 엄선한 교육 영상을 텍스트로 읽고 필요한 정보를 빠르게 가져가세요.

회원가입을 하면 원하는 문장을
저장할 수 있어요!

다음

회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!

확인

개발

개발자를 위한 랭체인 기초 개념과 환경 설정법

년차,
어떤 스킬
,
어떤 직무
독자들이 봤을까요?
어떤 독자들이 봤는지 궁금하다면?
로그인

IT 지식이 무엇보다 중요해진 요즘, 여러분은 어떻게 공부하고 있나요? 가장 먼저 눈길이 가는 건 다양한 IT 강의 영상일 겁니다. 강의를 제공하는 교육 기업들과 함께, 요즘IT에서 ‘IT 강의 시리즈’를 준비했습니다. 엄선한 교육 영상을 텍스트로 읽고 필요한 정보를 빠르게 가져가세요.

 

이번 강의는 ‘랭체인으로 LLM 기반 애플리케이션 설계하기’입니다. 구글 클라우드의 고객 엔지니어이자 이스라엘 라이히만 대학에서 컴퓨터 과학을 가르치는 에덴 마르코(Eden Marco) 님이 강의를 맡았습니다. 랭체인의 기본 개념부터 LLM 애플리케이션 개발에 도움을 주는 도구 정보까지, 텍스트 환경에 적합한 내용들만 간추려 소개합니다. 영어로 진행한 강의의 번역본을 기초로 글을 구성했으며, 전체 영상은 유데미에서 확인할 수 있습니다.


안녕하세요, 에덴 마르코입니다. 이제부터 제가 소개할 랭체인(LangChain)은 LLM 애플리케이션을 구축할 때 쓸 수 있는 최고의 프레임워크입니다.

 

저 역시 백엔드 개발자로 시작해, 지난 2023년부터 머신러닝에 관심을 가지기 시작했습니다. 랭체인은 학위나 ML 개발 경험이 없는 저 같은 사람들에게 LLM이 널리 퍼지는 데 무엇보다 큰 역할을 했다고 믿습니다. 그 덕분에 이제 저는 스스로를 AI 엔지니어라고 정의하며 활동하고 있습니다.

 

랭체인의 여러 변화로 이번 강의도 새로운 업데이트를 진행했고, 최신 버전인 0.3 이상에 맞게 내용을 구성했습니다. 그럼 본격적으로 시작해 보겠습니다.

 

 

랭체인 이해하기

우선 랭체인에 대해 설명해 보겠습니다.

 

도대체 무엇이, 얼마만큼 유용하길래 이렇게 인기가 많아졌을까요?

 

랭체인은 오픈 소스 프레임워크로, LLM 기반 애플리케이션을 구축하는 과정을 단순화시킵니다. 복잡한 LLM 기반 애플리케이션을 더 쉽게 만들 수 있는 도구와 추상화를 제공합니다.

 

 

즉, 머신러닝이 어떻게 작동하는지, 또는 AI 모델을 어떻게 훈련하는지에 대한 깊은 이해 없이도 LLM 기반 애플리케이션을 구축할 수 있게 도와줍니다. 그 덕분에 모델을 블랙 박스로 사용하고자 하는 개발자들에게 널리 채택되었습니다. 에이전트나 RAG 애플리케이션 같은 LLM 기반 앱을 개발할 때 가장 인기 있는 프레임워크로 등극한 것이죠.

 

또한 오픈 소스 프레임워크이므로 코드가 깃허브(GitHub)에 공개되어 있습니다. 직접 풀 리퀘스트를 만들 수도 있고, 내부적으로 어떤 변화가 이뤄지는지 실제로 볼 수도 있습니다. 기여자와 제작자가 활발하게 활동하는 커뮤니티가 있으며, 이들 모두 랭체인으로 놀라운 제품들을 만들고 있습니다.

 

 

체인(Chain)

랭체인은 모든 AI 애플리케이션에서 반복되고 공유되는 작업을 추상화합니다. 체인(chain)과 같은 멋진 추상화를 제공하기 때문에, 이름도 랭체인이죠.

 

그렇다면, 랭체인에서 말하는 체인이란 무엇일까요?

 

AI 애플리케이션을 만들 때는 보통 AI 모델에 쿼리를 보냅니다. 그런 다음 출력 결과로 무언가를 받습니다. 다른 곳으로 이동하거나, 온라인에서 무언가를 검색하거나, 다른 데이터 소스를 가져오죠. 또 다른 입력을 LLM에 보낼 수도 있습니다.

 

이를 그 자체로, 하나의 행동 체인이라 생각할 수 있습니다.

 

  1. 먼저 LLM에 쿼리를 보냅니다
  2. 그 다음 온라인에서 무언가를 검색합니다
  3. 검색 결과를 다시 LLM에 보내 결과를 얻고, 이를 출력합니다

 

각 단계는 모두 어떠한 행동의 연속입니다. 이런 행동의 연속, 랭체인에서는 이를 ‘체인’이라고 부르죠.

 

 

이처럼 언어 모델과 함께 연속적으로 수행하고자 하는 일련의 행동에 체인을 적용하면, 노력을 기울이지 않고도 멋지고 우아하게 문제를 해결할 수 있습니다. 보일러플레이트 코드*를 작성할 필요도 없습니다. 프레임워크가 여러 귀찮은 작업을 대신해 주니까요.

*보일러플레이트 코드(Boilerplate code): 또는 상용구 코드. 여러 상황에서 거의 또는 전혀 바꾸지 않고 재사용할 수 있는 컴퓨터 언어 텍스트

 

랭체인의 도구와 추상화

랭체인이 얼마나 멋진지, 어느 정도 전달되었을까요?

 

하지만 아직 LLM 애플리케이션 구현을 위해 어떤 도구와 추상화가 쓰이는 지는 말하지 않았습니다.

 

예를 들어 볼까요? 강력한 언어 모델, 이를테면 클로드의 소넷(Sonnet) 위에 앱을 구축하고자 합니다. 여기에 LLM이 미처 훈련하지 않은, 우리만 가진 개인 데이터를 결합하고 싶습니다. PDF 파일이나 이메일, 또는 노션 데이터베이스가 될 수도 있죠.

 

끝이 아닙니다. 사용자 입력에 따라 프롬프트를 동적으로 구성하고 싶습니다. 물론 사용자와 AI가 주고받은 메시지 기록도 저장해야 하고요. 미스트랄(Mistral)처럼 다른 LLM을 함께 쓰거나, 구글 검색 같은 도구에 연결하면 더 좋겠습니다. 사용자 입력에 따른 API 호출 역시 필요하고요.

 

 

이를 모두 구현하면 아주 강력한 애플리케이션이 나올 겁니다. 다만 요구 사항과 기능은 끊임없이 더해질 테고요. LLM 애플리케이션을 직접 구축하는 것이 간단하지 않겠죠?

 

그래서 여러 부분을 함께 맞추며 동기화해야 합니다. 다행스럽게도 랭체인은 이처럼 무거운 작업을 모두 도와줍니다. 작업이 훨씬 더 쉬워질 겁니다. 목적을 달성하는 데 도움이 될만한 여러 핵심 기능을 모듈로 나누어 제공하니까요.

 

 

랭체인으로 할 수 있는 것들

랭체인으로 할 수 있는 것들, 몇 가지를 살펴보겠습니다.

 

LLM과 상호 작용하는 개념을 추상화하면 어떻게 될까요? 양말을 갈아신듯 간단하게 모델을 교체할 수 있습니다. 원하는 모델을 간단히 가져와서 쓰면 그만입니다. 모든 LLM 제공 업체에 맞춰 쓸 동일한 인터페이스를 제공하므로 개발자에게 자유를 주는 것이죠. LLM 제공 업체와의 결합을 해제하고 언제든지 제공 업체를 변경할 수도 있습니다. 즉, 특정 LLM에 종속되지 않게 해줍니다.

 

 

또 다른 모듈은 프롬프트입니다. 프롬프트 관리 최적화/직렬화에 도움을 줍니다. 프롬프트 템플릿을 만들고, 사용자 입력을 동적으로 템플릿에 주입하면 입력과 함께 프롬프트 템플릿의 인스턴스를 만들 수 있습니다. LLM에 전송할 최종 프롬프트를 이미지처럼 만들어 주죠. 이는 LLM 애플리케이션 구축에 많은 유연성을 제공합니다.

 

 

다양한 유형의 데이터 소스를 로드하는 데 쓰는 문서 로더도 있습니다. 노션 데이터베이스, PDF 파일, 이메일, 그리고 수천 개의 다른 데이터 소스에 쓸 수 있죠. 모듈에 데이터 소스를 로드하면 랭체인 문서라는 단일 인터페이스를 만들어 줍니다. LLM으로 전달하기 전, 데이터를 처리하기 매우 쉬워집니다.

 

 

에이전트 에코시스템 전체를 지원한다는 것도 중요합니다. 만약 여러분이 에이전트 애플리케이션을 구축하고 싶다면, LLM의 추론 능력을 활용하며 인터넷 검색, 데이터베이스 쿼리, 이메일 전송 등과 같은 도구를 사용할 수 있습니다. 말 그대로 LLM에 초능력을 부여하듯 복잡한 로직을 구현할 수 있는 것이죠.

 

 

어쩌면 이런 설명도 LLM 기반 애플리케이션을 개발할 때, 랭체인이 제공할 수 있는 능력에 비하면 빙산의 일각에 불과할 겁니다.

 

 

랭체인 기초 환경 설정

이제 이론을 넘어, 랭체인을 활용하기 위한 기초 프로젝트 설정을 해보려고 합니다.

 

브랜치를 복제하고, 보일러플레이트 코드를 작성하고, 파이참(PyCharm)을 설정한 다음 앱을 준비해 보려고 합니다. 모든 설정을 마치면 직접 랭체인 코드를 작성할 수 있을 겁니다.

 

물론 저는 파이참을 쓰지만, VSCode나 Vim을 사용해도 괜찮습니다. 제 생각에 간단한 조작에는 어떤 IDE를 사용하든 코드를 실행하고 디버깅할 수 있다면 상관없어 보입니다.

 

 

브랜치 복제와 인터프리터 설정하기

그럼 시작하겠습니다. 제가 준비한 깃허브 메인 저장소로 가서, ‘1-start-here’라는 브랜치로 이동하겠습니다. URL을 복사하고, 이제 터미널로 이동해 명령어를 입력해 주세요. 브랜치를 복제해야 하므로, “git clone -b” 명령어를 쓰겠습니다.

 

간단합니다. 아래와 같이 코드를 입력하면, 완료입니다. 열 수 있는 저장소가 생겼습니다.

 

 

파이참에서 프로젝트를 열고 살펴보겠습니다. 잠시 초기화 과정이 진행될 겁니다. 여기서는 오른쪽 하단에서 ‘1-start-here’ 브랜치에서 시작하는 것을 확인해야 합니다.

 

이제 이 프로젝트를 실행할 인터프리터를 설정할 시간입니다. 파이참에서 환경설정으로 이동하겠습니다. ‘Preferences’ 메뉴를 클릭하고 ‘Python Interpreter’로 이동할게요. ‘Show All’을 클릭하고, 플러스(+) 버튼을 눌러, Pipenv 인터프리터를 선택합니다.

 

 

저는 패키지 관리자와 가상 환경으로 Pipenv를 사용할 계획입니다. 현재 이미 Pipenv 환경이 작동 중이라고 뜨면 새로 하나를 생성하거나 기존 환경을 선택하고 진행합니다. 만약 가상 환경을 만들려면, ‘Pipenv shell’을 입력하면 됩니다. 이 명령으로 Pipfile이 생성됩니다. Pipfile을 설치한 모든 패키지를 포함하는 저장소에 추가하겠습니다.

 

 

랭체인 설치하기

본격적인 시작입니다. 랭체인을 설치하겠습니다. 정말 간단합니다. ‘pipenv install langchain’ 명령어를 실행하면 그만이죠. 모든 종속성과 랭체인 패키지가 설치될 때까지 기다립니다.

 

 

이어 LangChain-OpenAI 패키지도 설치하려고 합니다. 랭체인을 오픈AI에서 제공하는 LLM과 통합해주는 서드파티 패키지입니다. GPT-3.5, GPT-4를 포함하죠. 랭체인은 GCP, 버텍스(Vertex) AI, AI21, 앤트로픽(Anthropic) 등 수많은 LLM 벤더와 이어져 있습니다.

 

pipenv install langchain-openai

 

LangChain-Community 패키지도 설치하면 좋습니다. 이 패키지는 텍스트 분할기(Text Splitter)나 출력 파서(Output Parser)와 같이 커뮤니티에서 기여한 수많은 코드를 포함하고 있죠.

 

pipenv install langchain-community

 

마지막으로 설치할 것은 LangChain-Hub 패키지입니다. 이 패키지는 커뮤니티에서 기여한 프롬프트를 동적으로 다운로드할 수 있게 도와줍니다. 랭체인 커뮤니티의 기여자들은 프롬프트 엔지니어링에 노력을 기울였고, 훌륭한 프롬프트를 많이 만들어 냈습니다. LangChain-Hub 패키지를 쓰면 이를 다운로드할 수 있습니다.

 

pipenv install langchainhub

 

랭체인이 다양하게 패키지를 분리한 이유

잠시 의문이 듭니다. 왜 랭체인 관련 다른 패키지는 모두 따로 설치해야 할까요?

 

랭체인이 수많은 리팩토링을 거쳤기 때문입니다. 처음에는 랭체인 패키지만 있었습니다. 그 패키지 안에 모든 구현 사항이 들어 있었죠. 다만 그래서 랭체인을 설치할 때는, 다른 모든 요소들도 함께 설치해야 했습니다.

 

예를 들어, 오픈AI가 제공하는 LLM을 쓰고 싶다면 오픈AI SDK만 설치할 생각을 하겠죠? 그러나 랭체인을 설치하려면 제미나이(Gemini) SDK, 앤트로픽 SDK, 미스트랄 SDK 등 다른 벤더의 SDK까지 모두 설치해야 했습니다. 그 때문에 실제로는 쓰지 않는 불필요한 패키지를 모두 다운로드해야 했습니다.

 

문제를 해결하고자 랭체인은 버전 0.1부터 패키지를 분리하기 시작했습니다. 출력 파서나 텍스트 분할기처럼 공식 벤더와 관련 없는 기여 코드는 방금 설치한 LangChain-Community 패키지에 들어갔습니다.

 

 

또, 특정 벤더의 코드를 포함하는 패키지는 LangChain-OpenAI, LangChain-Mistral, LangChain-Anthropic과 같이 구분했습니다. 이 패키지는 해당 LLM 벤더의 개발팀에서 직접 기여하고 업데이트합니다.

 

그 결과, 패키지별로 다양한 조직화와 구조화가 이뤄졌습니다. 그래서 이제 우리가 쓰지 않을 패키지는 다운로드할 필요가 없습니다. 또 그런 만큼 독립적으로 유지 관리하기 훨씬 쉬워졌죠.

 

 

러너 추가하기

이제 새로운 파일을 만들겠습니다. 새 파일을 만들고 ‘ice_breaker’라고 해보죠.

 

 

기본부터 시작하겠습니다. 순서대로 if name == ‘main’;과 print(“Hello LangChain”)을 입력합니다. 이제 터미널에서 실행해 볼까요? 모든 것이 잘 작동합니다.

 

 

‘Edit Configurations’ 메뉴로 가서 새로운 레시피를 추가하고 또 다른 러너를 추가하겠습니다. 플러스(+) 버튼을 클릭하고, 이름을 지정했습니다. 스크립트 경로는 방금 만든 파일, ice_breaker.py의 경로가 될 것입니다. 마지막으로 ‘Apply’로 적용하겠습니다. 이제 러너를 실행하면, 문제없이 작동할 겁니다.

 

 

이렇게 브랜치를 복제하여 환경을 만들고 랭체인을 설치한 다음, 보일러플레이트 코드를 작성하고 러너를 설정했습니다.

 

 

마치며

지금까지 랭체인의 기본 개념과 장점을 보고, 기초 환경 설정에 필요한 패키지 등을 안내했습니다.

 

다음 시간부터는 랭체인의 토큰 한도 처리 전략과 메모리 이론, 또 랭체인 커뮤니티에서 기여한 여러 도구의 용도를 살펴볼 예정입니다. 다양한 분야에서 최첨단 LLM 솔루션을 개발할 때 필요한 기술과 지식을 잘 전달하기 위해 노력해 보겠습니다.

 

원본 강의 보러 가기 https://bit.ly/udemy_langchain

 

요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.

좋아요

댓글

공유

공유

댓글 0
유데미
기업
세계 최대 온라인 교육 플랫폼
10
명 알림 받는 중

작가 홈

유데미
기업
세계 최대 온라인 교육 플랫폼
10
명 알림 받는 중
빠르게 배워야 빠르게 써먹으니까!
당신의 커리어, 유데미와 함께 키워보세요

좋아요

댓글

스크랩

공유

공유

요즘IT가 PICK한 뉴스레터를 매주 목요일에 만나보세요

요즘IT가 PICK한 뉴스레터를
매주 목요일에 만나보세요

뉴스레터를 구독하려면 동의가 필요합니다.
https://auth.wishket.com/login