File size: 1,930 Bytes
6d2b0f9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from langgraph.graph import StateGraph, END
from app.agent.state import AgentState
from app.agent.nodes import (
    generate_initial_questions,
    process_answers,
    analyze_round,
    generate_checklist,
    check_round_complete
)


def create_checklist_agent() -> StateGraph:
    """Создает LangGraph для чеклист-агента"""
    
    # Создаем граф с состоянием AgentState
    workflow = StateGraph(AgentState)
    
    # Добавляем ноды
    workflow.add_node("generate_initial_questions", generate_initial_questions)
    workflow.add_node("process_answers", process_answers)
    workflow.add_node("analyze_round", analyze_round)
    workflow.add_node("generate_checklist", generate_checklist)
    
    # Устанавливаем начальную точку
    workflow.set_entry_point("generate_initial_questions")
    
    # Добавляем переходы
    # После генерации вопросов - ждем ответы (END чтобы вернуть контроль)
    workflow.add_edge("generate_initial_questions", END)
    
    # После обработки ответов - анализируем раунд
    workflow.add_edge("process_answers", "analyze_round")
    
    # После анализа - либо ждем новые ответы, либо генерируем чеклист
    workflow.add_conditional_edges(
        "analyze_round",
        check_round_complete,
        {
            "wait_for_answers": END,  # Ждем следующие ответы
            "generate_checklist": "generate_checklist"  # Генерируем чеклист
        }
    )
    
    # После генерации чеклиста - конец
    workflow.add_edge("generate_checklist", END)
    
    return workflow.compile()


# Создаем экземпляр агента
checklist_agent = create_checklist_agent()