पाठ 6 / 31

Chat Models और Pipe (LCEL) Chain

| operator से prompt, model और parser जोड़ें।

Pipe operator sequence बनाता है

LangChain का हर घटक जिसे invoke किया जा सके, Runnable है जिसकी वही methods हैं: invoke, batch, stream और async संस्करण। | operator (LangChain Expression Language, LCEL) runnables को RunnableSequence में जोड़ता है: हर चरण का आउटपुट अगले का इनपुट है। आम chain prompt | model | parser है। चूँकि interface वही है, आप tests में असली मॉडल को fake मॉडल से बदल सकते हैं, retries जोड़ सकते हैं, या stream कर सकते हैं, chain दोबारा लिखे बिना। Chat model messages लेकर AIMessage लौटाता है; StrOutputParser पाठ निकालता है।

prompt | model | parser, चलाकर

मैंने यह 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 है। FakeListChatModel तैयार उत्तर लौटाता है, इसलिए chain ऑफ़लाइन चलती है। नतीजा RunnableSequence है जिसके चरण prompt, मॉडल और parser हैं।

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.language_models.fake_chat_models import FakeListChatModel

prompt = ChatPromptTemplate.from_template("Translate to French: {text}")
model = FakeListChatModel(responses=["Bonjour le monde"])   # stands in for a real chat model
chain = prompt | model | StrOutputParser()

print(chain.invoke({"text": "Hello world"}))
print(type(chain).__name__)
print([type(step).__name__ for step in chain.steps] if hasattr(chain, "steps") else "")

Output:

Bonjour le monde
RunnableSequence
['ChatPromptTemplate', 'FakeListChatModel', 'StrOutputParser']

असली मॉडल लगाना (उदाहरण)

सिर्फ़ मॉडल की पंक्ति बदलती है; chain का बाक़ी हिस्सा वही। Provider package और environment में API key चाहिए; यहाँ चलाया नहीं गया।

from langchain_openai import ChatOpenAI          # pip install langchain-openai
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

prompt = ChatPromptTemplate.from_template("Translate to French: {text}")
model = ChatOpenAI(model="<model-name>", temperature=0)   # reads OPENAI_API_KEY
chain = prompt | model | StrOutputParser()
print(chain.invoke({"text": "Hello world"}))

त्वरित जाँच: LCEL में | operator क्या करता है?

  • Server शुरू करता है
  • Strings पर bitwise OR करता है
  • चरण हटाता है
  • Runnables जोड़ता है ताकि हर आउटपुट अगले चरण में जाए
Answer

Runnables जोड़ता है ताकि हर आउटपुट अगले चरण में जाए — यह runnables को RunnableSequence में जोड़ता है।