Files
assist/src/__pycache__/agent_assistant.cpython-310.pyc

146 lines
17 KiB
Plaintext
Raw Normal View History

o
E<><45>i<EFBFBD>U<00>@s<>dZddlZddlZddlZddlmZmZmZmZddl m Z ddl
m Z ddl m Z ddlmZe<01>e<11>ZGdd <09>d <09>Zd
d <0B>Zed krNe<02>e<14><00>dSdS) uJ
TSP Agent助手 - 简化版本
提供基本的Agent功能和工具管理
<EFBFBD>N)<04>Dict<63>Any<6E>List<73>Optional)<01>datetime)<01>
get_config)<01>
LLMManager)<01>service_managerc @s<>eZdZdZdd<03>ZdKdedeeeffdd<08>Zded e fd
d <0B>Z
d e eeeffd d <0A>Z dKdedeeefd eeeffdd<11>Z dedeeefdede def
dd<16>Zd eeeffdd<18>ZdLded e eeeffdd<1C>Zd eeeffdd<1E>Zd eeeffdd <20>Zd!e d e fd"d#<23>Zd e fd$d%<25>Zd e fd&d'<27>Zd eeeffd(d)<29>Zd eeeffd*d+<2B>Zd,eeefd e efd-d.<2E>Zd eeeffd/d0<64>Z 1  2dMd3ed4ed5eed6e d eeeff
d7d8<EFBFBD>Z 1  2dMd3ed4ed5eed6e d eeeff
d9d:<3A>ZdKdedeeefd eeeffd;d<<3C>Zd eeeffd=d><3E>Z d eeeffd?d@<40>Z!dAedBed eeeffdCdD<64>Z"dAedEed efdFdG<64>Z#dHedBed e eeeffdIdJ<64>Z$dS)N<>TSPAgentAssistantuTSP Agent助手cCsDt<00>}t|j<02>|_d|_g|_i|_i|_d|_d|_ t
<EFBFBD> d<03>dS)NTFuTSP Agent助手初始化完成) rr<00>llm<6C> llm_manager<65> is_agent_mode<64>execution_history<72>tools<6C>tool_performance<63>ai_monitoring_activeZmonitoring_thread<61>logger<65>info)<02>self<6C>config<69>r<00>=/Users/macos/Desktop/tsp-assist/assist/src/agent_assistant.py<70>__init__s zTSPAgentAssistant.__init__N<5F>name<6D>metadatac
Cspz||pidddd<03>|j|<t<01>d|<01>d<05><03>WdSty7}zt<01>d|<01>d|<04><00><04>WYd}~d Sd}~ww)
u 注册工具rN)<05>functionr<00> usage_count<6E> success_count<6E> last_used<65>工具 u 注册成功Tu 注册工具 <20> 失败: F<>rrr<00> Exception<6F>error)rr<00>funcr<00>errr<00> register_tool&s <0C><08><02>zTSPAgentAssistant.register_tool<6F>returnc
Csnz||jvr|j|=t<01>d|<01>d<02><03>WdSWdSty6}zt<01>d|<01>d|<02><00><04>WYd}~dSd}~ww)u 注销工具ru 注销成功TFu 注销工具 r Nr!)rrr%rrr<00>unregister_tool6s
<08><02>z!TSPAgentAssistant.unregister_toolc
Cs~z"g}|j<00><01>D]\}}|<01>||d|d|d|dd<05><05>q|WSty>}zt<04>d|<04><00><02>gWYd}~Sd}~ww)u获取可用工具列表rrrr)rrrrru获取工具列表失败: N)r<00>items<6D>appendr"rr#)rZ
tools_listr<00> tool_infor%rrr<00>get_available_toolsBs 
<EFBFBD><08><02>z%TSPAgentAssistant.get_available_tools<6C> tool_name<6D>
parametersc
<00>sz<00>z<>||jvrdd|<01>d<03>iWS|j|}|d}|dd7<t<01><02><00><03>|d<t<01><02>}z=t<04>|<04>r@|di|p9i<00><01>IdH}n |di|pFi<00><01>}|d d7<t<01><02>|<00><06>}|<00>|||d
|<07>d
|||d <0B>WWSty<>}z#t<01><02>|<00><06>}|<00>||t |<08>d |<07>d t |<08>||d <0A>WYd}~WSd}~wwty<>}zt
<EFBFBD> d|<01>d|<08><00><04>dt |<08>iWYd}~Sd}~ww)u 执行工具r#ru
不存在rr<00>rNrT)<04>success<73>result<6C>execution_timer-F)r0r#r2r-u 执行工具 r r) rr<00>now<6F> isoformat<61>asyncio<69>iscoroutinefunction<6F> total_seconds<64>_record_executionr"<00>strrr#) rr-r.r+r$<00>
start_timer1r2r%rrr<00> execute_toolSsH<02>



