Files
multi-agent-bidding/app/__pycache__/orchestrator.cpython-310.pyc
T

180 lines
11 KiB
Plaintext
Raw Normal View History

2026-04-12 01:55:34 +08:00
o
¸‰Úi[Aã@dZddlZddlZddlmZmZmZmZddlm Z m
Z
m Z m Z m
Z
mZmZmZmZmZddlmZddlmZddlmZdd lmZmZGd
d d ƒZdS) uX
规划Agent (Orchestrator) - æ„图ç†è§£ã€ä»»åŠ¡æ‹†åˆ†ã€ç«žæ ‡ç®¡ç†ã€ç»“果验è¯
éN)ÚDictÚListÚOptionalÚAnyé)
ÚTaskÚTaskTypeÚ
TaskStatusÚ TaskGraphÚBidÚ ExecutionÚAttemptÚValidationResultÚ UserRequestÚ AgentProfile)Ú TaskBoard)Ú BidEvaluator)ÚExecutionMonitorManager)Ú LLMClientÚdefault_clientc @s\eZdZdZ d0dedefddZdedefd d
Z d edede
fd d
Z de de
efddZ d0de de
edede
efddZde de
edefddZ d0de dedede
edef
ddZdede fddZdede de
efd d!„Zdede d"efd#d$„Zde ded%efd&d'„Zde d(edefd)d*„Zdedefd+d,„Z d-edefd.d/„Z!dS)1Ú Orchestratoru 规划Agent - 核心调度引擎NÚ
task_boardÚ
llm_clientcCs<||_|pt|_tƒ|_tƒ|_d|_d|_d|_ d|_
dS)réi) rrÚllmrÚ
bid_evaluatorrÚexecution_managerÚbidding_windowÚmax_retry_per_agentÚmax_total_attemptsÚmax_total_time)Úselfrr©r#úR/home/xian/.openclaw/workspace-coder/works/multi-agent-bidding/app/orchestrator.pyÚ__init__s

zOrchestrator.__init__Ú user_requestÚreturnc
CsFz |j |¡}|WSty"}z
|gdgdœWYd}~Sd}~ww)u
æ„图ç†è§£
Args:
user_request: 用户原始请求
Returns:
æ„图分æžç»“æžœ
F)ÚintentÚkeywordsÚneed_clarificationÚ questionsN)rÚanalyze_intentÚ Exception)r"r&r(Úer#r#r$Úunderstand_intent(s
üþzOrchestrator.understand_intentr(c
Cz=|j ||¡}tƒ}|D]-}| d¡dkrtjntj}t|| dd¡| di¡| di¡| dg¡d}| |¡q
|WSt y`}ztƒ}ttj
|d }| |¡|WYd
}~Sd
}~ww)
任务拆分
Args:
intent: æ„图分æžç»“æžœ
user_request: 用户原始请求
Returns:
TaskGraph
ÚtypeÚparallelÚ descriptionÚÚ input_schemaÚ
output_schemaÚ dependencies)r0r2Ú
input_datar5r6)r0r2N) rÚ split_tasksr
ÚgetrÚPARALLELÚSERIALrÚadd_taskr-Ú INDEPENDENT) r"r(r&Ú task_listÚgraphÚtÚ task_typeÚtaskr.r#r#r$r8@s0 



û þ
øzOrchestrator.split_tasksrBcCs$tj|_|j |¡|j |¡}|S)u•
å‘布任务
Args:
task: 任务
Returns:
能处ç†è¯¥ä»»åŠ¡çš„Agent列表
)r Ú PUBLISHEDÚstatusrr<Úfind_capable_agents)r"rBÚcapable_agentsr#r#r$Ú publish_taskis  zOrchestrator.publish_taskÚagentsÚwindow_secondsc
C|p|j}tj|_g}|D]X}zD|j | ¡| ¡¡}t|j|jt | 
dd¡ƒt | 
dd¡ƒt | 
dd¡ƒ| 
dd¡| 
dg¡| 
d g¡d
}|  |¡|j
 |¡Wq
tye} zWYd } ~ q
d } ~ ww|S)
收集竞标
Args:
task: 任务
agents: Agent列表
window_seconds: ç«žæ ‡çª—å£æ—¶é—´
Returns:
竞标列表
Úcapability_matchçà?Úestimated_timeé<Ú
confidenceÚapproachr3Ú
prerequisitesÚalternative_approaches)Útask_idÚagent_idrJrLrNrOrPrQN)rr ÚBIDDINGrDrÚ generate_bidÚto_dictr ÚidÚfloatr9ÚintÚappendrÚadd_bidr-)
r"rBrHrIÚwindowÚbidsÚagentÚbid_dataÚbidr.r#r#r$Ú collect_bids~s.



ø
 þzOrchestrator.collect_bidsr]cCsRdd|j ¡Dƒ}|j ||¡\}}}|r$|j |||j¡}|||fSddgfS)
评估竞标
Args:
task: 任务
bids: 竞标列表
Returns:
(selected_agent, selected_bid, backup_agents)
cSsi|]}|j|qSr#)rW©Ú.0Úar#r#r$Ú
<dictcomp>ºsÿz.Orchestrator.evaluate_bids.<locals>.<dictcomp>N)rÚ list_agentsrÚselect_best_bidÚget_backup_agentsrW)r"rBr]Ú agents_dictÚbest_bidÚ
best_agentÚscoresÚ
backup_agentsr#r#r$Ú
evaluate_bids¯s ÿÿ

zOrchestrator.evaluate_bidsr^r`rmc tjˆ_fdd}ˆjjˆ||fddfddfdddœd}ˆr4ˆD]}| |¡q,tjˆ_| |¡}ˆj  |¡|S) uî
分é…并执行任务
Args:
task: 任务
agent: 执行Agent
bid: 竞标书
backup_agents: 备选Agent
Returns:
Execution对象
c
sBzˆj | ¡|j¡}| d¡p|WSty }z|d}~ww)result)rÚ execute_taskrVrOr9r-)r@rdÚbror.)r"r#r$Ú execute_funcásÿz5Orchestrator.assign_and_execute.<locals>.execute_funccs ˆ |ˆ¡S©N)Ú_on_execution_complete©Úexec©r"rBr#r$Ú<lambda>îs z1Orchestrator.assign_and_execute.<locals>.<lambda>csˆ |ˆˆ¡Srs)Ú_on_execution_timeoutru©rmr"rBr#r$rxïócsˆ |ˆ|¡Srs)Ú_on_execution_error)rvr.rwr#r$rxðr{)ÚcompleteÚtimeoutÚerror)rBr^r`Ú callbacks)
r ÚASSIGNEDrDrÚcreate_monitorÚadd_backup_agentÚ EXECUTINGÚstartrÚ
add_execution) r"rBr^r`rmrrÚmonitorÚbackupÚ executionr#rzr$Úassign_and_executeËs$   ýü  
 zOrchestrator.assign_and_executer‰cCsptj|_| ||j¡}|jr/tj|_|j |j |j¡|j
