[NLP] LangChain으로 LLMs 기반 어플리케이션 만들기

Ellie·2023년 2월 22일
1

NLP

목록 보기
1/1

Large Language Model, LLMs

Large Language Models(LLMs)은 2020년 OpenAI의 GPT-3와 Google의 LaMDA 챗봇, open-source LLM인 BLOOM 그리고 최근 가장 많은 관심을 받고 있는 GPT-3.5 기반의 ChatGPT의 기본이 된다. 최근 이러한 LLMs의 큰 웨이브 속에서 LLMs을 활용한 다양한 어플리케이션이 등장하였고, LangChain도 이러한 흐름과 함께 2022년 10월에 등장하였다. LangChain은 아직 초기 단계이긴 하나, LLMs을 기반으로 어플리케이션을 만들 수 있는 기능들을 제공한다.

LangChain이란?

LangChain이란 간단히 말해 LLMs을 중심으로 하는 Framework이다. LangChain은 LLMs을 감싸 그 위에서 다양한 모듈(아래 참고)을 활용하여 복잡한 어플리케이션을 만들 수 있다. LangChain은 OpenAI, HugginFace Hub에서 제공하는 LLMs API를 연동할 수 있도록 제공한다.
특히, LangChain은 LLMs과 knowledge를 결합할 수 있도록 하여, 어플리케이션을 만들 때 발생하는 LLMs 재학습 비용을 절약하고, LLMs의 단점인 고립성(새로운 지식을 업데이트 하려면 재학습이 필요함)을 낮출 수 있도록 도와준다.

LangChain의 활용

LangChain을 활용하면 아래와 같은 어플리케이션을 만들 수 있다.

LangChain의 모듈

LangChain은 아래와 같이 다양한 모듈을 제공하는데, 이것들을 조합하여 복잡한 어플리케이션도 만들 수 있다. [Official Docs]

  • LLMs
    LangChain의 가장 기본 모듈. LLM 모델을 호출하고, input값의 예측값을 받아 오는 모듈

    from langchain.llms import OpenAI
    
    llm = OpenAI(temperature=0.9)
    text = "What would be a good company name a company that makes colorful socks?"
    print(llm(text))
    # Feetful of Fun
  • Prompt Templates
    보통 LLM 모델을 사용할 때, 사용자의 입력을 그대로 input으로 입력하지는 않는다. 템플릿을 미리 정의하고, 원하는 값을 넣을 수 있도록 도와주는 모듈

    from langchain.prompts import PromptTemplate
    
    prompt = PromptTemplate(
        input_variables=["product"],
        template="What is a good name for a company that makes {product}?",
    )
    print(prompt.format(product="colorful socks"))
    # What is a good name for a company that makes colorful socks?
  • Chains
    LLM 모델을 불러오고, 프롬프트 템플릿을 만들었다면 이제 이것들을 chain으로 연결할 수 있다. Chain은 LLM 모델 뿐만아니라 다른 chain들과 연결해주는 역할을 하는 모듈이다.

    from langchain.prompts import PromptTemplate
    from langchain.llms import OpenAI
    
    llm = OpenAI(temperature=0.9)
    prompt = PromptTemplate(
        input_variables=["product"],
        template="What is a good name for a company that makes {product}?",
    )
    from langchain.chains import LLMChain
    chain = LLMChain(llm=llm, prompt=prompt)
    
    chain.run("colorful socks")
    # -> '\n\nSocktastic!'
  • Agents

  • Memory

References

profile
A bit nerdy

0개의 댓글