<EFBFBD><14><08><02>
<08><02>zTSPAgentAssistant.execute_toolr1r0r2c
Cs<>z(t<00><01><00><02>|||||d<01>}|j<03>|<06>t|j<03>dkr&|jdd<04>|_WdSWdStyC}zt<07>d|<07><00><02>WYd}~dSd}~ww)u记录执行历史)<06> timestampr-r.r1r0r2i<>i<18><><EFBFBD>Nu记录执行历史失败: ) rr3r4rr*<00>lenr"rr#)rr-r.r1r0r2Zexecution_recordr%rrrr8<00>s 
<06> <06><08><02>z#TSPAgentAssistant._record_executionc
Cs<>z7t|j<01>}tdd<02>|j<01><03>D<00><01>}tdd<02>|j<01><03>D<00><01>}|dkr(||dnd}|||t|d<06>|<00><05>d<07>WStyS}zt<07>d|<05><00><02>iWYd }~Sd }~ww)
u获取工具性能报告cs<00><00>|]}|dVqdS)rNr<00><02>.0<EFBFBD>toolrrr<00> <genexpr><3E><00><02>z@TSPAgentAssistant.get_tool_performance_report.<locals>.<genexpr>csr>)rNrr?rrrrB<00>rCr<00>d<00>)<05> total_tools<6C>total_executions<6E>total_successes<65> success_rateru 获取工具性能报告失败: N) r=r<00>sum<75>values<65>roundr,r"rr#)rrFrGrHrIr%rrr<00>get_tool_performance_report<72>s 
<08><08><02>z-TSPAgentAssistant.get_tool_performance_report<72>2<00>limitc
Cs\z|dkr|j| d<02>WS|jWSty-}zt<02>d|<02><00><02>gWYd}~Sd}~ww)u获取动作执行历史rNu获取动作历史失败: )rr"rr#)rrOr%rrr<00>get_action_history<72>s"<08><02>z$TSPAgentAssistant.get_action_historyc
Cslzt|j<01>}|j<01><02>dd|<01>d<03>d<04>WSty5}zt<04>d|<02><00><02>dt|<02>d<07>WYd}~Sd}~ww) u清空执行历史Tu
已清空 u 条执行历史)r0<00>messageu清空执行历史失败: F<>r0r#N)r=r<00>clearr"rr#r9)r<00>countr%rrr<00>clear_execution_history<72>s


