일요일, 5월 26, 2024
Home자동화“LLM 개발을 더 간단하게 만들어 보세요” LangChain 이해하기

“LLM 개발을 더 간단하게 만들어 보세요” LangChain 이해하기

대규모 언어 모델(LLM)에 대한 효과적인 프롬프트를 작성하려면 기술이 필요하지만 일반적으로 LLM을 사용하는 것은 간단합니다. 반면에 언어 모델을 사용한 프로그래밍은 어려울 수 있습니다. 그때에 랭체인당신이 사용할 수있는 .LangChain은 언어 모델 기반 애플리케이션을 개발하기 위한 프레임워크입니다. LangChain을 사용하여 챗봇 또는 개인 비서를 만들고, 문서 또는 구조화된 데이터에 대한 Q&A를 요약, 분석 및 생성하고, 코드를 작성 또는 이해하고, API와 상호 작용하고, 생성 AI를 활용하는 기타 애플리케이션을 만듭니다. 당신은 할 수 있습니다. 현재 LangChain에는 Python과 TypeScript/JavaScript의 두 가지 버전이 있습니다.

LangChain을 사용하면 언어 모델이 데이터 소스에 연결하고 환경과 상호 작용할 수 있습니다. LangChain의 주요 구성 요소는 모듈식 추상화 및 추상화 구현 모음으로 구성됩니다. 기성품 체인은 특정 상위 수준 작업을 수행하기 위한 구성 요소의 구조화된 어셈블리입니다. 구성요소를 사용하여 기존 체인을 사용자 정의하고 새 체인을 생성할 수 있습니다.

언어 모델에는 LLM과 채팅 모델의 두 가지 유형이 있습니다. LLM은 문자열을 입력으로 사용하고 문자열을 반환합니다. 채팅 모델은 메시지 목록을 입력으로 사용하고 채팅 메시지를 반환합니다. 채팅 메시지에는 콘텐츠와 역할이라는 두 가지 구성 요소가 포함됩니다. 역할은 콘텐츠의 출처(사람, AI, 시스템, 함수 호출 또는 일반 입력)를 지정합니다.

일반적으로 LLM은 입력을 위해 프롬프트 템플릿을 사용합니다. 프롬프트 템플릿을 사용하여 “영어를 프랑스어로 번역하는 유용한 보조자”와 같이 LLM 또는 채팅 모델이 수행할 역할을 지정할 수 있습니다. 프롬프트 템플릿을 사용하면 번역할 문구 목록과 같은 다양한 콘텐츠 인스턴스에 적용할 수도 있습니다.

LangChain의 작동 방식: 모듈

LangChain에는 다음과 같은 6개의 모듈이 있습니다:

  1. 모델 I/O : 언어 모델과의 인터페이스
  2. 데이터 연결 : 애플리케이션별 데이터와 인터페이스
  3. 체인 : 통화 시퀀스 구축
  4. 대리인 : 상위 지시어가 주어지면 체인이 사용할 도구를 선택할 수 있습니다.
  5. 메모리 : 체인 실행 전반에 걸쳐 애플리케이션 상태를 유지합니다.
  6. 콜백 : 체인의 중간 단계를 기록하고 스트리밍합니다.

모델 I/O는 프롬프트를 관리하고 언어 모델을 호출하고 공통 인터페이스를 통해 모델 출력에서 ​​정보를 추출할 수 있도록 합니다.

ⓒ IDG

데이터 연결은 데이터 로드, 변환, 저장 및 쿼리를 위한 구성 요소를 제공합니다.

ⓒ IDG

복잡한 응용 프로그램에서는 LLM을 다른 구성 요소와 함께 연결해야 합니다. LangChain은 이러한 “체인” 애플리케이션을 위한 체인 인터페이스를 제공합니다. 대화형 시스템은 일정 기간의 과거 메시지에 직접 액세스해야 합니다. LangChain에서는 이 기능을 메모리라고 합니다.

ⓒ IDG

