Files
assist/src/agent/__pycache__/tool_manager.cpython-310.pyc

102 lines
12 KiB
Plaintext
Raw Normal View History

o
<00><0F>iz@<00>@s`dZddlZddlZddlmZmZmZmZmZddl m Z ddl
Z
e<01> e <0C>Z Gdd<06>d<06>ZdS)u3
工具管理器
负责管理和执行各种工具
<EFBFBD>N)<05>Dict<63>List<73>Any<6E>Optional<61>Callable)<01>datetimec @sReZdZdZdd<03>Zdd<05>ZdPdeded ee ee
ffd
d <0B>Z ded e fd d<0E>Z dede ee
fd e ee
ffdd<12>Zdede defdd<16>Zd ee ee
ffdd<18>Zded ee ee
ffdd<1A>Zdee ee
ffdd<1D>ZdQded ed e ee
ffd!d"<22>ZdRd$ed%ed&ed'ed e ee
ff
d(d)<29>Zd*ed e ee
ffd+d,<2C>ZdSd.ed/ed e ee
ffd0d1<64>ZdTd3ed4ed e ee
ffd5d6<64>ZdUd.ed8eed9ed e ee
ffd:d;<3B>Zd<ed=ed>e ee
fd e ee
ffd?d@<40>ZdVdedBed e ee
ffdCdD<64>ZdSdEedFedGed e ee
ffdHdI<64>ZdWdedKed e ee
ffdLdM<64>Zd e ee
ffdNdO<64>Z dS)X<> ToolManageru工具管理器cCsi|_i|_i|_|<00><03>dS<00>N)<04>toolsZtool_usage_stats<74>tool_performance<63>_register_default_tools<6C><01>self<6C>r<00>@/Users/macos/Desktop/tsp-assist/assist/src/agent/tool_manager.py<70>__init__s zToolManager.__init__cCs<>|<00>d|j<01>|<00>d|j<02>|<00>d|j<03>|<00>d|j<04>|<00>d|j<05>|<00>d|j<06>|<00>d|j<07>|<00>d|j<08>|<00>d |j <09>|<00>d
|j
<EFBFBD>t <0B> d t |j<0E><01>d <0C><03>d S)u注册默认工具<E5B7A5>search_knowledge<67>create_work_order<65>update_work_order<65>generate_responseZ analyze_dataZsend_notificationZ schedule_taskZ
web_searchZfile_operationZdatabase_queryu
已注册 u 个默认工具N)<0F> register_tool<6F>_search_knowledge_tool<6F>_create_work_order_tool<6F>_update_work_order_tool<6F>_generate_response_tool<6F>_analyze_data_tool<6F>_send_notification_tool<6F>_schedule_task_tool<6F>_web_search_tool<6F>_file_operation_tool<6F>_database_query_tool<6F>logger<65>info<66>lenr
r rrrr sz#ToolManager._register_default_toolsN<73>name<6D>func<6E>metadatacCs.||pidddd<04>|j|<t<01>d|<01><00><02>dS)u 注册工具rN<>)<05>functionr&<00> usage_count<6E> last_used<65> success_rateu注册工具: <20>r
r!r")rr$r%r&rrrr)s <0C>zToolManager.register_tool<6F>returncCs*||jvr|j|=t<01>d|<01><00><02>dSdS)u 注销工具u注销工具: TFr,)rr$rrr<00>unregister_tool5s
zToolManager.unregister_tool<6F> tool_name<6D>
parametersc
<00>s6<00>||jvrdd|<01>d<03>d<04>S|j|}t<01><02>}zM|dd7<||d<t<03>|d<00>r9|ddi|<02><01>Id H}n |ddi|<02><01>}t<01><02>|<00><05>}|<00>|d
|<06>t<07>d|<01>d |d <0C>d <0A><05>d
|||d<0E>WSt y<>}z)t<07>
d|<01>d|<07><00><04>t<01><02>|<00><05>}|<00>|d|<06>dt |<07>||d<10>WYd }~Sd }~ww)u 执行工具Fu工具 'u ' 不存在)<02>success<73>errorr)<00>r*r(NTu' 执行成功,耗时: z.2fu秒)r1<00>result<6C>execution_time<6D>toolu' 执行失败: )r1r2r5r6r) r
r<00>now<6F>asyncio<69>iscoroutinefunction<6F> total_seconds<64>_update_tool_performancer!r"<00> Exceptionr2<00>str)rr/r0r6<00>
start_timer4r5<00>errr<00> execute_tool=s@<02>

<06>
<08><12><08><02>zToolManager.execute_toolr1r5cCs<>||jvrdddddd<03>|j|<|j|}|dd7<|d|7<|d|d|d<|r9|dd7<|d|d|d <|d |j|d <d
S) u更新工具性能统计rr')<05>total_executions<6E>successful_executions<6E>
total_time<EFBFBD>avg_execution_timer+rAr3rCrDrBr+N)r r
)rr/r1r5<00>perfrrrr;ns
 <0C>
z$ToolManager._update_tool_performancecCs<>g}|j<00><01>D]7\}}||d|d|dr|d<00><02>nd|dd<06>}||jvr9|j|}|<04>|d|dd <09><02>|<01>|<04>q|S)
u获取可用工具列表r&r)r*Nr+<00>r$r&r)r*r+rDrA)rDrA)r
<00>items<6D> isoformatr <00>update<74>append)rZ
tools_infor$r6<00> tool_inforErrr<00>get_available_tools<6C>s <06>
<08> zToolManager.get_available_toolscCsf||jvrdS|j|}||d|d|dr|d<00><01>nd|dd<06>}||jvr1|<03>|j|<00>|S)u获取工具信息Nr&r)r*r+rF)r
rHr rI)rr/r6r"rrr<00> get_tool_info<66>s

<06>
zToolManager.get_tool_info<66>
tool_usagecCs@|D]}|<02>d<01>}||jvr|j|d|<02>dd<04>7<qdS)u更新工具使用统计r6r)<00>countr3N)<02>getr
)rrN<00>usager/rrr<00>update_usage_stats<74>s 

<02><04>zToolManager.update_usage_stats<74><00>query<72>top_kc
<00>st<00>zddlm}|<04>}|<05>||<02>}||t|<06>d<03>WSty9}zt<05>d|<07><00><02>dt|<07>iWYd}~Sd}~ww)u搜索知识库工具<E5B7A5>)<01>KnowledgeManager<65>rT<00>resultsrOu搜索知识库失败: r2N)Z knowledge_base.knowledge_managerrWrr#r<r!r2r=)rrTrU<00>kwargsrW<00>knowledge_managerrYr?rrrr<00>s<02>  <08><08><02>z"ToolManager._search_knowledge_tool<6F>medium<75>title<6C> description<6F>category<72>priorityc
<00>sl<00>zddlm}|<06>}|<07>||||<04>}|WSty5} zt<04>d| <09><00><02>dt| <09>iWYd} ~ Sd} ~ ww)u创建工单工具rV<00><01>DialogueManageru创建工单失败: r2N)<07>dialogue.dialogue_managerrbrr<r!r2r=)
rr]r^r_r`rZrb<00>dialogue_managerr4r?rrrr<00>s<02> <08><02>z#ToolManager._create_work_order_tool<6F> work_order_idc
<00>s~<00>zddlm}|<03>}|j|fi|<02><01>}||t|<02><04><00>d<03>WSty>}zt<06>d|<06><00><02>dt|<06>iWYd}~Sd}~ww)u更新工单工具rVra)r1reZupdated_fieldsu更新工单失败: r2N) rcrbr<00>list<73>keysr<r!r2r=)rrerZrbrdr1r?rrrr<00>s<02> 
<08><08><02>z#ToolManager._update_work_order_tool<6F><00>message<67>contextc
<00>sh<00>zddlm}|<04>}|<05>||<02>}|WSty3}zt<04>d|<07><00><02>dt|<07>iWYd}~Sd}~ww)u生成回复工具rV)<01>
QwenClientu生成回复失败: r2N)<07>core.llm_clientrkrr<r!r2r=)rrirjrZrk<00>
llm_clientr4r?rrrr<00>s<02>  <08><02>z#ToolManager._generate_response_tool<6F> last_7_days<79> data_type<70>
date_rangec
<00>s<><00>z4ddlm}|<04>}|dkr|<05><02>}|WS|dkr!|<05><03>}|WS|dkr,|<05><04>}|WSdd|<01><00>i}|WStyU}zt<06>d|<07><00><02>dt|<07>iWYd }~Sd }~ww)
u数据分析工具rV)<01>AnalyticsManager<65>daily_analytics<63>summaryZcategory_performancer2u不支持的数据类型: u数据分析失败: N) Zanalytics.analytics_managerrq<00>generate_daily_analytics<63>get_analytics_summary<72>get_category_performancer<r!r2r=)rrorprZrq<00>analytics_managerr4r?rrrr<00>s(<02> <08><08><0E><08><02>zToolManager._analyze_data_toolr"<00>
recipients<EFBFBD>notification_typec
<00><00><><00>z%|||t<00><01><00><02>d<01>}t<03>d|<01>d|<02><00><04>ddt<00><01><00>d<06><01><00>|d<07>WStyF}zt<03>d|<06><00><02>d t|<06>iWYd
}~Sd
}~ww) u发送通知工具)rirx<00>type<70> timestampu发送通知: u 给 TZnotif_<66> %Y%m%d_%H%M%S)r1Znotification_id<69>datau发送通知失败: r2N<> rr7rHr!r"<00>strftimer<r2r=)rrirxryrZZnotification_datar?rrrr s"<02>
<06><08><08><02>z#ToolManager._send_notification_tool<6F> task_name<6D> schedule_time<6D> task_datac
<00>rz) u调度任务工具)r<>r<>r<><00>
created_atu调度任务: u 在 TZ schedule_r})r1Z schedule_idr~u调度任务失败: r2Nr)rr<>r<>r<>rZZ schedule_datar?rrrr$s"<02>
<06><08><08><02>zToolManager._schedule_task_tool<6F><00> max_resultsc
<00>s<><00>z<1F>fdd<02>tt|d<03><02>D<00>}t<02>d<04><00><00><02><00>|t|<04>d<05>WSty@}zt<02>d|<05><00><02>dt|<05>iWYd}~Sd}~ww) u网络搜索工具c s<g|]}d|d<00><00>d|d<00><00>d<03><00>d|d<00><00>d<05><03>qS)u 搜索结果 r3zhttps://example.com/resultu这是关于 'u' 的搜索结果摘要 )r]<00>urlZsnippetr)<02>.0<EFBFBD>i<>rTrr<00>
<listcomp>Bs <0C> <04><06>z0ToolManager._web_search_tool.<locals>.<listcomp>rSu网络搜索: rXu网络搜索失败: r2N)<08>range<67>minr!r"r#r<r2r=)rrTr<>rZZsearch_resultsr?rr<>rr<s<02>
 <06> <08><08><02>zToolManager._web_search_tool<6F> operation<6F> file_path<74>contentc