<08><08><02>z)TSPAgentAssistant.clear_execution_historyc
Csvzd|j|jt|j<03>t|j<04>|<00><05>|<00><06>d<02>WSty:}zt<08> d|<01><00><02>dt
|<01>ddd<05>WYd}~Sd}~ww)u获取Agent状态T)r0<00> is_activerrFrGr<00> performanceu获取Agent状态失败: F)r0r#rVrN) r rr=rrr,rMr"rr#r9<00>rr%rrr<00>get_agent_status<75>s$<08> <12><08><02>z"TSPAgentAssistant.get_agent_status<75>enabledc
Cs\z||_t<01>d|r dnd<03><00><02>WdSty-}zt<01>d|<02><00><02>WYd}~dSd}~ww)u切换Agent模式u Agent模式: u启用u禁用Tu切换Agent模式失败: NF)r rrr"r#)rrZr%rrr<00>toggle_agent_mode<64>s<08><02>z#TSPAgentAssistant.toggle_agent_modec
CsZz|jsd|_t<01>d<02>WdSWdSty,}zt<01>d|<01><00><02>WYd}~dSd}~ww)u启动主动监控Tu主动监控已启动u启动主动监控失败: NF<4E>rrrr"r#rXrrr<00>start_proactive_monitoring<6E>s
<08><02>z,TSPAgentAssistant.start_proactive_monitoringc
CsNz d|_t<01>d<02>WdSty&}zt<01>d|<01><00><02>WYd}~dSd}~ww)u停止主动监控Fu主动监控已停止Tu停止主动监控失败: Nr\rXrrr<00>stop_proactive_monitoring<6E>s
<08><02>z+TSPAgentAssistant.stop_proactive_monitoringc
CsZz ddt<00><01><00><02>d<03>WSty,}zt<04>d|<01><00><02>dt|<01>d<06>WYd}~Sd}~ww)u运行主动监控检查Tu主动监控检查完成)r0rQr<u运行主动监控失败: FrRN)rr3r4r"rr#r9rXrrr<00>run_proactive_monitoring<6E>s
<08><08><02>z*TSPAgentAssistant.run_proactive_monitoringc
Cszz|<00><00>}|<00>d<01>}|t|<02>|<01>dd<03>|<00>|<01>d<04>}|WSty<}zt<06>d|<04><00><02>dt|<04>iWYd}~Sd}~ww)u运行智能分析<E58886>rIr)rZrecent_activityrI<00>recommendationsu运行智能分析失败: r#N) rMrPr=<00>get<65>_generate_recommendationsr"rr#r9)rrZrecent_executionsZanalysisr%rrr<00>run_intelligent_analysiss

<06><08><02>z*TSPAgentAssistant.run_intelligent_analysisrcCsDg}|<01>dd<02>}|dkr|<02>d<04>|<01>dd<06>}|dkr |<02>d<08>|S) u 生成建议rIrD<00>Zu0工具成功率较低建议检查工具实现rGr<00>
u3工具使用频率较低,建议增加工具调用)rbr*)rrrarIrGrrrrcs 
 
