본문 바로가기
커리어노트 📈/KPMG 교육

인공지능과 생성형 AI (6) 랭체인, LLM, LCEL

by Hayley S 2024. 12. 5.

적은비용, 많은 기능, 최적화

랭체인 쪽은 책, 인터넷 강의도 별로다. 이 책이 제일 좋다. <랭체인LangChain 노트> - LangChain 한국어 튜토리얼 (위키독스)

https://wikidocs.net/book/14314

 

<랭체인LangChain 노트> - LangChain 한국어 튜토리얼🇰🇷

**추천**은 공유할 수 있는 무료 전자책을 집필하는데 정말 큰 힘이 됩니다. **"추천"** 한 번씩만 부탁 드리겠습니다🙏🙏 ✅ **랭체인 한국어 튜토리얼 강의** …

wikidocs.net

범위는 아래만 봐도 된다. 01부터 03번까지 읽기

랭체인: 언어 모델을 활용해 다양한 애플리케이션을 개발할 수 있는 프레임워크

  • 문맥을 인식하는 기능: LangChain은 언어 모델을 다양한 문맥 소스와 연결한다. 여기에는 프롬프트 지시사항, 소수의 예시, 응답에 근거한 내용 등이 포함된다. 이를 통해 언어 모델은 제공된 정보를 기반으로 더 정확하고 관련성 높은 답변을 생성할 수 있다.
  • 추론하는 기능: 또한, 언어 모델은 주어진 문맥을 바탕으로 어떠한 답변을 제공하거나, 어떤 조치를 취해야 할지를 스스로 추론할 수 있다. 이는 언어 모델이 단순히 정보를 재생산하는 것을 넘어서, 주어진 상황을 분석하고 적절한 해결책을 제시할 수 있음을 의미한다.

→ LangChain 을 활용하면 이전에 언급한 기능을 바탕으로 검색 증강 생성(RAG) 어플리케이션 제작, 구조화된 데이터 분석, 챗봇 등을 만들 수 있습니다.

랭스미스: LLM 애플리케이션 개발, 모니터링 및 테스트 를 위한 플랫폼

더보기

랭체인(LangChain)은 자연어 처리(NLP)와 생성형 AI 응용 프로그램을 구축하기 위해 Python과 JavaScript에서 제공되는 라이브러리 및 프레임워크입니다. 특히 GPT-3와 같은 대형 언어 모델(LLM)을 활용하여 더 복잡하고 강력한 AI 애플리케이션을 만드는 데 유용합니다.

랭체인의 주요 목표는 언어 모델을 더 잘 활용하기 위해 여러 가지 기능과 구성 요소를 결합하고, 이를 바탕으로 다양한 어플리케이션을 구축할 수 있게 해주는 것입니다. 랭체인은 언어 모델을 단순한 프롬프트-응답 이상의 단계로 끌어올려, 더 복잡한 작업을 수행할 수 있도록 하는 다양한 기능을 제공합니다.

랭체인의 주요 기능

  1. 체인(Chains): 랭체인에서 체인은 여러 단계를 거쳐 입력 데이터를 처리하고 결과를 만들어내는 프로세스입니다. 여러 모델을 순차적으로 또는 병렬로 연결해, 하나의 모델로는 해결하기 어려운 복잡한 문제를 해결할 수 있습니다.
  2. 에이전트(Agents): 에이전트는 언어 모델이 직접 실행 가능한 도구(예: 계산기, 검색 엔진 등)를 활용할 수 있도록 도와주는 기능입니다. 에이전트를 통해 언어 모델이 특정 작업을 수행하거나 추가적인 정보를 검색할 수 있습니다.
  3. 메모리(Memory): 랭체인은 상태 유지 기능도 제공합니다. 일반적인 언어 모델은 문맥을 유지하지 못하기 때문에, 대화에서 이전 내용이 필요할 경우 모든 정보를 다시 제공해야 합니다. 랭체인의 메모리 기능은 대화를 기억하고 저장하여 모델이 더 일관된 대화를 유지할 수 있도록 합니다.

랭체인 사용 예시

  • 대화형 챗봇: 랭체인을 이용해 사용자와 여러 차례의 대화를 기억하고 복잡한 요청도 처리할 수 있는 대화형 챗봇을 만들 수 있습니다.
  • 복합 작업 흐름 처리: 여러 언어 모델을 순차적으로 활용해, 텍스트 생성, 데이터 분석, 정보 검색 등을 하나의 워크플로우에서 처리할 수 있습니다.
  • 질의 응답 및 데이터 처리 도구: 언어 모델과 외부 데이터베이스를 연결해, 복합적인 질문에 대해 외부 데이터를 조회하여 답변을 제공하는 시스템을 구축할 수 있습니다.

예시

간단한 예를 들어, 사용자가 여행 계획을 세우기 위해 여러 질문을 했다고 가정해봅시다. 랭체인은 질문을 연결된 여러 단계로 나누어 대답할 수 있습니다. 먼저 "어디를 가고 싶은지"에 대해 묻고, 다음으로 "여행 기간 동안의 날씨"와 같은 세부 정보를 자동으로 검색하고, 마지막으로 "적절한 호텔 예약 옵션"을 제안하는 등 다양한 기능을 체인 형태로 수행할 수 있습니다.

