LangChain은 대규모 언어 모델(LLM)의 기능을 활용하기 위해 개발된 강력한 최첨단 도구입니다.
이러한 LLM은 뛰어난 기능을 보유하고 있으며 다양한 작업을 효율적으로 처리할 수 있습니다. 그러나 그들의 강점은 심층적인 도메인 전문성보다는 일반적인 특성에 있다는 점에 유의해야 합니다. GPT-4가 도입된 이후 인기가 급격히 높아졌습니다.
LLM은 다양한 작업을 처리하는 데 탁월하지만 특정 답변을 제공하거나 심오한 도메인 지식이 필요한 작업을 처리하는 데 있어 한계에 직면할 수 있습니다. 예를 들어 LLM을 활용하여 질문에 답하거나 의학이나 법률과 같은 전문 분야에서 작업을 수행하는 것을 고려하십시오.
LLM은 이러한 분야에 대한 일반적인 질문에 확실히 응답할 수 있지만 전문 지식이나 전문 지식이 필요한 보다 상세하거나 미묘한 답변을 제공하는 데 어려움을 겪을 수 있습니다.
이는 LLM이 다양한 소스의 방대한 양의 텍스트 데이터에 대해 훈련되어 패턴을 학습하고 컨텍스트를 이해하며 일관된 응답을 생성할 수 있기 때문입니다. 그러나 그들의 교육은 일반적으로 해당 분야의 인간 전문가와 같은 정도로 영역별 또는 전문 지식 습득을 포함하지 않습니다.
따라서 LangChain은 LLM과 함께 광범위한 작업을 위한 귀중한 도구가 될 수 있지만 특정 상황에서는 여전히 심층 도메인 전문 지식이 필요할 수 있음을 인식하는 것이 중요합니다. 전문 지식을 갖춘 인간 전문가는 필요한 깊이, 미묘한 이해 및 LLM 단독의 기능을 넘어선 상황별 통찰력을 제공할 수 있습니다.
LangChain의 문서를 보거나 GitHub의 일반적인 사용 사례에 대한 보다 철저한 이해를 위한 리포지토리입니다. 이 번들의 더 큰 그림을 얻는 것이 좋습니다.
그것은 어떻게 작동 하는가?
LangChain의 목적과 작업을 이해하기 위해 실용적인 예를 살펴보겠습니다. 우리는 GPT-4가 인상적인 일반 지식을 가지고 있으며 광범위한 질문에 대한 신뢰할 수 있는 답변을 제공할 수 있다는 것을 알고 있습니다.
그러나 개인 문서, 책, PDF 파일 또는 독점 데이터베이스와 같은 자체 데이터에서 특정 정보를 원하는 경우에는 어떻게 해야 합니까?
LangChain은 우리가 대형 언어 모델 GPT-4와 같이 우리의 자체 데이터 소스에. 단순히 텍스트 스니펫을 채팅 인터페이스에 붙여넣는 것 이상입니다. 대신, 자체 데이터로 채워진 전체 데이터베이스를 참조할 수 있습니다.
원하는 정보를 얻으면 LangChain은 특정 조치를 취하는 데 도움을 줄 수 있습니다. 예를 들어 특정 세부 정보가 포함된 이메일을 보내도록 지시할 수 있습니다.
이를 달성하기 위해 우리는 LangChain을 사용하는 파이프라인 접근 방식을 따릅니다. 먼저 원하는 문서를 가져옵니다. 언어 모델 더 작은 덩어리로 참조하고 나눕니다. 그런 다음 이러한 청크는 임베딩으로 저장됩니다. 벡터 데이터베이스에서 텍스트의 벡터 표현.
이 설정을 통해 표준 파이프라인을 따르는 언어 모델 애플리케이션을 구축할 수 있습니다. 사용자가 초기 질문을 한 다음 언어 모델로 전송됩니다. 질문의 벡터 표현은 벡터 데이터베이스에서 유사성 검색을 수행하여 관련 정보 덩어리를 검색하는 데 사용됩니다.
그런 다음 이러한 청크는 언어 모델로 피드백되어 답변을 제공하거나 원하는 조치를 취할 수 있습니다.
LangChain은 벡터 저장소에서 자체 데이터를 참조할 수 있으므로 데이터를 인식하고 질문에 대답하는 것 이상의 조치를 취할 수 있으므로 진정성 있는 애플리케이션 개발을 용이하게 합니다. 티
그는 대규모 언어 모델이 항공편 예약, 송금 또는 세금 관련 문제 지원과 같은 작업을 처리할 수 있는 개인 지원 분야에서 다양한 실제 사용 사례를 엽니다.
또한 언어 모델이 전체 강의 계획서를 참조하고 학습 과정을 촉진할 수 있기 때문에 새로운 과목을 공부하고 학습하는 데 의미가 있습니다. 코딩, 데이터 분석 및 데이터 과학도 이러한 발전에 크게 영향을 받을 것으로 예상됩니다.
가장 흥미로운 잠재 고객 중 하나는 대규모 언어 모델을 고객 정보 또는 마케팅 데이터와 같은 기존 회사 데이터에 연결하는 것입니다. Meta의 API 또는 Google의 API와 같은 고급 API와의 이러한 통합은 데이터 분석 및 데이터 과학의 기하급수적인 발전을 약속합니다.
웹페이지 구축 방법(데모)
현재 Langchain은 Python 및 JavaScript 패키지로 제공됩니다.
Streamlit, LangChain 및 OpenAI GPT-3 모델을 활용하여 LangChain 개념을 구현하는 데모 웹 앱을 만들 수 있습니다.
그러나 먼저 Streamlit, LangChain 및 OpenAI를 포함한 몇 가지 종속성을 설치해야 합니다.
사전 요구 사항
합리화: 데이터 과학 관련 웹 애플리케이션을 만들기 위한 인기 있는 Python 패키지
오픈AI: OpenAI의 GPT-3 언어 모델에 대한 액세스가 필요합니다.
이러한 종속성을 설치하려면 cmd에서 다음 명령을 사용하십시오.
pip install streamlit
pip install langchain
pip install openai
패키지 가져 오기
OpenAI, LangChain 및 Streamlit과 같은 필수 패키지를 가져오는 것으로 시작합니다. 우리의 언어 모델 체인은 LangChain의 세 가지 클래스인 LLMChain, SimpleSequentialChain 및 PromptTemplate을 사용하여 정의 및 실행됩니다.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
기본 설정
그런 다음 Streamlit 구문을 사용하여 프로젝트의 구조적 기반을 마련했습니다. 우리는 앱에 "사실: 단순 순차 체인 사용"이라는 제목을 부여하고 앱의 영감을 준 GitHub 리포지토리에 대한 마크다운 링크를 포함했습니다.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
프런트엔드 위젯
간단한 Streamlit 구문을 사용하여 몇 가지 관련 정보로 앱을 설정했습니다.
# If an API key has been provided, create an OpenAI language model instance
if API:
llm = OpenAI(temperature=0.7, openai_api_key=API)
else:
# If an API key hasn't been provided, display a warning message
st.warning("Enter your OPENAI API-KEY. Get your OpenAI API key from [here](https://platform.openai.com/account/api-keys).\n")
프런트 엔드 위젯을 추가하려면
또한 사용자가 질문을 입력할 수 있도록 입력 위젯을 제공해야 합니다.
# Add a text input box for the user's question
user_question = st.text_input(
"Enter Your Question : ",
placeholder = "Cyanobacteria can perform photosynthetsis , are they considered as plants?",
)
모두 끝났습니다! 체인이 작동 중입니다!
우리는 함께 다양한 작업 체인을 사용합니다. SimpleSequentialChain
사용자의 쿼리에 응답합니다. 체인은 사용자가 선택하면 다음 순서로 수행됩니다. "Tell me about it"
버튼 :
if st.button("Tell me about it", type="primary"):
# Chain 1: Generating a rephrased version of the user's question
template = """{question}\n\n"""
prompt_template = PromptTemplate(input_variables=["question"], template=template)
question_chain = LLMChain(llm=llm, prompt=prompt_template)
# Chain 2: Generating assumptions made in the statement
template = """Here is a statement:
{statement}
Make a bullet point list of the assumptions you made when producing the above statement.\n\n"""
prompt_template = PromptTemplate(input_variables=["statement"], template=template)
assumptions_chain = LLMChain(llm=llm, prompt=prompt_template)
assumptions_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain], verbose=True
)
# Chain 3: Fact checking the assumptions
template = """Here is a bullet point list of assertions:
{assertions}
For each assertion, determine whether it is true or false. If it is false, explain why.\n\n"""
prompt_template = PromptTemplate(input_variables=["assertions"], template=template)
fact_checker_chain = LLMChain(llm=llm, prompt=prompt_template)
fact_checker_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain], verbose=True
)
# Final Chain: Generating the final answer to the user's question based on the facts and assumptions
template = """In light of the above facts, how would you answer the question '{}'""".format(
user_question
)
template = """{facts}\n""" + template
prompt_template = PromptTemplate(input_variables=["facts"], template=template)
answer_chain = LLMChain(llm=llm, prompt=prompt_template)
overall_chain = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain, answer_chain],
verbose=True,
)
# Running all the chains on the user's question and displaying the final answer
st.success(overall_chain.run(user_question))
question_chain
: 파이프라인의 첫 번째 단계인 사용자의 질문을 입력 및 출력으로 받습니다. 사용자의 쿼리는 체인의 템플릿 역할을 합니다.- 질문과 관련된 진술을 바탕으로
assumptions_chain
의 출력을 사용하여 가정의 글머리 기호 목록을 생성합니다.question_chain
입력으로. 그만큼LLMChain
과OpenAI
LangChain의 모델을 사용하여 진술을 구성했습니다. 사용자는 이 체인의 템플릿을 사용하여 명령문을 생성하기 위해 만들어진 가정 목록을 작성해야 합니다. - 의 출력을 기반으로
question_chain
과assumptions_chain
Walk Through California 프로그램,fact_checker_chain
글머리 기호 형식으로 어설션 목록을 생성합니다. 클레임은 다음을 사용하여 생성됩니다.OpenAI
모델과LLMChain
랭체인에서. 사용자는 각 주장이 정확한지 또는 부정확한지 판단하고 그러한 주장에 대한 정당성을 제공해야 합니다. - XNUMXD덴탈의
answer_chain
의 출력을 사용합니다.question_chain
,assumptions_chain
및fact_checker_chain
이전 체인에서 생성된 데이터를 사용하여 사용자의 질문에 대한 응답을 생성하기 위한 입력으로. 이 체인의 템플릿은 사용자가 생성된 팩트를 사용하여 첫 번째 쿼리에 응답하도록 요청합니다. - 이전 체인에서 생성된 정보를 기반으로 사용자의 문의에 대한 궁극적인 응답을 제공하기 위해 이러한 체인을 전체 체인에 통합합니다. 체인이 완료되면 다음을 사용합니다.
st.success()
사용자에게 솔루션을 보여줍니다.
결론
서로 다른 언어 모델 작업을 함께 연결하여 더 복잡한 파이프라인을 만들 수 있습니다. SimpleSequentialChain
LangChain의 모듈. 챗봇, 질문 및 답변 시스템, 언어 번역 도구를 비롯한 다양한 NLP 애플리케이션의 경우 이는 매우 유용할 수 있습니다.
LangChain의 탁월함은 사용자가 언어 모델링의 세부 사항보다는 현재 문제에 집중할 수 있게 해주는 추상화 능력에서 발견됩니다.
LangChain은 사전 훈련된 모델과 다양한 템플릿을 제공하여 정교한 언어 모델을 만드는 과정을 보다 사용자 친화적으로 만듭니다.
자체 데이터를 사용하여 언어 모델을 미세 조정하는 옵션을 제공하므로 언어 모델을 간단하게 사용자 정의할 수 있습니다. 이를 통해 주어진 작업에 대해 훈련된 모델을 능가하는 보다 정확한 도메인별 모델을 개발할 수 있습니다.
XNUMXD덴탈의 SimpleSequentialChain
모듈 및 기타 LangChain의 기능은 정교한 NLP 시스템을 신속하게 개발하고 배포하기 위한 효과적인 도구입니다.
댓글을 남겨주세요.