LCEL (язык выражений LangChain)
Объединяйте выполняемые компоненты оператором конвейера «|», используйте RunnablePassthrough и передавайте данные по цепочке потоком.
«LCEL (язык выражений LangChain)» — бесплатный урок AI Agents на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Что такое LCEL
LangChain Expression Language — современный способ составлять цепочки. Он использует оператор конвейера | для объединения объектов Runnable.
Этот подход заменил старые классы "Chain" (LLMChain, SequentialChain), которые теперь считаются устаревшими.
A Basic LCEL Chain
from langchain.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langchain.schema.output_parser import StrOutputParser
prompt = ChatPromptTemplate.from_template('Translate {text} to French.')
model = ChatOpenAI(model='gpt-4o-mini')
parser = StrOutputParser()
chain = prompt | model | parser
print(chain.invoke({'text': 'Hello, world!'}))RunnablePassthrough
Передаёт входные данные без изменений. Это удобно, когда нужно сохранить данные вместе с вызовом LLM:
from langchain_core.runnables import RunnablePassthrough
chain = (
{'context': retriever, 'question': RunnablePassthrough()}
| prompt
| model
| parser
)
chain.invoke('What is RAG?')RunnableParallel
Запускает несколько объектов Runnable параллельно; их результаты становятся словарём:
from langchain_core.runnables import RunnableParallel
chain = RunnableParallel(
summary=summary_prompt | model | parser,
keywords=keywords_prompt | model | parser
) | merge_prompt | model | parser
result = chain.invoke({'text': '...'})RunnableLambda
Оборачивает любую функцию Python в объект Runnable:
from langchain_core.runnables import RunnableLambda
def uppercase(text: str) -> str:
return text.upper()
chain = prompt | model | parser | RunnableLambda(uppercase)Streaming Through LCEL
for chunk in chain.stream({'text': 'Hello'}):
print(chunk, end='', flush=True)Пакетная и асинхронная обработка
Каждый объект Runnable поддерживает batch, ainvoke, astream:
results = chain.batch([
{'text': 'a'}, {'text': 'b'}, {'text': 'c'}
])
# All three run in parallel.Схемы
Добавьте аннотации типов — LCEL проверит входные и выходные данные:
from pydantic import BaseModel
class Input(BaseModel):
text: str
class Output(BaseModel):
translation: str
chain = chain.with_types(input_type=Input, output_type=Output)with_config и резервные варианты
Зафиксируйте модель, настройте повторные попытки и добавьте резервную модель:
fast = ChatOpenAI(model='gpt-4o-mini')
big = ChatOpenAI(model='gpt-4o')
chain = prompt | fast.with_fallbacks([big]) | parserwith_retry
class Chain:
def invoke(self, x):
return f'processed: {x}'
def with_retry(self, stop_after_attempt=3, wait_exponential_jitter=True):
print(f'Chain will retry up to {stop_after_attempt} times with jittered backoff')
return self
chain = Chain()
chain = chain.with_retry(stop_after_attempt=3, wait_exponential_jitter=True)
print(chain.invoke('input data'))Построение цепочки RAG
Соберём всё вместе:
rag_chain = (
{'context': retriever | format_docs, 'question': RunnablePassthrough()}
| rag_prompt
| model
| StrOutputParser()
)
def format_docs(docs):
return '\n\n'.join(d.page_content for d in docs)
rag_chain.invoke('What is in the handbook?')Отладка LCEL
Проверяйте промежуточные этапы:
chain.get_graph().print_ascii()
# Or run step-by-step:
for step in chain.stream_log({'text': '...'}):
print(step)Оператор конвейера
Какова роль RunnablePassthrough в LCEL?
Итоги
LCEL — основа современного LangChain. Освойте pipe, Parallel, Lambda и Passthrough — и сможете создавать любые цепочки.
Часто задаваемые вопросы
Урок «LCEL (язык выражений LangChain)» бесплатный?
Да — полный текст урока «LCEL (язык выражений LangChain)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.
Чему я научусь в уроке «LCEL (язык выражений LangChain)»?
Объединяйте выполняемые компоненты оператором конвейера «|», используйте RunnablePassthrough и передавайте данные по цепочке потоком. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Agents?
Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «LCEL (язык выражений LangChain)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Agents?
Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Архитектура LangChain: модели, промпты, цепочки
- Загрузчики, разделители и векторные хранилища
- LCEL (язык выражений LangChain)
- Создание цепочки RAG от начала до конца