시퀀스를 하드 코딩하는 체인과 달리 에이전트는 언어 모델을 추론 엔진으로 사용하여 수행할 작업과 순서를 결정합니다. 콜백을 사용하면 LLM 지원서의 다양한 단계에 연결할 수 있습니다. 로깅, 모니터링, 스트리밍 등의 작업에 유용합니다.

Langsmith를 사용한 디버깅

랭스미스프로토타입에서 프로덕션으로 이동하기 위해 LangChain 언어 모델 애플리케이션과 지능형 에이전트를 추적하고 평가하는 데 유용합니다. 2023년 9월 초 기준 비공개 베타 한 단계입니다. 베타 테스트에 참여하지 않더라도 Langsmith 자료표그리고 랭스미스 문서너는 볼 수있어 .

랭체인 사용 사례

랭체인 사용 사례문서화, 구조화된 데이터 분석, API와의 통합, 코드 이해, 에이전트 시뮬레이션, 에이전트, 자율(장기 실행) 에이전트, 챗봇, 코드 작성, 추출, 그래프 데이터 분석, 멀티모달 출력, 자체-에 대한 Q&A를 살펴보면 검사, 요약, 태깅 등이 포함됩니다. 일부 사용 사례에는 많은 예가 있습니다. 예를 들어 약 17개의 Q&A가 있습니다. 웹 스크래핑과 같은 일부 경우에는 하나의 예만 있습니다.

랭체인 통합

현재 약 163명 랭체인 통합있습니다. 콜백 5개, 채팅 모델 9개, 문서 로더 115개, 문서 변환기 6개, LLM 54개, 메모리 구현 방법 11개(주로 데이터베이스 사용), 검색기 22개(주로 검색 방법), 텍스트 임베딩 모델 31개, 에이전트 21개의 툴킷, 34개의 도구, 그리고 42개의 벡터 상점이 있습니다. 통합은 공급자별로 그룹화하여 사용할 수도 있습니다. LangChain은 기본적으로 이러한 모든 기능에 대한 중립 허브 역할을 합니다.

Python 및 JavaScript용 LangChain 설치

Python용 LangChain을 설치하려면 pip 또는 conda를 사용하십시오. 종속성에 대한 버전 충돌을 방지하려면 가상 환경에 Python 패키지를 설치하는 것이 좋습니다. 여기서는 pip 명령이 사용됩니다. 콘다 명령의 경우 설치 페이지방문하셔서 Conda를 클릭하시면 보실 수 있습니다. 기본 최소 설치는 다음과 같습니다.

pip 설치 랭체인

참고로 저는 이렇게만 사용했습니다. 모델 공급자, 데이터 저장소 또는 기타 통합을 위한 모듈은 포함되지 않습니다. 필요할 경우 필요한 모듈을 설치할 계획입니다. LangChain 및 일반 언어 모델을 설치하려면 다음을 사용하십시오.

pip 설치 랭체인(llms)

LangChain 및 모든 통합을 설치하려면 다음을 사용하십시오.

pip 설치 langchain(전체)

최신 Mac OS 버전의 기본 셸인 zsh를 사용하는 경우 대괄호로 묶인 표현식을 따옴표로 묶어야 합니다. 그렇지 않으면 쉘은 대괄호를 배열을 나타내는 것으로 해석합니다. 예를 들어:

pip install ‘langchain(전체)’

JavaScript용 LangChain을 설치하려면 npm, Yarn 또는 pnpm을 사용하세요. 예를 들어:

npm install -S 랭체인

JavaScript용 LangChain은 Node.js, Cloudflare Workers, Vercel/Next.js(브라우저, 서버리스, 엣지 기능), Supabase Edge 기능, 웹 브라우저 및 Dino(Deno)를 지원합니다. 여기서는 JavaScript용 LangChain에 대해 더 이상 살펴보지 않겠습니다. 설치 페이지여기에서 JavaScript용 LangChain을 시작하는 방법을 참조할 수 있습니다.

랭체인 예시

