feat: workflow和chat分离
1,增加了创建workflow的页面 2.删除了event
This commit is contained in:
+38
-41
@@ -42,9 +42,12 @@ async def create_workflow(
|
||||
command=request.command,
|
||||
)
|
||||
|
||||
# 将需求发送给意识节点去处理构建
|
||||
global_workflow_manager = ray_actor_hook(
|
||||
"global_workflow_manager"
|
||||
).global_workflow_manager
|
||||
await global_workflow_manager.create_trace.remote(trace_id)
|
||||
|
||||
consciousness_node = ray_actor_hook("consciousness_node").consciousness_node
|
||||
# 可以异步通知意识节点开始与用户在特定 Trace ID 下对话
|
||||
consciousness_node.start_workflow_design.remote(trace_id, request.command)
|
||||
|
||||
return {"trace_id": trace_id, "status": "creating"}
|
||||
@@ -59,6 +62,39 @@ async def get_workflow_list(token_data: TokenData = Depends(Accessor.get_current
|
||||
return {"workflows": workflows}
|
||||
|
||||
|
||||
@workflow_router.get("/sse/{trace_id}")
|
||||
async def get_workflow_sse(trace_id: str, request: Request):
|
||||
global_workflow_manager = ray_actor_hook(
|
||||
"global_workflow_manager"
|
||||
).global_workflow_manager
|
||||
|
||||
async def event_generator():
|
||||
try:
|
||||
while True:
|
||||
if await request.is_disconnected():
|
||||
break
|
||||
message = await global_workflow_manager.get_pending.remote(trace_id)
|
||||
if message:
|
||||
yield f"data: {message}\n\n"
|
||||
else:
|
||||
await asyncio.sleep(0.5)
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
|
||||
return StreamingResponse(event_generator(), media_type="text/event-stream")
|
||||
|
||||
|
||||
@workflow_router.post("/reply/{trace_id}")
|
||||
async def post_workflow_reply(trace_id: str, request: Request):
|
||||
data = await request.json()
|
||||
reply_msg = data.get("message", "")
|
||||
global_workflow_manager = ray_actor_hook(
|
||||
"global_workflow_manager"
|
||||
).global_workflow_manager
|
||||
await global_workflow_manager.put_received.remote(trace_id, reply_msg)
|
||||
return {"status": "ok"}
|
||||
|
||||
|
||||
@workflow_router.get("/{trace_id}")
|
||||
async def get_workflow_detail(
|
||||
trace_id: str, token_data: TokenData = Depends(Accessor.get_current_user)
|
||||
@@ -80,42 +116,3 @@ async def get_workflow_detail(
|
||||
"steps": steps,
|
||||
"context_blackboard": context.blackboard if context else {},
|
||||
}
|
||||
|
||||
|
||||
@workflow_router.get("/sse/{trace_id}")
|
||||
async def get_workflow_sse(trace_id: str, request: Request):
|
||||
"""
|
||||
用于与意识节点交互,获取工作流状态或设计阶段的问答消息
|
||||
"""
|
||||
global_workflow_manager = ray_actor_hook(
|
||||
"global_workflow_manager"
|
||||
).global_workflow_manager
|
||||
|
||||
async def event_generator():
|
||||
try:
|
||||
while True:
|
||||
if await request.is_disconnected():
|
||||
break
|
||||
message = await global_workflow_manager.get_pending.remote(trace_id)
|
||||
if message:
|
||||
yield f"data: {message}\n\n"
|
||||
else:
|
||||
await asyncio.sleep(0.5)
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
|
||||
return StreamingResponse(event_generator(), media_type="text/event-stream")
|
||||
|
||||
|
||||
@workflow_router.post("/reply/{trace_id}")
|
||||
async def post_workflow_reply(trace_id: str, request: Request):
|
||||
"""
|
||||
用于用户回复意识节点的提问(设计阶段或运行中的中断确认)
|
||||
"""
|
||||
data = await request.json()
|
||||
reply_msg = data.get("message", "")
|
||||
global_workflow_manager = ray_actor_hook(
|
||||
"global_workflow_manager"
|
||||
).global_workflow_manager
|
||||
await global_workflow_manager.put_received.remote(trace_id, reply_msg)
|
||||
return {"status": "ok"}
|
||||
|
||||
Reference in New Issue
Block a user