Files
assist/src/knowledge_base/__pycache__/knowledge_manager.cpython-310.pyc

143 lines
13 KiB
Plaintext
Raw Normal View History

o
<00>R<EFBFBD>iCN<00>@s<>ddlZddlZddlmZmZmZmZddlmZddlZ ddl
m Z ddl m Z ddlmZddlmZdd lmZmZmZdd
lmZe<01>e<19>ZGd d <0C>d <0C>ZdS) <0A>N)<04>List<73>Dict<63>Optional<61>Any)<01>datetime)<01>TfidfVectorizer)<01>cosine_similarity)<01>func<6E>)<01>
db_manager)<03>KnowledgeEntry<72> WorkOrder<65> Conversation)<01>
QwenClientc @steZdZdZdd<03>Zdd<05>Zdedefdd <09>Zd
e de
e fd d <0C>Z d8de dedede ee effdd<13>Z  d9d
e de de dededef dd<1B>Z    d:ded
e de de dedef dd<1F>Zd;d"ed#edee effd$d%<25>Zd<ded'e defd(d)<29>Zdedefd*d+<2B>Zdedefd,d-<2D>Zdee effd.d/<2F>Zd0e edefd1d2<64>Zd=d"ed#ed4e d5e dee eff
d6d7<EFBFBD>ZdS)><3E>KnowledgeManageru知识库管理器cCs$t<00>|_tdddd<03>|_|<00><04>dS)Ni<4E>)<02>r
)<03> max_features<65>
stop_wordsZ ngram_range)r<00>
llm_clientr<00>
vectorizer<EFBFBD>_load_vectorizer)<01>self<6C>r<00>N/Users/macos/Desktop/tsp-assist/assist/src/knowledge_base/knowledge_manager.py<70>__init__s<08> zKnowledgeManager.__init__c
Cs<>zTt<00>d<01>t<02><03><00>@}|<01>t<05><01>tjdk<02><01><08>}|r3dd<04>|D<00>}|j <09>
|<03>t<00>dt |<02><01>d<06><03>nt<00> d<07>Wd<00>WdSWd<00>WdS1sMwYWdSt yo}zt<00>d |<04><00><02>WYd}~dSd}~ww)
u加载向量化器u'正在初始化知识库向量化器...TcSsg|]
}|jd|j<00>qS)<01> )<02>question<6F>answer<65><02>.0<EFBFBD>entryrrr<00>
<listcomp>&sz5KnowledgeManager._load_vectorizer.<locals>.<listcomp>u$向量化器加载成功: 共处理 u 个知识条目u<知识库尚无活跃条目向量化器将保持空状态Nu加载向量化器失败: )<0F>logger<65>infor <00> get_session<6F>queryr <00>filter<65> is_active<76>allr<00>fit<69>len<65>warning<6E> Exception<6F>error)r<00>session<6F>entries<65>texts<74>errrrs(


<02><02>  <10>&<26> <08><02>z!KnowledgeManager._load_vectorizer<65> work_order_id<69>returnc
Cs<>z<>t<00><01><00><>}|<02>t<03><01>tj|k<02><01><06>}|r|js" Wd<00>WdS|jd|j }|j}t
<EFBFBD> d|<01>dt |j<08><01>dt |j <09><01><00><06>|<00> ||<02>}|rjt
<EFBFBD> d|j<05>d<08><03>||_|jd 7_t<10><11>|_|jri|j|_nt
<EFBFBD> d
|<01>d <0B><03>t|||j|jp|d d d <0A>}|<02>|<07>|<02><18>t
<EFBFBD> d|<01>d<0F><03> Wd<00>WdS1s<>wYWdSty<>}zt
<EFBFBD>d|<08><00><02>WYd}~dSd}~ww)u从工单中学习知识NFru开始从工单 u 学习知识: 标题长度=u, 描述长度=u!检测到相似知识条目 (ID: u)执行更新操作ru(未发现相似条目,正在为工单 u 创建新知识点<E8AF86><00>?)rr<00>category<72>confidence_score<72> usage_countu
从工单 u 学习知识成功Tu从工单学习知识失败: )r r$r%r r&<00>id<69>first<73>
resolution<EFBFBD>title<6C> descriptionr"r#r*<00>_find_similar_entryrr7r<00>now<6F>
updated_at<EFBFBD>satisfaction_scorer6r r5<00>add<64>commitr,r-) rr2r.<00>
work_orderrrZexisting_entry<72> new_entryr1rrr<00>learn_from_work_order.sP