z+TSPAgentAssistant._generate_recommendationsc
CsRz dddt<00><01><00><02>d<03>WSty(}zt<04>d|<01><00><02>iWYd}~Sd}~ww)u获取LLM使用统计rg)<04>total_requests<74> total_tokens<6E>costZ last_updatedu获取LLM使用统计失败: N)rr3r4r"rr#rXrrr<00>get_llm_usage_stats(s
<08><08><02>z%TSPAgentAssistant.get_llm_usage_stats<74>adminTrQ<00>user_id<69> work_order_id<69>enable_proactivec
Cslzt<00><01>}t<00>|<05>|<05>|<00>||||<04><04>WSty5}zt<06>d|<06><00><02>dt|<06>iWYd}~Sd}~ww)u处理消息同步桥接u同步处理消息失败: r#N) r5<00>new_event_loop<6F>set_event_loop<6F>run_until_complete<74>process_message_agentr"rr#r9)rrQrlrmrn<00>loopr%rrr<00>process_message_agent_sync5s
<08><02>z,TSPAgentAssistant.process_message_agent_syncc
<00>s<><00>zAt<00>d|<01><00><02>d|<01>dt<02>|<00><04><00><01>d<04>}|j<05>|<05>IdH}g}d|vs+d|vr4|<07>dd d
d <0B><03>d ||||d t<08> <09><00>
<EFBFBD>d<0E>WSt yb}zt<00> d|<08><00><02>dt |<08>iWYd}~Sd}~ww)u处理消息 (实战化)uAgent收到消息: u用户消息: uW
请分析用户意图,并从工具列表中选择最合适的工具。工具列表: u.
请直接返回你的分析和建议响应。Nu工单u查询Z tool_callZsearch_work_order<65> suggested)<03>typerA<00>statusT<73> completed)r0<00>response<73>actionsrlrmrwr<u处理消息失败: r#)rr<00>json<6F>dumpsr,r <00>generater*rr3r4r"r#r9) rrQrlrmrn<00>prompt<70> response_textrzr%rrrrrAs*<02>
<08> <08><02>z'TSPAgentAssistant.process_message_agentc
CsXzt<00><01>}t<00>|<03>|<03>|<00>||<02><02>WSty+}z dt|<04>iWYd}~Sd}~ww)u执行工具同步桥接r#N)r5rorprqr;r"r9)rr-r.rsr%rrr<00>execute_tool_sync_s
<08><02>z#TSPAgentAssistant.execute_tool_syncc
CsVzt<00><01>}t<00>|<01>|<01>|<00><04><00>WSty*}z dt|<02>d<02>WYd}~Sd}~ww)u$触发示例动作同步桥接FrRN)r5rorprq<00>trigger_sample_actionsr"r9)rrsr%rrr<00>trigger_sample_actions_synchs
<08><02>z-TSPAgentAssistant.trigger_sample_actions_syncc
<00>sj<00>z|<00>dddi<01>IdH}dd|d<07>WSty4}zt<02>d|<02><00><02>d t|<02>d
<EFBFBD>WYd}~Sd}~ww) u触发示例动作Z sample_tool<6F>action<6F>testNTu示例动作已执行)r0rQr1u触发示例动作失败: FrR)r;r"rr#r9)rr1r%rrrr<>qs<02><08><08><02>z(TSPAgentAssistant.trigger_sample_actions<6E> file_path<74>filenamec <00>sL<00><01>zddl}ddl}t<02>d|<02><00><02>|<04>|<01>\}}|j<05>|<02>d<00><07>}|<00>||<07>}|s:t<02> d|<02><00><02>ddd<08>WSt<02>d |<02>d
t
|<08><01><00><04>t<02>d <0B>|<00> ||<02>IdH} t<02>d t
| <09><01>d <0A><03>d}
zt <0C> <0A>j} Wnty<>} zt<02> d| <0C><00><02>d} WYd} ~ nd} ~ wwt| <09>D]c\} }z@t<02>d| d<00>dt
| <09><01>d|<0E>dd<13>dd<14><00>d<15><07>| r<>| j|<0E>d<12>|<0E>d<16>|<0E>dd<18>|<0E>dd<1A>d<1B>|
d7}
nt<02>d<1C>Wq<>ty<>}zt<02> d| d<00>d|<0F><00><04>WYd}~q<>d}~wwt<02>d|<02>d |
<EFBFBD>d!<21><05>d"|
t
| <09>|d#<23>WSt<0F>y%} zt<02> d$| <0C><00><02>dt| <0C>d<08>WYd} ~ Sd} ~ ww)%u处理文件并生成知识库rNu#开始处理知识库上传文件: r/u#文件读取失败或内容为空: Fu无法读取文件内容rRu文件读取成功: u , 字符数=u.正在对文件内容进行 AI 知识提取...u!知识提取完成: 共提取出 u 个潜在条目u 无法获取知识库管理器: u正在保存知识条目 [<5B>/z]: <20>question<6F><00><00>...<2E>answer<65>category<72> 文档导入<E5AFBC>confidence_scoreg<65><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>r<>r<>r<>r<>u*知识库管理器不可用跳过保存u保存知识条目 u 时出错: u文件处理任务结束: u, 成功入库 u 条T)r0Zknowledge_countZtotal_extractedr<64>u处理文件失败: )<15>os<6F> mimetypesrr<00>
guess_type<EFBFBD>path<74>splitext<78>lower<65>_read_file_contentr#r=<00>_extract_knowledge_from_contentr <00> get_assistant<6E>knowledge_managerr"<00> enumeraterb<00>add_knowledge_entry<72>warningr9)rr<>r<>r<>r<>Z mime_type<70>_<>file_ext<78>content<6E>knowledge_entriesZ saved_countr<74>r%<00>i<>entryZ
save_errorrrr<00>process_file_to_knowledge<67>sf<02>  
<08><02>6

<06>

