24Arys11's picture
embracing langgraph; addapted LLMFactory, Args.LLMInterface, IAgent, Toolbox and agents.py; simplified graph: removed math and encryption agents while promoting the reasoner
4fb4269
raw
history blame
3.09 kB
from langchain_core.messages import AnyMessage, BaseMessage, AIMessage, HumanMessage
from langgraph.graph import START, END, StateGraph
from langgraph.graph.message import add_messages
from langgraph.prebuilt import ToolNode, tools_condition
from typing import Annotated, Any, Dict, List, Literal, Optional, TypedDict
import logging
from pathlib import Path
from args import Args
class State(TypedDict):
"""State class for the agent graph."""
initial_query: str
# messages: List[Dict[str, Any]]
messages: Annotated[list[AnyMessage], add_messages]
nr_interactions: int
final_response: Optional[str]
class Nodes:
"""
Collection of node functions for the agent graph.
"""
def manager_node(self, state: State) -> State:
"""
Orchestrates the workflow by delegating tasks to specialized nodes and integrating their outputs
"""
# TODO: To implement...
pass
def final_answer_node(self, state: State) -> State:
"""
Formats and delivers the final response to the user
"""
# TODO: To implement...
pass
def auditor_node(self, state: State) -> State:
"""
Reviews manager's outputs for accuracy, safety, and quality
"""
# TODO: To implement...
pass
def solver_node(self, state: State) -> State:
"""
Central problem-solving node that coordinates with specialized experts based on task requirements
"""
# TODO: To implement...
pass
def researcher_node(self, state: State) -> State:
"""
Retrieves and synthesizes information from various sources to answer knowledge-based questions
"""
# TODO: To implement...
pass
def reasoner_node(self, state: State) -> State:
"""
Performs logical reasoning, inference, and step-by-step problem-solving
"""
# TODO: To implement...
pass
def image_handler_node(self, state: State) -> State:
"""
Processes, analyzes, and generates information related to images
"""
# TODO: To implement...
pass
def video_handler_node(self, state: State) -> State:
"""
Processes, analyzes, and generates information related to videos
"""
# TODO: To implement...
pass
class Edges:
"""
Collection of conditional edge functions for the agent graph.
"""
def manager_edge(self, state: State) -> Literal["solver", "auditor", "final_answer"]:
"""
Conditional edge for manager node.
Returns one of: "solver", "auditor", "final_answer"
"""
# TODO: To implement...
pass
def solver_edge(self, state: State) -> Literal["manager", "researcher", "reasoner", "image_handler", "video_handler"]:
"""
Conditional edge for solver node.
Returns one of: "manager", "researcher", "encryption_expert", "math_expert", "reasoner", "image_handler", "video_handler"
"""
# TODO: To implement...
pass