<02><02>
<12> ( 
<02><06>
(<28>)<08><02>z&KnowledgeManager.learn_from_work_orderrc
Cs
zi|<02>t<01><01>tjdk<02><01><04>}|sWdSdd<04>|D<00>}|j<05>|g<01>}|j<05>|<04>}t||<06>d}t<08> |<07>}||} t
<EFBFBD> d| d<07>d|rE||j nd <09><00><04>| d
kr]t
<EFBFBD> d | d<07>d <0C><03>||WSt
<EFBFBD> d | d<07>d<0E><03>WdSty<>}
zt
<EFBFBD>d|
<EFBFBD><00><02>WYd}
~
dSd}
~
ww)u查找相似的知识库条目TNcSsg|]}|j<00>qSr)rrrrrr!isz8KnowledgeManager._find_similar_entry.<locals>.<listcomp>ru$相似度检索完成: 最高分值=z.4fu , 目标ID=zN/A皙<41><E79A99><EFBFBD><EFBFBD><EFBFBD>?u匹配成功: 相似度 u 超过阈值 0.8u匹配跳过: 相似度 u 未达到阈值 0.8u查找相似条目失败: )r%r r&r'r(r<00> transformr<00>np<6E>argmaxr"<00>debugr8r#r,r-) rrr.r/r0Zquestion_vectorZ entry_vectorsZ similaritiesZmax_similarity_idxZ max_scorer1rrrr=^s2
<02><02> 
&
<08><02>z$KnowledgeManager._find_similar_entry<72>Tr%<00>top_k<5F> verified_onlyc Csz<>t<00><01><00><>}|<04>t<03><01>tjdk<02>}|r|<05>tjdk<02>}|<05><07>}|s0|r0|<04>t<03><01>tjdk<02><01><07>}|sAt<08> d<02>gWd<00>WS|<01>
<EFBFBD>s]t<08> d<04>dd<06>|d|<02>D<00>Wd<00>WS|<01>
<EFBFBD><00> <0C>}g}|D]Q} | j d| j<00> <0C>}
d} ||
vr|d } n#|<07><0F>} |
<EFBFBD><0F>} d
}| D]
}|| vr<>|d 7}q<>|d
kr<>|t| <0C>d } | d
kr<>|<08>| j| j | j| j| j| | j| jd <0A><08>qg|jdd<0F>dd<10>|d|<02>}t<08> d|<01>dt|<08><01>d<13><05>|Wd<00>WS1s<>wYWdSt<17>y}zt<08>d|<10><00><02>gWYd}~Sd}~ww)u搜索知识库Tu知识库中没有活跃条目Nu!查询为空返回所有条目c Ss0g|]}|j|j|j|j|jd|j|jd<01><08>qS)<02><00>?<3F>r8rrr5r6<00>similarity_scorer7<00> is_verified)r8rrr5r6r7rQrrrrr!<00>s <04>
<EFBFBD>z5KnowledgeManager.search_knowledge.<locals>.<listcomp>r<00>rNrrrFrOcSs|dS)NrPr)<01>xrrr<00><lambda><3E>sz3KnowledgeManager.search_knowledge.<locals>.<lambda>)<02>key<65>reverseu搜索查询 'u ' 返回 u
个结果u搜索知识库失败: )r r$r%r r&r'rQr(r"r+<00>stripr#<00>lowerrr<00>splitr*<00>appendr8r5r6r7<00>sortr,r-)rr%rLrMr.Z query_filterr/<00>q<>resultsr Z search_text<78>scoreZ query_wordsZ
text_wordsZ matched_words<64>wordr1rrr<00>search_knowledge~st

<04>
<12>

