Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion integrations/langgraph/python/ag_ui_langgraph/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,14 @@ def __init__(self, *, name: str, graph: CompiledStateGraph, description: Optiona
self.active_run: Optional[RunMetadata] = None
self.constant_schema_keys = ['messages', 'tools']

def clone(self) -> "LangGraphAgent":
return LangGraphAgent(
name=self.name,
graph=self.graph,
description=self.description,
config=self.config,
)

def _dispatch_event(self, event: ProcessedEvents) -> str:
if event.type == EventType.RAW:
event.event = make_json_safe(event.event)
Expand Down Expand Up @@ -896,7 +904,7 @@ async def _handle_single_event(self, event: Any, state: State) -> AsyncGenerator
ToolCallStartEvent(
type=EventType.TOOL_CALL_START,
tool_call_id=tool_msg.tool_call_id,
tool_call_name=tool_msg.name,
tool_call_name=tool_msg.name or event.get("name", ""),
parent_message_id=tool_msg.id,
raw_event=event,
)
Expand Down
7 changes: 6 additions & 1 deletion integrations/langgraph/python/ag_ui_langgraph/endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,13 @@ async def langgraph_agent_endpoint(input_data: RunAgentInput, request: Request):
# Create an event encoder to properly format SSE events
encoder = EventEncoder(accept=accept_header)

# Clone the agent so each request gets its own isolated state.
# LangGraphAgent stores per-request state in self.active_run; sharing a
# single instance across concurrent requests corrupts that state.
request_agent = agent.clone()

async def event_generator():
async for event in agent.run(input_data):
async for event in request_agent.run(input_data):
yield encoder.encode(event)

return StreamingResponse(
Expand Down
Loading