Как собрать бэкенд¶
Редактор рисует граф, проверяет его и отлаживает — но не исполняет ничего. За всем, чего он не умеет сам, он идёт на бэкенд, и бэкенд этот ваш: что пайплайн вообще может сделать в вашем продукте, знает только ваш код.
Дело тут не в том, как удобнее разложить файлы. Семантика исполнения — CEL,
фрейм, try/except, parallel, бюджет — живёт в ядре. Вторая её реализация
на JavaScript означала бы, что отладчик показывает не то, что произойдёт на
самом деле. Поэтому реализация одна, редактор — всего лишь её клиент, а
между ними — HTTP-контракт из семи эндпоинтов.
Здесь мы такой бэкенд и соберём. Это тот самый пример из README этого репозитория, разобранный в том порядке, в каком его писали: бот поддержки, который берёт готовый тикет, ищет ответ в базе знаний и либо отвечает сам, либо отдаёт тикет человеку.

Шаги¶
| Шаг | Что добавляем | На какой вопрос отвечает |
|---|---|---|
| 1. Ваши стадии | register_stage, спеки, события |
что пайплайн здесь вообще умеет |
| 2. Эндпоинты | FastAPI, настоящая Session, SSE |
как редактор до этого доберётся |
| 3. Что разрешено собирать | своя Policy для каждого вызова |
что сможет нарисовать тот, кому вы не полностью доверяете |
| 4. Во что обходится прогон | reserve: и charge() |
сколько ему разрешено израсходовать |
| 5. Чей это запрос | тарифы и ключ доступа | к кому что из перечисленного относится |
Первых двух шагов достаточно, чтобы поднять свой бэкенд. Последние три превращают его в площадку, где пайплайны может собирать кто-то ещё, — и прочитать их стоит, даже если второго клиента у вас никогда не будет. У фразы «реестр стадий глобальный» есть последствия.
Что понадобится¶
Если хочется сразу пощупать готовое:
git clone https://github.com/leo-need-more-coffee/stageflow-example
cd stageflow-example && pip install -r requirements.txt && python main.py
и редактор на
leo-need-more-coffee.github.io/stageflow-ui,
с адресом http://127.0.0.1:8765 в настройках подключения. Все скриншоты
дальше сняты именно с этой пары, запущенной локально.