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

Обработка ошибок

Все исключения библиотеки наследуются от HotswapError.

PromptFetchError

Промпт не удалось получить, а кеш SDK оказался пуст: например, холодный старт во время сбоя или промпт был удалён. Если цепочка уже собрана, она продолжает обслуживать запросы, а ошибка записывается в журнал один раз — до первого успешного получения промпта. Если собранной цепочки нет, исключение выбрасывается.

Восстановление остаётся на стороне приложения — например, запасная локальная цепочка:

from langfuse_hotswap import PromptFetchError

chain = factory.create("support-reply").with_fallbacks([local_chain], exceptions_to_handle=(PromptFetchError,))

ChainBuildError

Промпт получен, но собрать цепочку не удалось: provider указывает на модель, которой нет у фабрики, или отсутствует при нескольких моделях; конструктор модели отклонил значение из конфигурации; хук выбросил исключение; не установлен пакет для формата шаблона.

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

Пакетная обработка

batch, abatch, batch_as_completed и abatch_as_completed — унаследованные методы LangChain: они вызывают invoke для каждого элемента, а при return_exceptions=True возвращают ошибку для каждого элемента вместо выброса исключения.

Схемы

get_input_schema возвращает переменные промпта, когда Langfuse доступен, и разрешающую схему в противном случае. get_output_schema в случае ошибки возвращает схему по умолчанию.