LangChain 공부 #1

Snoop So·2023년 8월 15일
1

LLM

  • Large Laguage Model
  • 엄청나게 똑똑한 컴퓨터라고 생각하면 됨
  • ChatGPT는 LLM의 일종임
  • Langchain이 LLM을 제공하냐고 하면 NO.
  • 랭체인은 LLM과의 인터렉션을 쉽게 도와줌

!

  • 당연히 chat과 연동하는 것도 가능함. 아래의 세가지 종류로 메세지가 구분됨
  • System Message: AI가 따라야 하는 세팅들
  • Human Message: 사람의 관점에서 보내진 메세지
  • AI Message: 사람과 상호작용하는 AI의 관점에서 보내진 메세지

참고할 만한 마인드맵
https://mm.tt/map/2747334464?t=HWe5qzpNir

Chains?

  • langchain 공홈에 나와있는 설명은 다음과 같음
  • 랭체인은 chained된 어플리케이션을 위한 체인 인터페이스다. ??
  • 다른 체인들을 포함한 calls들의 연결.
  • 와 설명을 들으니 더 모르겠다.
  • LangChain provides the Chain interface for such "chained" applications. We define a Chain very generically as a sequence of calls to components, which can include other chains. The base interface is simple:
class Chain(BaseModel, ABC):
    """Base interface that all chains should implement."""

    memory: BaseMemory
    callbacks: Callbacks

    def __call__(
        self,
        inputs: Any,
        return_only_outputs: bool = False,
        callbacks: Callbacks = None,
    ) -> Dict[str, Any]:
        ...
  • 암튼 예시를 찾아보니 chain이라는 것은 어쨌든 interface이고, sequentialChain은 이 체인들을 엮는 역할을 하는 개념인 듯 하다.
  • 추측으로는 아래에서 보여준 예시는 맨 처음 input으로 사람의 message를 받고, 그 이후에는 위 체인에서 나온 결과값을 전달받아 결과를 연속적으로 계산하는 것 같다.
!pip install -qU langchain openai
from langchain import OpenAI, PromptTemplate
from langchain.chains import LLMChain, LLMMathChain, TransformChain, SequentialChain, SimpleSequentialChain

OPENAI_API_KEY = "~~~~"
llm = OpenAI(temperature=0, openai_api_key=OPENAI_API_KEY)

template = """Your job is to come up with a classic dish from the area that the users suggests.
{user_location}

YOUR RESPONSE:
"""
prompt_template = PromptTemplate(input_variables=["user_location"], template=template)

location_chain = LLMChain(llm=llm, prompt=prompt_template)

print(prompt_template.template)
...

overall_chain = SimpleSequentialChain(chains=[location_chain, meal_chain, nutrients_nutrients], verbose=True)

review = overall_chain.run("Korea")

print(review)

Prompt

  • prompt template이라는 것이 있음
  • prompt를 재생산하는 방법임
  1. llm 에게 줄 intructions
  2. llm에게 더 나은 응답을 생산할 수 있게 도와주는 몇가지 예시들
  3. llm에게 할 질문
    요런 것들이 템플릿의 구성요소라 할 수 있음!

0개의 댓글