langchain
ffca5e7e - Allow config propagation, Add default lambda name, Improve ergonomics of config passed in (#10273)

Commit
2 years ago
Allow config propagation, Add default lambda name, Improve ergonomics of config passed in (#10273) Makes it easier to do recursion using regular python compositional patterns ```py def lambda_decorator(func): """Decorate function as a RunnableLambda""" return runnable.RunnableLambda(func) @lambda_decorator def fibonacci(a, config: runnable.RunnableConfig) -> int: if a <= 1: return a else: return fibonacci.invoke( a - 1, config ) + fibonacci.invoke(a - 2, config) fibonacci.invoke(10) ``` https://smith.langchain.com/public/cb98edb4-3a09-4798-9c22-a930037faf88/r Also makes it more natural to do things like error handle and call other langchain objects in ways we probably don't want to support in `with_fallbacks()` ```py @lambda_decorator def handle_errors(a, config: runnable.RunnableConfig) -> int: try: return my_chain.invoke(a, config) except MyExceptionType as exc: return my_other_chain.invoke({"original": a, "error": exc}, config) ``` In this case, the next chain takes in the exception object. Maybe this could be something we toggle in `with_fallbacks` but I fear we'll get into uglier APIs + heavier cognitive load if we try to do too much there --------- Co-authored-by: Nuno Campos <nuno@boringbits.io>
Author
Parents
Loading