|j }|jj |j
d||jddS| |||¡dS)u执行完æˆå›žè°ƒT)ÚsuccessÚdurationÚ
quality_scoreN)r Ú
VALIDATINGrDÚvalidate_resultroÚpassedÚ COMPLETEDrÚupdate_task_statusrWÚend_timeÚ
start_timeÚupdate_agent_statsrSÚscoreÚ_handle_validation_failure)r"r‰rBÚ
validationrŒr#r#r$rts 
üz#Orchestrator._on_execution_completec t|j|j|dd|j|jd}|j |¡|rS|j |j¡|jkrS|D].‰fdd|j  |j¡Dƒ}t
|ƒ|j krRt |jˆjddddd }| 
|ˆ|g¡d
Sq$tj|_|j |j|j¡d
S) u执行超时回调Fr~)rRrSr‰rÚ failure_typerŒcsg|]
}|jˆjkr|qSr#)rSrWrb©rˆr#r$Ú
<listcomp>)óz6Orchestrator._on_execution_timeout.<locals>.<listcomp>rKrMu 备选执行)rRrSrJrLrNrON)r
rWrSr“r”rÚ add_attemptÚget_attempt_countr Ú get_attemptsÚlenrr r ÚFAILEDrDr)r"r‰rBrmÚattemptÚattemptsr`r#r$rys4
ú úõz"Orchestrator._on_execution_timeoutrc CsRt|j|j|ddt ¡|jt|ƒd}|j |¡tj |_
|j  |j|j
¡dS)u执行错误回调Fr)rRrSr‰rr™ÚfeedbackN) r
rWrSÚtimer”Ústrrrr rDr)r"r‰rBrr#r#r$r|;s ù z Orchestrator._on_execution_errorr˜c s¸t|jˆjˆ|ddˆjˆjt |j¡d}|j  |¡fdd|j 
|j¡Dƒ}t |ƒ|j krMt
j|_|j |j|j¡t
j|_|j |j|j¡dSt
j|_|j |j|j¡dS)u处ç†éªŒè¯å¤±è´¥Fr˜)rRrSr‰r˜rr™csg|]
}|jˆjkr|qSr#)rSrb©r‰r#r$r\z;Orchestrator._handle_validation_failure.<locals>.<listcomp>N)r
rWrSr“r”ÚjsonÚdumpsÚissuesrrr rr ÚRETRYrDr)r"rBr‰r˜Úagent_attemptsr#r$r—Ls&

ø
z'Orchestrator._handle_validation_failureroc
Cstz!|j | ¡|¡}t| dd¡| dg¡t| dd¡ƒd}|WSty9}z tdddWYd }~Sd }~ww)
验è¯ç»“æžœ
Args:
task: 任务
result: 执行结果
Returns:
ValidationResult
rFrªrrK)rrT)rrN)rrrVrr9rXr-)r"rBroÚvalidation_datar˜r.r#r#r$rns 

ýþzOrchestrator.validate_resultc
Cs|j |¡}zá| |¡}| d¡r'd|_t | dg¡¡|_|j |¡|WS|  ||¡}||_
d|_|j |¡|  ¡}t ƒ}i}|D]”}i} |D]ˆ}
| 
|
¡} | sXtj|
_qJ| |
| ¡} | setj|
_qJ| |
| ¡\}
}}|
sutj|
_qJ| |