Chains

LangChain에서는 LLM으로 간단한 출력만 얻는 기능 외에 프롬프팅이나 채팅 이력 관리, 서비스 플로우 분기 등 더 복잡한 어플리케이션의 구성을 위해서 Chain을 제공합니다. Chain은 하위 컴포넌트들을 순차적으로 호출하며 Chain 자체가 다른 Chain의 하위 컴포넌트가 될 수도 있습니다.

언어 모델을 사용하는 가장 간단한 LLMChain은 LLM과 프롬프트를 이용하며, ConversationChain은 LLM과 메모리를 이용합니다. 그 외에도 API 호출을 위한 APIChain, QA 관련 Chain들, SQL이나 VectorDB와 연동을 위한 Chain, 요약이나 편향성 이슈 대처를 위한 Chain 등 다양하게 지원하며, 필요한 Chain은 직접 만들 수도 있습니다.

Chain은 비동기 호출을 지원하고 다양한 출력 형태를 설정할 수 있으며, JSON으로 저장이 가능하기 때문에 LangChainHub에서 불러와서 사용도 가능하지만 아직까지 그리 활성화 되어 있지는 않은 것으로 보입니다.

서비스 로직 구현을 위한 플로우 제어 체인으로는 Chain을 순차적으로 연결하는 SequentialChain과 동적으로 다음 체인을 어떤 것을 사용할지 결정하는 RouterChain이 있습니다. RouterChain에서는 연결된 Chain 중 어느 경로를 선택할지를 LM 또는 임베딩 모델과 다음 체인의 description을 이용해 결정하며, 이것이 LangChain의 워크플로우 구성의 가장 큰 특징일 것으로 보입니다.

추가적으로 파이썬 함수 기반의 데이터 변환을 위한 TransformChain도 지원하며, Document 기반의 LM 질의를 위한 context 구성을 위해 아래의 Chain을 제공합니다.