이렇게 랭체인은 단순한 질의 응답에서 벗어나, 더 복잡하고 다단계적인 상호작용이 필요한 응용 프로그램을 개발하기 위해 많은 기능을 제공하여 언어 모델의 유용성을 크게 확장시킵니다.

랭체인은 특히 데이터 파이프라인 구축, 맞춤형 챗봇 개발, 복잡한 질의 응답 시스템 등에 사용하기 적합하며, 대형 언어 모델의 능력을 활용해 더 진보된 애플리케이션을 만들 수 있게 돕는 도구라고 할 수 있습니다.

 

OpenAI 사의 채팅 전용 Large Language Model(llm) 이다.

temperature

  • 사용할 샘플링 온도는 0과 2 사이에서 선택한다. 0.8과 같은 높은 값은 출력을 더 무작위하게 만들고, 0.2와 같은 낮은 값은 출력을 더 집중되고 결정론적으로 만든다.

max_tokens

  • 채팅 완성에서 생성할 토큰의 최대 개수다.

model_name: 적용 가능한 모델 리스트 - gpt-3.5-turbo - gpt-4-turbo - gpt-4o

 

LogProb 활성화: 주어진 텍스트에 대한 모델의 토큰 확률의 로그 값을 의미한다. 토큰이란 문장을 구성하는 개별 단어나 문자 등의 요소를 의미하고, 확률은 모델이 그 토큰을 예측할 확률을 나타낸다.

 

스트리밍 옵션은 질의에 대한 답변을 실시간으로 받을 때 유용하다.

 

멀티모달 모델(이미지 인식)은 여러가지 형태의 정보(모달)를 통합하여 처리하는 기술이나 접근방식을 의미한다. 이는 다음과 같은 다양한 데이터 유형을 포함할 수 있다.

  • 텍스트: 문서, 책, 웹 페이지 등의 글자로 된 정보
  • 이미지: 사진, 그래픽, 그림 등 시각적 정보
  • 오디오: 음성, 음악, 소리 효과 등의 청각적 정보
  • 비디오: 동영상 클립, 실시간 스트리밍 등 시각적 및 청각적 정보의 결합

gpt-4o 나 gpt-4-turbo 모델은 이미지 인식 기능(Vision) 이 추가되어 있는 모델이다.

LangChain Expression Language (LCEL)

가장 기본적이고 일반적인 사용 사례는 prompt 템플릿과 모델을 함께 연결하는 것이다. 이것이 어떻게 작동하는지 보기 위해, 각 나라별 수도를 물어보는 Chain을 생성했다.

출처: 위키독스


모든 프로그램의 문제는 오늘 내일 똑같은 작업을 해야하면 처음부터 끝까지 또 로딩해서 갖다가 쓸건지 아니면 일정한 단위단위로 만들어서 피클, 덤프 처럼 작업의 결과 단위로 저장한다. 객체를 조각조각내서 세이브하고 세이브한 것을 불러와서 쓴다. 모듈과 클래스는 코딩이고, 작업의 결과물을 중간중간에 세이브한 것이다. 프로그래머들 영역이기는 하다. 작업을 하다가 뭔가 문제가 생겼을 때 처음부터 다시 작업해야하는 경우가 많이 생기기 때문에 필요하다.

정크 값을 얼마로 하는지에 따라서 결과물이 달라진다. 딥러닝 최종 프로젝트할 때 챗봇을 기술적으로 구현하고 싶은 사람이라면 정크 값을 제어하게 된다. LLM파트에서 옵션값을 조정한다. 기획파트를 목표로 한다면 개념정도만 알면 된다. 기술파트로 가고 싶으면 위 도서는 다 보고 구현까지 해야한다. “요소정도, 이름정도안다. 기술팀이랑 이정도는 대화할 수 있다.” 라는 정도만 해도 충분하다.

기획자와 분석가가 하고싶은 사람들이 포커싱해야하는 부분은 데이터셋이다. 개발보다 더 집중해야하는 부분이다. 처음부터 데이터셋 수집부터 해야한다. 기획, 설계, 수집 이게 더 중요하다. 어디에 사용될 것이고, 수집하고 설계해서 이 데이터가 어떤 문제가 있는지 겪어보는 것이 진짜 중요하다.

하려고 하는 기술도 중요하긴 하는데, 기술적인 부분에 대해 베이직한 부분을 더 수업에서 다루고 있다. 이것과 더불어서 아이디어적인 것을 놓치지 말아야 한다. 삼정 KPMG 과정이기 때문에 여기서 제공하고 있는 문서들 확인하고, 필요하다면 자료 요청해도 된다. 할 수 있는 기회들은 최대한 많이 가져가야 한다. 현업에서 필요로 하는 프로젝트들 한번 해보겠다고 요청해봐도 된다. 데이터셋이 없을 수도 있지만, 요청은 해볼 수 있기 때문이다.