<04>&<08><02><08><08><02>z+TSPAgentAssistant.process_file_to_knowledger<65>c
Cs<>z4|dvr$t|ddd<04><03> }|<03><01>Wd<00>WS1swYWdS|dkr+WdS|dvr2Wd SWd
StyO}zt<03>d |<04><00><02>WYd}~d Sd}~ww) u读取文件内容)z.txtz.md<6D>rzutf-8)<01>encodingNz.pdfuPDF文件需要安装PyPDF2库)z.docz.docxu$Word文件需要安装python-docx库u不支持的文件格式u读取文件失败: r<>)<05>open<65>readr"rr#)rr<>r<><00>fr%rrrr<><00>s(<28><08><02>z$TSPAgentAssistant._read_file_contentr<74>c
<00>sv<00>z<>|dd<02>}t|<01>dkr|d7}d|<02>d|<03>d<06>}t<01>d<07>|jj|dd <09>IdH}|<05><05>}|<06>d
<EFBFBD>r:|d d<01>}|<06>d <0C>rE|d d<01>}|<06>d <0C>rP|dd<0E>}|<06><05>}zt<08> |<06>}Wntj
yut<01> d|dd<10><00>d<11><03>gYWSwg}|D]!} t | t <0A>r<>d| vr<>d| vr<>|<08>| d| d| <09>dd<15>dd<17><04>qz|WSty<>}
zt<01>d|
<EFBFBD><00><02>gWYd}
~
Sd}
~
ww)u$从内容中提取知识 - 使用LLMNi@u
...(后续内容已省略)u<>
你是一个专业的知识库构建助手。请分析以下文档内容,提取出关键的"问题"和"答案"对,用于构建知识库。
文档文件名u
文档内容:
u<EFBFBD>
要求:
1. 提取文档中的核心知识点,转化为"问题(question)"和"答案(answer)"的形式。
2. "问题"应该清晰明确,方便用户搜索。
3. "答案"应该准确、完整,直接回答问题。
4. "分类(category)"请根据内容自动归类(如:故障排查、操作指南、系统配置、业务流程等)。
5. 输出格式必须是合法的 JSON 数组不要包含Markdown标记。
JSON格式示例
[
{"question": "如何重置密码?", "answer": "请访问设置页面,点击重置密码按钮...", "category": "操作指南"},
{"question": "系统支持哪些浏览器?", "answer": "支持Chrome, Edge, Firefox...", "category": "系统配置"}
]
u$正在调用LLM进行知识提取...g333333<33>?)<01> temperaturez```json<6F>z```<60><00><><EFBFBD><EFBFBD><EFBFBD>u'JSON解析失败尝试简单修复: rDr<>r<>r<>r<>r<>g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?r<>u提取知识失败: )r=rrr r}<00>strip<69>
startswith<EFBFBD>endswithr{<00>loads<64>JSONDecodeErrorr<72><00>
isinstance<EFBFBD>dictr*rbr"r#) rr<>r<>Ztruncated_contentr~rZ cleaned_text<78>entriesZ valid_entriesr<73>r%rrrr<><00>sT<02>  <04><08>

 
 
 
<02>
<08><02><08><02>z1TSPAgentAssistant._extract_knowledge_from_content)N)rN)rkNT)%<25>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__rr9rrr&<00>boolr(rr,r;<00>floatr8rM<00>intrPrUrYr[r]r^r_rdrcrjrrtrrr<>r<>r<>r<>r<>r<>rrrrr
sf (1<02><02>
<EFBFBD>  
 
   <0C><02><02>

<EFBFBD>  <0C><02><02>

<EFBFBD>(  E&r
c<00>sD<00>t<00>}td<01>|jddd<04>IdH}td|<01>|<00><03>}td|<02>dS)u主函数示例u=== TSP Agent助手测试 ===u9我的账户无法登录请帮助我解决这个问题Zuser123)rQrlNuAgent模式响应:u Agent状态:)r
<00>printrrrY)<03>agent_assistantryZ agent_statusrrr<00>mains<02> <0C>
r<><00>__main__)r<><00>loggingr5r{<00>typingrrrrr<00>src.config.unified_configrZsrc.agent.llm_clientr<00>src.web.service_managerr <00> getLoggerr<72>rr
r<><00>runrrrr<00><module>s&    
 <04>