runnable
LCEL에서의 runnable은 실행 가능한 컴포넌트를 의미합니다. 이는 LangChain에서 사용되는 특정 작업 단위를 캡슐화한 개념으로, 데이터 흐름의 각 단계를 담당하고 체인 또는 에이전트의 구성 요소로 작동할 수 있습니다.
01. RunnablePassthrough
RunnablePassthrough 는 데이터를 전달하는 역할을 합니다. 이 클래스는 invoke() 메서드를 통해 입력된 데이터를 그대로 반환 합니다.
1) Runnable Passthrough란?
이는 데이터를 변경하지 않고 파이프라인의 다음 단계로 전달하는 데 사용될 수 있습니다.
RunnablePassthrough 는 다음과 같은 시나리오에서 유용할 수 있습니다.
- 데이터를 변환하거나 수정할 필요가 없는 경우
- 파이프라인의 특정 단계를 건너뛰어야 하는 경우
- 디버깅 또는 테스트 목적으로 데이터 흐름을 모니터링해야 하는 경우
이 클래스는 Runnable 인터페이스를 구현하므로, 다른 Runnable 객체와 함께 파이프라인에서 사용될 수 있습니다.
2) 데이터 전달하기
RunnablePassthrough 는 입력을 변경하지 않고 그대로 전달하거나, 추가 키를 더하여 전달할 수 있습니다.
일반적으로 RunnableParallel 과 함께 사용되어 데이터를 맵의 새로운 키에 할당하는 데 활용됩니다.
RunnablePassthrough() 를 단독으로 호출하면 단순히 입력을 받아 그대로 전달합니다.
assign과 함께 호출된 RunnablePassthrough(RunnablePassthrough.assign(...))는 입력을 받아 assign 함수에 전달된 추가 인자를 더합니다.
RunnableParallel 클래스를 사용하여 병렬로 실행 가능한 작업을 정의 합니다.
passed 속성에는 RunnablePassthrough 인스턴스를 할당하여 입력을 그대로 반환하도록 설정합니다.
extra 속성에는 RunnablePassthrough.assign() 메서드를 사용하여 입력의 "num" 값에 3을 곱한 결과를 "mult" 키에 할당하는 작업을 정의합니다.
modified 속성에는 람다 함수를 사용하여 입력의 "num" 값에 1을 더하는 작업을 정의합니다.
runnable.invoke() 메서드를 호출하여 {"num": 1} 입력으로 병렬 작업을 실행합니다.
### 사용 코드 (예시)
from langchain_core.runnables import RunnableParallel, RunnablePassthrough
runnable = RunnableParallel(
# 전달된 입력을 그대로 반환하는 Runnable을 설정합니다.
passed=RunnablePassthrough(),
# 입력의 "num" 값에 3을 곱한 결과를 반환하는 Runnable을 설정합니다.
extra=RunnablePassthrough.assign(mult=lambda x: x["num"] * 3),
# 입력의 "num" 값에 1을 더한 결과를 반환하는 Runnable을 설정합니다.
modified=lambda x: x["num"] + 1,
)
# {"num": 1}을 입력으로 Runnable을 실행합니다.
runnable.invoke({"num": 1})
'LLM' 카테고리의 다른 글
[LLM] openaieval 활용해서 LLM 모델 평가하기 (4) | 2024.10.27 |
---|---|
[LLM] LLM for Financial Research Paper List: Read and To-Read (6) | 2024.10.24 |
[LLM] Tools, Toolkits, Tool Binding (2) | 2024.10.17 |
[LLM] Agent Based System (0) | 2024.10.17 |
[LLM] LLM Agent (1) | 2024.10.16 |