It looks like the MultiPromptChain only picks the prompt dynamically based on the inputs (or maybe I’m off). On the flip side, the RunnableBranch object is more versatile. It lets you route to various chains, where each chain can have its own customized prompt. But that’s not all – you can also have a personalized retriever (in a RAG scenario) and different output parsers for each chain.