पाठ 7 / 31

Runnables: Lambda, Parallel, Passthrough और Batch

सादे functions लपेटें और चरण साथ-साथ चलाएँ।

सादा कोड pipeline चरण के रूप में

हर चरण को LLM नहीं चाहिए। RunnableLambda किसी भी Python function को लपेटता है ताकि वह chain में बैठ सके। RunnableParallel (या chain के भीतर dict) एक ही इनपुट पर कई runnables चलाकर उनके परिणामों का dict लौटाता है, संदर्भ और सवाल साथ लाने के लिए उपयोगी। RunnablePassthrough इनपुट को बदले बिना आगे भेजता है, ताकि आप मूल सवाल गणना किए मानों के साथ रख सकें। batch chain को कई इनपुट पर, जहाँ संभव हो समवर्ती रूप से, चलाता है। पूर्व- और पश्च-प्रसंस्करण के लिए runnables उपयोग करने से आपका तर्क एक chain में दिखता है और trace करना आसान रहता है।

Lambda, parallel और batch, चलाकर

मैंने यह Python virtual environment में langchain-core 1.6.6, langchain-text-splitters 1.1.2 और llama-index-core 0.14.25 के साथ ऑफ़लाइन चलाया। किसी API key या network call की ज़रूरत नहीं क्योंकि असली मॉडल की जगह fake मॉडल या खिलौना embedding है। Pipeline पाठ साफ़ करके शब्द गिनता है (3)। Parallel runnable साफ़ पाठ, शब्द-गणना और अछूता मूल एक dict में लौटाता है। batch तीन इनपुट सँभालकर [2, 4, 0] लौटाता है।

from langchain_core.runnables import RunnableLambda, RunnablePassthrough, RunnableParallel

clean = RunnableLambda(lambda s: s.strip().lower())
count = RunnableLambda(lambda s: len(s.split()))

pipeline = clean | count
print(pipeline.invoke("  Hello Big WORLD  "))

both = RunnableParallel(text=clean, words=clean | count, original=RunnablePassthrough())
print(both.invoke("  Hello Big WORLD  "))
print(pipeline.batch(["a b", "a b c d", ""]))

Output:

3
{'text': 'hello big world', 'words': 3, 'original': '  Hello Big WORLD  '}
[2, 4, 0]

त्वरित जाँच: RunnableParallel क्या लौटाता है?

  • उसी इनपुट पर चली हर शाखा के परिणामों का dict
  • सिर्फ़ पहला परिणाम
  • कुछ नहीं
  • प्रशिक्षित मॉडल
Answer

उसी इनपुट पर चली हर शाखा के परिणामों का dict — हर key एक शाखा का आउटपुट रखती है।