ABAO77's picture
Add trim_history function and update lesson chat route to handle text and audio inputs
a4cb278
raw
history blame
1.3 kB
from langgraph.graph import StateGraph, START, END
from .func import State, trim_history, agent, tool_node
from langgraph.graph.state import CompiledStateGraph
from langgraph.checkpoint.memory import InMemorySaver
class LessonPracticeAgent:
def __init__(self):
pass
@staticmethod
def should_continue(state: State):
messages = state["messages"]
last_message = messages[-1]
if not last_message.tool_calls:
return "end"
else:
return "continue"
def node(self, graph: StateGraph):
graph.add_node("trim_history", trim_history)
graph.add_node("agent", agent)
graph.add_node("tools", tool_node)
return graph
def edge(self, graph: StateGraph):
graph.add_edge(START, "trim_history")
graph.add_edge("trim_history", "agent")
graph.add_conditional_edges(
"agent", self.should_continue, {"end": END, "continue": "tools"}
)
return graph
def __call__(self, checkpointer=InMemorySaver()) -> CompiledStateGraph:
graph = StateGraph(State)
graph: StateGraph = self.node(graph)
graph: StateGraph = self.edge(graph)
return graph.compile(checkpointer=checkpointer)
lesson_practice_agent = LessonPracticeAgent()