Удалить langgraph_agent.py
This commit is contained in:
@@ -1,109 +0,0 @@
|
|||||||
"""
|
|
||||||
A minimal LangGraph agent implementation.
|
|
||||||
|
|
||||||
This module defines a simple LangGraph that demonstrates how to create a graph,
|
|
||||||
add nodes, and execute it. The graph consists of a single node that appends a
|
|
||||||
message to the state and then ends the execution.
|
|
||||||
|
|
||||||
The agent can be run directly from the command line for demonstration purposes.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from dataclasses import dataclass, field
|
|
||||||
from typing import List, Dict, Any
|
|
||||||
|
|
||||||
# Import LangGraph components
|
|
||||||
try:
|
|
||||||
from langgraph.graph import StateGraph, END
|
|
||||||
except ImportError as exc:
|
|
||||||
raise ImportError(
|
|
||||||
"langgraph is not installed. Please add 'langgraph' to your requirements.txt "
|
|
||||||
"and run 'pip install -r requirements.txt'."
|
|
||||||
) from exc
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class AgentState:
|
|
||||||
"""
|
|
||||||
The state that flows through the graph.
|
|
||||||
|
|
||||||
Attributes
|
|
||||||
----------
|
|
||||||
messages : List[str]
|
|
||||||
A list of messages that the agent accumulates during execution.
|
|
||||||
"""
|
|
||||||
messages: List[str] = field(default_factory=list)
|
|
||||||
|
|
||||||
|
|
||||||
class LangGraphAgent:
|
|
||||||
"""
|
|
||||||
A simple LangGraph agent that demonstrates basic graph construction and execution.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self) -> None:
|
|
||||||
"""
|
|
||||||
Initialize the graph and define its nodes and edges.
|
|
||||||
"""
|
|
||||||
self.graph = StateGraph(AgentState)
|
|
||||||
|
|
||||||
# Add nodes
|
|
||||||
self.graph.add_node("start", self._start_node)
|
|
||||||
self.graph.add_node("end", self._end_node)
|
|
||||||
|
|
||||||
# Define the entry point and transitions
|
|
||||||
self.graph.set_entry_point("start")
|
|
||||||
self.graph.add_edge("start", "end")
|
|
||||||
self.graph.add_edge("end", END)
|
|
||||||
|
|
||||||
# Compile the graph into a runnable function
|
|
||||||
self._graph_fn = self.graph.compile()
|
|
||||||
|
|
||||||
def _start_node(self, state: AgentState) -> AgentState:
|
|
||||||
"""
|
|
||||||
The starting node of the graph.
|
|
||||||
|
|
||||||
It appends a greeting message to the state's messages list.
|
|
||||||
"""
|
|
||||||
state.messages.append("Hello from LangGraph!")
|
|
||||||
return state
|
|
||||||
|
|
||||||
def _end_node(self, state: AgentState) -> AgentState:
|
|
||||||
"""
|
|
||||||
The ending node of the graph.
|
|
||||||
|
|
||||||
Currently, it performs no additional processing.
|
|
||||||
"""
|
|
||||||
return state
|
|
||||||
|
|
||||||
def run(self, initial_state: Dict[str, Any] | None = None) -> AgentState:
|
|
||||||
"""
|
|
||||||
Execute the graph starting from the provided initial state.
|
|
||||||
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
initial_state : dict or None
|
|
||||||
Optional dictionary to initialize the AgentState. If None, an empty state
|
|
||||||
is used.
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
AgentState
|
|
||||||
The final state after graph execution.
|
|
||||||
"""
|
|
||||||
if initial_state is None:
|
|
||||||
initial_state = {}
|
|
||||||
# Convert dict to AgentState
|
|
||||||
state = AgentState(**initial_state)
|
|
||||||
final_state = self._graph_fn(state)
|
|
||||||
return final_state
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
"""
|
|
||||||
Example usage of the LangGraphAgent.
|
|
||||||
|
|
||||||
Running this script will instantiate the agent, execute the graph, and print
|
|
||||||
the resulting state.
|
|
||||||
"""
|
|
||||||
agent = LangGraphAgent()
|
|
||||||
result = agent.run()
|
|
||||||
print("Final state messages:", result.messages)
|
|
||||||
Reference in New Issue
Block a user