<00>s<00>zjddl}|dkr,t|ddd<06><03> }|<06><02>}Wd<00>n1s wYd|dd<08>WS|d krSt|d
dd<06><03> }|<06>|<03>Wd<00>n1sGwYdd |d <0B>WS|d krd|j<04>|<02>}d||d <0A>WSdd|<01><00>iWSty<>}zt<07>d|<08><00><02>dt |<08>iWYd}~Sd}~ww)u文件操作工具rN<>read<61>rzutf-8)<01>encodingT)r1r<>r<><00>write<74>w)r1r<>r<><00>exists)r1r<>r<>r2u不支持的文件操作: u文件操作失败: )
<EFBFBD>os<6F>openr<6E>r<><00>pathr<68>r<r!r2r=) rr<>r<>r<>rZr<><00>fr<66>r?rrrrVs,<02>
<1C> <1C> <08><02>z ToolManager._file_operation_tool<6F>select<63>
query_typec
<00>s<><00>zLddlm}|<04><02><00>7}|dkr-|<05>|<01><01><04>}ddd<06>|D<00>t|<06>d<07>Wd<00>WS|<05>|<01>|<05><06>d|d <09>Wd<00>WS1sFwYWdStym}zt<08> d
|<07><00><02>d t
|<07>iWYd}~Sd}~ww) u数据库查询工具rV)<01>
db_managerr<EFBFBD>TcSsg|]}t|<01><01>qSr)<01>dict)r<><00>rowrrrr<>zsz4ToolManager._database_query_tool.<locals>.<listcomp>)r1r4rON)r1r<>u数据库查询失败: r2) <0B> core.databaser<65><00> get_session<6F>execute<74>fetchallr#<00>commitr<r!r2r=)rrTr<>rZr<><00>sessionr4r?rrrr ps(<02> 
 <04><12>
(<28> <08><02>z ToolManager._database_query_toolcCs<>t|j<01>iddddd<02>d<03>}|js|Sd}d}td<05>}d}|j<02><04>D]J\}}||d|<|d|kr<|d}||dd <|d
|krL|d
}||dd <|d |kr\|d }||dd <|d |krl|d }||dd<q"|S)u获取工具性能报告N)<04> most_used<65> most_reliable<6C>fastest<73>slowest)<03> total_toolsr rsr<00>infr rArsr<>r+r<>rDr<>r<>)r#r
r <00>floatrG)r<00>reportZmost_used_countZmost_reliable_rateZ fastest_timeZ slowest_timer/rErrr<00>get_tool_performance_report<72>s<<04><06>          <02>z'ToolManager.get_tool_performance_reportr )rS)r\)rh)rn)r")r<>)r<>)!<21>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__rr r=rrrrr<00>boolr.r@r<>r;rrLrMrR<00>intrrrrrrrrrr r<>rrrrrs,$ &1 (  (* $ r)r<><00>loggingr8<00>typingrrrrrr<00>json<6F> getLoggerr<72>r!rrrrr<00><module>s