Миграция — 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 + проверка типов.
- Ясность намерения — имя класса и есть тип шага.
- Лучше валидация — понятнее ошибки при отсутствующих полях.
- На будущее — новые фичи в первую очередь появляются в типизированных классах.
Смотрите также
Заголовок раздела «Смотрите также»- Обзор шагов — типизированные классы.
- JSON-сериализация