/
alexefan136
/
flowstack
Обзор
Документация
Войти
/
alexefan136
/
flowstack
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
core/engine/src/flows/review.py
76 строк
2 KB
Alexander Efanov
Обновление репозитория
15 июл 2026, 12:19
15 июл 2026, 12:19
76704c6
Код
Авторство
О чём код?
"""Review flow — критический обзор контента.""" from __future__ import annotations from typing import Any, AsyncIterator from src.agents import CriticAgent from src.primitives.flow import Flow async def run_review_flow(input_data: dict[str, Any]) -> AsyncIterator[dict[str, Any]]: """ Выполняет review flow: критический обзор контента. Flow состоит из одного шага: 1. CriticAgent — анализирует контент и предоставляет критический обзор Args: input_data: Входные данные, должно содержать поле 'content' или 'topic' Yields: События выполнения flow для SSE streaming """ critic = CriticAgent() # Шаг 1: Критический обзор со стримингом yield {"type": "agent_start", "agent": "critic"} full_output = "" total_tokens = 0 async for chunk in critic.run_stream(input_data): chunk_type = chunk.get("type") if chunk_type == "content": content = chunk.get("content", "") full_output += content yield { "type": "agent_message", "agent": "critic", "content": content, } elif chunk_type == "done": tokens = chunk.get("tokens_total", 0) total_tokens += tokens yield { "type": "agent_done", "agent": "critic", "output": full_output, "tokens": tokens, "model": chunk.get("model", ""), } elif chunk_type == "error": yield { "type": "error", "error": chunk.get("error", "Unknown error in critic"), "agent": "critic", } return # Финальное событие yield { "type": "flow_done", "flow_id": "review", "output": full_output, "tokens": total_tokens, } # Регистрация flow (используется в registry.py) review_flow = Flow( id="review", name="Review Flow", description="Критический обзор контента с выявлением проблем и рекомендациями", agents=["critic"], runner=run_review_flow, # ← Добавляем runner как атрибут )