LangChain 문서에는 수백 개의 예제가 있지만 여기서는 하나만 살펴보겠습니다. 다음 Python 코드는 빠른 시작 끝에 표시된 코드는 LLM 체인(LLMChain)을 보여줍니다. Chain은 입력 변수를 가져와 프롬프트 템플릿에 전달하여 프롬프트를 생성하고 이 프롬프트를 LLM인 ChatOpenAI에 전달한 다음 선택적 출력 구문 분석기를 통해 CSV 출력을 전달하여 Python 문자열 배열을 생성합니다.

langchain.chat_models에서 ChatOpenAI 가져오기
langchain.prompts.chat 가져오기(
채팅프롬프트템플릿,
시스템메시지프롬프트템플릿,
HumanMessagePromptTemplate,
)
langchain.chains에서 LLMChain 가져오기
langchain.schema에서 BaseOutputParser 가져오기
클래스 CommaSeparatedListOutputParser(BaseOutputParser):
“””LLM 호출의 출력을 쉼표로 구분된 목록으로 구문 분석합니다.”””

def 구문 분석(self, text: str):
“””LLM 호출의 결과를 분석합니다.”””
return text.strip().split(“, “)

template = “””당신은 쉼표로 구분된 목록을 생성하는 유용한 조수입니다.
사용자가 카테고리를 전달하면 해당 카테고리에 쉼표로 구분된 목록으로 5개의 개체를 생성해야 합니다.
쉼표로 구분된 목록만 반환하고 그 이상은 반환하지 않습니다.”””
system_message_prompt = SystemMessagePromptTemplate.from_template(템플릿)
human_template = “{텍스트}”
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

chat_prompt = ChatPromptTemplate.from_messages((system_message_prompt, human_message_prompt))
체인 = LLMChain(
llm=ChatOpenAI(),
프롬프트=chat_prompt,
output_parser=CommaSeparatedListOutputParser()
)
chain.run(“색상”)
# >> (‘빨간색’, ‘파란색’, ‘녹색’, ‘노란색’, ‘주황색’)

랭체인 표현 언어(LCEL)

LangChain 표현 언어체인을 구성하고 즉시 스트리밍, 배치 및 비동기 지원을 제공하는 선언적 방법입니다. LCEL을 사용하면 LangChain을 더 쉽게 사용할 수 있습니다. LCEL은 본질적으로 Python 또는 TypeScript/Javascript를 사용하여 체인을 구축하는 것에 대한 높은 수준의 대안이므로 코드를 사용하여 구축할 때 사용하는 모든 기존 LangChain 생성자를 사용하여 체인을 구축할 수 있습니다.

인터렉티브 랭체인 선생님를 통해 LCEL에 대해 배울 수 있지만, 이를 위해서는 먼저 LangChain for Python을 설치해야 합니다. 버전에 따른 버그로 인해 Teacher를 실행할 수 없습니다. LCEL 표현식은 파이프 문자(|)를 사용하여 체인의 변수를 연결합니다. 예를 들어 기본 일반 체인다음과 같이 모델과 프롬프트를 사용합니다.

체인 = 프롬프트 | 모델

상황에 따라 다음 Python 프로그램을 고려해 볼 수 있습니다.

langchain.prompts에서 ChatPromptTemplate 가져오기
langchain.chat_models에서 ChatOpenAI 가져오기
모델 = ChatOpenAI()
프롬프트 = ChatPromptTemplate.from_template(“{foo}에 대한 농담을 들려주세요”)

체인 = 프롬프트 | 모델

chain.invoke({“foo”: “곰”})

출력(사이트에 제공됨)은 다음과 같습니다.

AIMessage(content=”곰은 왜 휴대전화를 사용하지 않나요?nn그들은 항상 끔찍한 “그리즐리” 수신을 받기 때문입니다!’, extra_kwargs={}, example=False)

요약하면 LangChain은 연결된 언어 모델과 데이터를 기반으로 생성적 AI 애플리케이션을 생성하는 강력한 방법을 제공합니다.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments