ym88659208ym87991671
Язык выражений LangChain (LCEL) | Документация для разработчиков

Язык выражений LangChain (LCEL)

Обновлено 6 августа 2024

Язык выражений LangChain, или LCEL — это декларативный способ объединения компонентов LangChain. В основе LCEL лежит возможность поддержки внедрения прототипов в эксплуатацию без изменений в коде. Это касается как самых простых цепочек «промпт + LLM», так и самых сложных цепочек (есть примеры успешного запуска цепочек LCEL с сотнями шагов в производственно).

Преимущества LCEL

Первоклассная поддержка потоковой передачи

Для некоторых цепочек это означает, что токены передаются напрямую из LLM в потоковый парсер вывода. Вы получаете обратно проанализированные, инкрементальные фрагменты вывода с той же скоростью, с которой LLM передает необработанные токены.

Поддержка асинхронности

Любую цепочку, созданную с помощью LCEL, можно вызвать как с синхронным API (например, с помощью Jupyter-блокнота для прототипирования), так и с асинхронным API (например, на сервере GigaServe). Это позволяет использовать один и тот же код для прототипов и в эксплуатации, с отличной производительностью и возможностью обработки множества одновременных запросов на одном сервере.

Оптимизированное параллельное выполнение

Чтобы задержка была минимальной, шаги цепочки LCEL автоматически выполняются параллельно, если это допустимо (например, для извлечения документов из нескольких ретриверов). Это работает как в синхронных, так и в асинхронных интерфейсах.

Повторы и альтернативные пути

Настройка повторов и альтернативных путей для любой части цепочки LCEL. Это отличный способ для повышения надежности при масштабировании цепочек.

Доступ к промежуточным результатам

Для более сложных цепочек полезно иметь доступ к результатам промежуточных шагов до получения окончательного результата. Промежуточные результаты поддерживают потоковую передачи и работают на любом сервере GigaServe.

Схемы входных и выходных данных

Схемы входных и выходных данных предоставляют каждой LCEL-цепочке схемы Pydantic и JSONSchema, выведенные из структуры вашей цепочки. Схемы можно использовать для валидации входных и выходных данных. Схемы — это неотъемлемая часть GigaServe.

Бесшовная трассировка с LangSmith

По мере усложнения ваших цепочек становится все более важным понимать, что именно происходит на каждом шаге. С LCEL все шаги автоматически записываются в LangSmith для максимальной читаемости и отладки.

Бесшовное развертывание GigaServe

Любую цепочку, созданную с помощью LCEL, можно легко развернуть с помощью GigaServe.

Интерфейс Runnable

Чтобы упростить создание пользовательских цепочек, мы реализовали протокол "Runnable". Многие компоненты GigaChain реализуют протокол Runnable, включая чат-модели, LLM, парсеры вывода, ретриверы, шаблоны промптов и многое другое. Существуют также несколько полезных примитивов для работы с Runnable, которые описаны ниже.

Runnable — это стандартный интерфейс, который упрощает определение пользовательских цепочек, а также их вызов стандартным способом. Стандартный интерфейс включает:

  • stream — потоковая передача фрагментов ответа;
  • invoke — вызов цепочки с входными данными;
  • batch — вызов цепочки со списком входных данных.

Эти методы также имеют соответствующие асинхронные версии, которые для параллельного выполнения следует использовать с синтаксисом await библиотеки asyncio :

  • astream — потоковая передача блоков ответа асинхронно;
  • ainvoke — вызов цепочки с входными данными асинхронно;
  • abatch — вызов цепочки со списком входных данных асинхронно;
  • astream_log — потоковая передача промежуточных шагов по мере их выполнения, в дополнение к окончательному ответу;
  • astream_eventsbeta потоковая передача событий по мере их выполнения в цепочке (введено в gigachain-core версии 0.1.14).

Типы входных и выходных данных варьируются в зависимости от компонента:

КомпонентТип входных данныхТип выходных данных
ПромптСловарьPromptValue
Чат-модельОдна строка, список сообщений чата или PromptValueChatMessage
LLMОдна строка, список сообщений чата или PromptValueСтрока
Парсер выводаВывод LLM или чат-моделиЗависит от парсера
РетриверОдна строкаСписок документов
ИнструментОдна строка или словарь, в зависимости от инструментаЗависит от инструмента

Все Runnable предоставляют схемы данных для анализа входов и выходов:

  • input_schema — входная модель Pydantic, автоматически сгенерированная из структуры Runnable;
  • output_schema — выходная модель Pydantic, автоматически сгенерированная из структуры Runnable.
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.