랭체인에서 데이터를 이동시키고 변형하는 핵심 도구이다.
쉽게 설명하자면 데이터 전달 우편배달부이다.
이는 입력을 변경하지 않거나, 추가 키를 더하여 전달할 수 있다.
이가 단독으로 호출되면, 단순히 입력을 받아 그대로 전달한다.
프롬프트 템플릿을 topic에 대해 2문장으로 설명해달라고 정의한다
chain을 구성할 때 topic을 RunnablePassthrough()로 지정한다
이제 chain.invoke("강아지")라고 입력하면
chain.invoke({"topic" : "강아지"})라고 하지 않아도
키 값에 "강아지"가 전달이 된다
topic에 대해 설명하게 프롬프트 템플릿을 생성한다.
기존의 방식은 변수를 딕셔너리로 명시해야 했다.
RunnablePassthrough는 invoke함수 내에 값만 직접 전달하면 된다.
기존 방식은 딕셔너리로 모든 키-값을 명시해야 했지만
Passthrough 방식은 값만 전달하면 된다.
기존 방식은 단순 연결,
Passthrough 방식은 구조화 되어있다.
여기서는 기존의 방식이 더 간단하지만
실제 사용할 때에는 Passthrough 방식이 훨씬 간단해진다.
한 두번 쓰고 말 거면 기존 방식이 나을 수 있지만
반복적으로 사용할 것이면 Passthrough 방식이 편할 수 있다.
반복되는 데이터를 가진 여러개의 체인을 구성할 때 차이가 난다.
topic만 바뀌는 두 개의 체인이 있을 때 기존 방식은 매번 값을 지정해주어야 하지만
Passthrough 방식은 반복되는 데이터는 놔두고 바뀌는 topic만 전달하면 된다.