Chains
•
랭체인에서 가장 핵심적인 개념 중 하나
◦
Chain의 뜻 그대로 데이터 -> LLM1 -> LLM2 … -> plugin -> output 등 다양한 방식으로 사용자가 원하는대로 모듈들을 엮을 수 있다.
•
간단한 애플리케이션의 경우 LLM을 단독으로 사용할 수 있지만 더 복잡한 애플리케이션의 경우 서로 또다른 기능을 수행하는 컴포넌트와 함께 LLM을 연결해야 한다.
•
LangChain은 이러한 컴포넌트를 "chain"으로 연결할 수 있는 인터페이스를 제공하고 컴포넌트에 대한 호출 시퀀스로 정의한다.
1. Input (입력)
•
설명
◦
사용자의 질문이나 요청이 입력된다.
◦
이 입력은 LLM(대형 언어 모델)에 의해 처리되기 전에 적절한 경로로 분류될 준비를 한다.
•
역할: 사용자로부터 받은 입력 데이터를 처리할 수 있도록 준비하는 단계
2. Router Chain (라우터 체인)
•
설명
◦
라우터 체인은 입력된 데이터를 특정 주제에 따라 분류하는 역할을 한다.
◦
주제(subject) 리스트에는 예를 들어 "수학", "역사" 등이 포함될 수 있다.
◦
모델은 입력이 특정 주제와 관련 있는지 판단한 후, 관련된 체인으로 데이터를 보낸다.
Subjects: 입력이 특정 주제(예: 수학, 역사 등)와 관련이 있는지 판단한다.
If the input is related to: 입력이 특정 주제와 연관되어 있으면 해당 주제의 체인으로 데이터를 전달한다.
Else: 입력이 어떤 주제에도 해당되지 않으면 기본 체인으로 데이터를 보낸다.
•
역할: 입력된 데이터를 분석하고, 적절한 주제별 체인으로 보내는 과정을 담당한다.
3. Destination Chain (목적지 체인)
•
설명
◦
라우터 체인에서 분류된 입력 데이터가 주제별 Destination Chain으로 전달된다.
◦
주제에 맞는 체인에서 해당 데이터를 처리하고, 최종 출력을 생성한다.
Subject: 입력이 특정 주제에 맞게 분류된 경우, 그 주제에 해당하는 체인에서 데이터를 처리한다.
None: 입력이 어떤 주제에도 속하지 않는 경우, 기본 체인(Default Chain)으로 처리된다.
•
역할: 주제별로 분류된 데이터를 처리하고, 최종 출력을 생성한다.
4. Output (출력)
•
설명: 주제별 체인에서 처리된 결과가 최종 출력으로 사용자에게 반환된다.
•
역할: 최종 결과를 사용자에게 전달하는 단계다.