Wiki: https://wikidocs.net/book/14314
Github: https://github.com/teddylee777/langchain-kr
Langchain 에서도 비동기 방식의 메소드를 제공해준다. Async 함수는 a prefix가 붙는다.
Async 함수
# 비동기 체인 객체의 'ainvoke' 메서드를 호출하여 'NVDA' 토픽을 처리합니다.
my_process = chain.ainvoke({"topic": "NVDA"})
# 비동기로 처리되는 프로세스가 완료될 때까지 기다립니다.
await my_process
Runnable Interface https://python.langchain.com/v0.1/docs/expression_language/interface/
RunableParallel
from langchain_core.runnables import RunnableParallel
# RunnableParallel 인스턴스를 생성합니다. 이 인스턴스는 여러 Runnable 인스턴스를 병렬로 실행할 수 있습니다.
runnable = RunnableParallel(
# RunnablePassthrough 인스턴스를 'passed' 키워드 인자로 전달합니다. 이는 입력된 데이터를 그대로 통과시키는 역할을 합니다.
passed=RunnablePassthrough(),
# 'extra' 키워드 인자로 RunnablePassthrough.assign을 사용하여, 'mult' 람다 함수를 할당합니다. 이 함수는 입력된 딕셔너리의 'num' 키에 해당하는 값을 3배로 증가시킵니다.
extra=RunnablePassthrough.assign(mult=lambda x: x["num"] * 3),
# 'modified' 키워드 인자로 람다 함수를 전달합니다. 이 함수는 입력된 딕셔너리의 'num' 키에 해당하는 값에 1을 더합니다.
modified=lambda x: x["num"] + 1,
)
# runnable 인스턴스에 {'num': 1} 딕셔너리를 입력으로 전달하여 invoke 메소드를 호출합니다.
runnable.invoke({"num": 1})
# 결과
# {'passed': {'num': 1}, 'extra': {'num': 1, 'mult': 3}, 'modified': 2}