<04><12> "<02><08><02> (<28>Q<08><02>z!KnowledgeManager.search_knowledger4Frr5r6rQc
Cs<>z>t<00><01><00>/}t||||d|d<02>}|<06>|<07>|<06><04>|<00><05>t<06>d|dd<05><00>d<06><03> Wd<00>WdS1s7wYWdStyY}zt<06> d|<08><00><02>WYd}~d Sd}~ww)
u添加知识库条目r)rrr5r6r7rQu添加知识库条目成功: N<>2z...Tu添加知识库条目失败: F)
r r$r rArBrr"r#r,r-) rrrr5r6rQr.r r1rrr<00>add_knowledge_entry<72>s*
<06>
(<28><08><02>z$KnowledgeManager.add_knowledge_entryN<79>entry_idc
Cs<>zZt<00><01><00>K}|<06>t<03><01>tj|k<02><01><06>}|s Wd<00>WdS|r$||_|r)||_|r.||_ |dur5||_
t <0B> <0C>|_ |<06><0E>t<0F>d|<01><00><02> Wd<00>WdS1sSwYWdStyu}zt<0F>d|<08><00><02>WYd}~dSd}~ww)u更新知识库条目NFu更新知识库条目成功: Tu更新知识库条目失败: )r r$r%r r&r8r9rrr5r6rr>r?rBr"r#r,r-) rrcrrr5r6r.r r1rrr<00>update_knowledge_entry<72>s8

<02><02><12>
(<28><08><02>z'KnowledgeManager.update_knowledge_entryr<00>
<00>page<67>per_pagec
Cs8zyt<00><01><00>j}|d|}|<03>t<03><01>tjdk<02><01><06>}|<03>t<03><01>tjdk<02><01>tj<08> <09><00><01>
|<04><01> |<02><01> <0C>}g}|D]"}|<07> |j|j|j|j|j|j|jrN|j<08><14>ndt|dd<05>d<06><08>q6||||||d|d<07>Wd<00>WS1srwYWdSty<>} zt<17>d| <09><00><02>gd d|d d<07>WYd} ~ Sd} ~ ww)
u!获取知识库条目分页rTNrQF)r8rrr5r6r7<00>
created_atrQ)<05> knowledge<67>totalrfrg<00> total_pagesu获取知识库条目失败: r)r r$r%r r&r'<00>count<6E>order_byrh<00>desc<73>offset<65>limitr(rZr8rrr5r6r7<00> isoformat<61>getattrr,r"r-)
rrfrgr.rorjr/Zknowledge_listr r1rrr<00>get_knowledge_entriessJ
 
<02><02>
<02><02>

<EFBFBD> <04>(<28>#<08><02>z&KnowledgeManager.get_knowledge_entries<65>admin<69> verified_byc
Cs<>zJt<00><01><00>;}|<03>t<03><01>tj|k<02><01><06>}|s Wd<00>WdSd|_||_t <09>
<EFBFBD>|_ |<03> <0C>t <0A>d|<01><00><02> Wd<00>WdS1sCwYWdStye}zt <0A>d|<05><00><02>WYd}~dSd}~ww)u验证知识库条目NFTu知识库条目验证成功: u验证知识库条目失败: )r r$r%r r&r8r9rQrurr><00> verified_atrBr"r#r,r-)rrcrur.r r1rrr<00>verify_knowledge_entryEs,

<02><02><12>
(<28><08><02>z'KnowledgeManager.verify_knowledge_entryc
Cs<>zHt<00><01><00>9}|<02>t<03><01>tj|k<02><01><06>}|s Wd<00>WdSd|_d|_d|_ |<02>
<EFBFBD>t <0B> d|<01><00><02> Wd<00>WdS1sAwYWdSt yc}zt <0B>d|<04><00><02>WYd}~dSd}~ww)u取消验证知识库条目NFu#知识库条目取消验证成功: Tu#取消验证知识库条目失败: )r r$r%r r&r8r9rQrurvrBr"r#r,r-)rrcr.r r1rrr<00>unverify_knowledge_entry\s,

<02><02><12>(<28><08><02>z)KnowledgeManager.unverify_knowledge_entryc Cszkt<00><01><00>\}|<02>t<03><01>tj|k<02><01><06>}|s't<07>d|<01><00><02> Wd<00>WdSd|_ |<02>
<EFBFBD>z|<00> <0B>Wnt yN}zt<07>d|<04><00><02>WYd}~nd}~wwt<07> d|<01><00><02> Wd<00>WdS1sdwYWdSt y<>}zt<07>d|<05><00><02>WYd}~dSd}~ww)u$删除知识库条目软删除u知识库条目不存在: NFu 重新加载向量化器失败: u删除知识库条目成功: Tu删除知识库条目失败: )r r$r%r r&r8r9r"r+r'rBrr,r#r-)rrcr.r Zvectorizer_errorr1rrr<00>delete_knowledge_entryss6

