Fade0510/CallCenterSummarizationAgent
0
1from langgraph.graph import StateGraph, END2from langchain_core.runnables import RunnableLambda3from src.agents import (4 CallState,5 IntakeAgent,6 TranscriptionAgent,7 SummarizationAgent,8 QualityScoringAgent,9 ModerationAgent,10 Router11)12from src.agents.Router import PostSummarizeRouter13 14def build_workflow():15 workflow = StateGraph(CallState)16 17 # Initialize agents18 intake_agent = IntakeAgent()19 transcription_agent = TranscriptionAgent()20 moderation_agent = ModerationAgent()21 summarization_agent = SummarizationAgent()22 quality_scoring_agent = QualityScoringAgent()23 router = Router()24 post_summarize_router = PostSummarizeRouter()25 26 # Add nodes27 workflow.add_node("intake", intake_agent)28 workflow.add_node("transcribe", transcription_agent)29 workflow.add_node("moderate", moderation_agent)30 summarize_node = RunnableLambda(summarization_agent).with_fallbacks(31 [RunnableLambda(SummarizationAgent.fallback)]32 )33 score_node = RunnableLambda(quality_scoring_agent).with_fallbacks(34 [RunnableLambda(QualityScoringAgent.fallback)]35 )36 workflow.add_node("summarize", summarize_node)37 workflow.add_node("score", score_node)38 39 # Define entry point40 workflow.set_entry_point("intake")41 42 # Add conditional edges from intake43 workflow.add_conditional_edges(44 "intake",45 router,46 {47 "transcribe": "transcribe",48 "summarize": "moderate",49 "end": END50 }51 )52 53 # Add standard edges54 workflow.add_edge("transcribe", "moderate")55 workflow.add_edge("moderate", "summarize")56 workflow.add_conditional_edges(57 "summarize",58 post_summarize_router,59 {"score": "score", "end": END},60 )61 workflow.add_edge("score", END)62 63 # Compile with a MemorySaver checkpointer when available.64 try:65 from langgraph.checkpoint.memory import MemorySaver66 67 return workflow.compile(checkpointer=MemorySaver())68 except Exception:69 return workflow.compile()70 