ABAO77's picture
Upload 67 files
d62d2dd verified
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)
@staticmethod
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()()