<02><02><12>  <08><02>(<28><08><02>z'KnowledgeManager.delete_knowledge_entryc
Cs<>z]t<00><01><00>N}|<01>t<03><01><04>}|<01>t<03><01>tjdk<02><01><04>}|<01>tj|<01>t<03><01>tjtjk<02><01><04><00><02>tj<07><01> <09>}|<01>t
<EFBFBD> tj <0C><01><01> <0A>p?d}||t|<04>t|<05>d<03>Wd<00>WS1sVwYWdStyy}zt<11>d|<06><00><02>iWYd}~Sd}~ww)u获取知识库统计信息TrR)<04> total_entries<65>active_entries<65>category_distributionZaverage_confidenceNu获取知识库统计失败: )r r$r%r rlr&r'r5<00>group_byr(r <00>avgr6<00>scalar<61>dict<63>floatr,r"r-)rr.rzr{Zcategory_statsZavg_confidencer1rrr<00>get_knowledge_stats<74>sF

<02><02>

<02><02> <02>
<02><02><02><04>(<28><08><02>z$KnowledgeManager.get_knowledge_stats<74> entry_idsc
Cs<>zBt<00><01><00>3}|<02>t<03><01>tj<05>|<01><01>jtjdt <09>
<EFBFBD>d<02>dd<04>|<02> <0B>t <0C> dt|<01><01>d<06><03> Wd<00>WdS1s;wYWdSty]}zt <0C>d |<03><00><02>WYd}~dSd}~ww)
u$更新知识库条目的使用次数r)r7r?F)<01>synchronize_sessionu 成功更新 u" 个知识库条目的使用次数NTu#更新知识库使用次数失败: )r r$r%r r&r8<00>in_<6E>updater7rr>rBr"r#r*r,r-)rr<>r.r1rrr<00>update_usage_count<6E>s(


<02><04><06>(<28> <08><02>z#KnowledgeManager.update_usage_count<6E><00>category_filter<65>verified_filterc Cs<>z<>t<00><01><00><>}|<05>t<03><01>tjdk<02>}|r|<06>tj|k<02>}|r6|dkr*|<06>tjdk<02>}n |dkr6|<06>tjdk<02>}|<06>tj <09>
<EFBFBD><00>}|<06> <0B>}|<06> |d|<00><01> |<02><01><0E>}g} |D]*}
| <09>|
j|
j|
j|
j|
j|
j|
j|
j|
j rp|
j <09><15>nd|
jry|
j<16><15>ndd<07>
<EFBFBD>qT||d|} | |||| d<08>Wd<00>WS1s<>wYWdSty<>} zt<18>d | <0C><00><02>g||d
d
d<08>WYd} ~ Sd} ~ ww) u*获取知识库条目分页和过滤T<EFBC89>true<75>falseFrN)
r8rrr5r6r7rQr'rhr?)rirfrgrjrku获取分页知识库失败: r)r r$r%r r&r'r5rQrmrhrnrlrorpr(rZr8rrr6r7rqr?r,r"r-) rrfrgr<>r<>r.r%rj<00>knowledge_entriesZknowledge_datar rkr1rrr<00>get_knowledge_paginated<65>sZ

<EFBFBD> <04>(<28>)<12><08><02>z(KnowledgeManager.get_knowledge_paginated)rKT)r4F)NNNN)rre)rt)rrer<>r<>)<1B>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__rr<00>int<6E>boolrE<00>strrr r=rrrr`r<>rbrdrsrwrxryr<>r<>r<>rrrrrs\ 0( ]<04><02><02><02><02><02>
<EFBFBD>#<04><02><02><02><02><02>
<EFBFBD> %*!,r)<1C>json<6F>logging<6E>typingrrrrr<00>numpyrH<00>sklearn.feature_extraction.textr<00>sklearn.metrics.pairwiser<00>
sqlalchemyr <00> core.databaser <00> core.modelsr r rZcore.llm_clientr<00> getLoggerr<72>r"rrrrr<00><module>s