AiNewsV2 / graph /workflows.py
Phoenix21's picture
Modular code
7516245
from langgraph.graph import StateGraph, START, END
from state import NewsState, ArticleScraperState, BlogState
from nodes import (
search_ai_news,
parse_news_items,
scrape_article_content,
orchestrator,
llm_call,
synthesizer,
assign_workers
)
def create_news_search_workflow():
"""Create a workflow for searching and parsing AI news"""
workflow = StateGraph(NewsState)
# Add nodes
workflow.add_node("search_ai_news", search_ai_news)
workflow.add_node("parse_news_items", parse_news_items)
# Add edges
workflow.add_edge(START, "search_ai_news")
workflow.add_edge("search_ai_news", "parse_news_items")
workflow.add_edge("parse_news_items", END)
return workflow.compile()
def create_article_scraper_workflow():
"""Create a workflow for scraping article content"""
workflow = StateGraph(ArticleScraperState)
# Add node
workflow.add_node("scrape_article", scrape_article_content)
# Add edges
workflow.add_edge(START, "scrape_article")
workflow.add_edge("scrape_article", END)
return workflow.compile()
def create_blog_generator_workflow():
"""Create a workflow for generating the blog"""
workflow = StateGraph(BlogState)
# Add nodes
workflow.add_node("orchestrator", orchestrator)
workflow.add_node("llm_call", llm_call)
workflow.add_node("synthesizer", synthesizer)
# Add edges
workflow.add_edge(START, "orchestrator")
workflow.add_conditional_edges("orchestrator", assign_workers, ["llm_call"])
workflow.add_edge("llm_call", "synthesizer")
workflow.add_edge("synthesizer", END)
return workflow.compile()