https://youtu.be/kP7hyU_idaM?si=YoLL_fxmFK6qQWv7

LCEL

랭체인은 여러 컴포넌트를 | 연산자로 연결해 파이프라인을 구성하는 기본 구조를 갖고 있음. 이 구조를 체인이라고 할 수 있다. 체인을 실행하면 내부 컴포넌트들이 순차적으로 동작한다.

또한 LCEL로 만들어진 체인도 하나의 컴포넌트로 인식된다.

이렇게 만들어진 체인은 독립적인 입출력 기능을 갖게 된다.(함수가 된다.) 입출력을 위해 사용가능한 메서드로

.invoke(),

💡 invoke()는 접두사 a가 없지만, 그래도 비동기로 동작한다.

.batch(), ⇒ 멀티 인풋, 멀티 아웃풋

.stream() , ⇒ llm의 출력을 토큰 단위로 출력하고 싶을 때 사용

astream() 등이 있음.

비동기 함수 (a 접두사): ainvoke, abatch, astream과 같이 함수명 앞에 a가 붙으면 해당 메소드의 비동기 구현을 의미함.

입출력 파서

파서의 종류에는 JSON, XML등 다양한 파서를 통해 자연어의 입출력을 구조화된 데이터로 변환할 수 있다. 파이프 연산자를 이용해 체인에 parser를 추가할 수 있음.

chain = prompt | llm | output_parser

Runnable

langchain에서 사용하는 ‘실행가능한’ 인터페이스이다. 모든 실행가능한 langchain컴포넌트는 이 Runnable인터페이스를 구현하고 있고, 위의 invoke, batch, straem.. 등을 이용한 일관적인 사용도 가능함.