Spaces:
Sleeping
Sleeping
| from langgraph.graph import StateGraph, START, END | |
| from .func import ( | |
| State, | |
| trim_history, | |
| extract_transcript_and_comment, | |
| script_structure_analyzer, | |
| comment_insight_extractor, | |
| scientific_fact_finder, | |
| script_re_outline, | |
| script_writer_init, | |
| script_writer_single, | |
| should_continue_writing, | |
| script_writer_end, | |
| ) | |
| from langgraph.graph.state import CompiledStateGraph | |
| class AgentTranscript: | |
| def __init__(self): | |
| self.builder = StateGraph(State) | |
| def check_existed_comment(state: State): | |
| if not state["comment"]: | |
| return "scientific_fact_finder" | |
| else: | |
| return "comment_insight_extractor" | |
| def node(self): | |
| self.builder.add_node("trim_history", trim_history) | |
| self.builder.add_node( | |
| "extract_transcript_and_comment", extract_transcript_and_comment | |
| ) | |
| self.builder.add_node("script_structure_analyzer", script_structure_analyzer) | |
| self.builder.add_node("comment_insight_extractor", comment_insight_extractor) | |
| self.builder.add_node("scientific_fact_finder", scientific_fact_finder) | |
| self.builder.add_node("script_re_outline", script_re_outline) | |
| self.builder.add_node("script_writer_init", script_writer_init) | |
| self.builder.add_node("script_writer_single", script_writer_single) | |
| self.builder.add_node("script_writer_end", script_writer_end) | |
| def edge(self): | |
| self.builder.add_edge(START, "trim_history") | |
| self.builder.add_edge("trim_history", "extract_transcript_and_comment") | |
| self.builder.add_edge( | |
| "extract_transcript_and_comment", "script_structure_analyzer" | |
| ) | |
| self.builder.add_conditional_edges( | |
| "script_structure_analyzer", | |
| self.check_existed_comment, | |
| { | |
| "scientific_fact_finder": "scientific_fact_finder", | |
| "comment_insight_extractor": "comment_insight_extractor", | |
| }, | |
| ) | |
| self.builder.add_edge("comment_insight_extractor", "scientific_fact_finder") | |
| self.builder.add_edge("scientific_fact_finder", "script_re_outline") | |
| self.builder.add_edge("script_re_outline", "script_writer_init") | |
| # Conditional routing for script writing | |
| self.builder.add_conditional_edges( | |
| "script_writer_init", | |
| should_continue_writing, | |
| { | |
| "script_writer_single": "script_writer_single", | |
| "script_writer_end": "script_writer_end", | |
| }, | |
| ) | |
| self.builder.add_conditional_edges( | |
| "script_writer_single", | |
| should_continue_writing, | |
| { | |
| "script_writer_single": "script_writer_single", | |
| "script_writer_end": "script_writer_end", | |
| }, | |
| ) | |
| self.builder.add_edge("script_writer_end", END) | |
| def __call__(self) -> CompiledStateGraph: | |
| self.node() | |
| self.edge() | |
| return self.builder.compile() | |
| script_writer_agent = AgentTranscript()() | |