Перейти к содержимому

Миграция — Legacy → типизированные шаги

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

У каждого legacy StepDescription есть to_typed_step():

legacy = StepDescription(number=1, title="Old", aim="Old step")
typed = legacy.to_typed_step() # → LLMStepDescription

Загрузка тоже конвертирует за вас: ReasoningChain.from_dict(data, use_typed_steps=True) (или from_dict_typed(data)) восстанавливает типизированные классы.

LegacyТипизированный
StepDescription(..., step_type=StepType.LLM)LLMStepDescription(...) (без step_type).
StepDescription(..., step_type=StepType.TOOL, step_config=ToolStepConfig(...))ToolStepDescription(config=ToolStepConfig(...)).
StepDescription(..., step_type=StepType.MEMORY, step_config=MemoryStepConfig(...))MemoryStepDescription(config=MemoryStepConfig(...)).
# Было
StepDescription(number=1, title="Analysis", aim="Analyze data",
reasoning_questions="What patterns exist?", step_type=StepType.LLM)
# Стало
LLMStepDescription(number=1, title="Analysis", aim="Analyze data",
reasoning_questions="What patterns exist?")
  • Типобезопасность — автодополнение в IDE + проверка типов.
  • Ясность намерения — имя класса и есть тип шага.
  • Лучше валидация — понятнее ошибки при отсутствующих полях.
  • На будущее — новые фичи в первую очередь появляются в типизированных классах.