From 4a4bd5c365889334fe547eceac2897af6824cab1 Mon Sep 17 00:00:00 2001 From: minorQAQ <202200120184@mail.sdu.edu.cn> Date: Tue, 19 May 2026 14:44:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=9E=B6=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 168 bytes .../__pycache__/chatbot_agent.cpython-312.pyc | Bin 0 -> 4691 bytes src/agent/__pycache__/llm.cpython-312.pyc | Bin 0 -> 21730 bytes src/agent/chatbot_agent.py | 2 +- src/agent/history/data_base/chat_history.db | Bin 0 -> 20480 bytes .../20260519_144316/ui_messages.json | 22 ++++++++++++++++++ src/agent/llm.py | 1 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 175 bytes .../__pycache__/system_prompt.cpython-312.pyc | Bin 0 -> 5689 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 555 bytes .../tools/__pycache__/tool.cpython-312.pyc | Bin 0 -> 12477 bytes .../__pycache__/tool_rag.cpython-312.pyc | Bin 0 -> 16224 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 174 bytes .../__pycache__/agent_utils.cpython-312.pyc | Bin 0 -> 12879 bytes .../__pycache__/env_utils.cpython-312.pyc | Bin 0 -> 2452 bytes .../__pycache__/image_utils.cpython-312.pyc | Bin 0 -> 6808 bytes src/agent/utils/agent_utils.py | 3 ++- src/{agent => }/web/__init__.py | 0 src/web/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 256 bytes src/web/__pycache__/server.cpython-312.pyc | Bin 0 -> 20280 bytes .../__pycache__/ui_session.cpython-312.pyc | Bin 0 -> 22205 bytes src/{agent => }/web/app.css | 0 src/{agent => }/web/app.js | 2 +- src/{agent => }/web/image/background.jpg | Bin src/{agent => }/web/image/favicon.svg | 0 src/{agent => }/web/image/microphone.svg | 0 src/{agent => }/web/index.html | 0 src/{agent => }/web/server.py | 2 +- src/{agent => }/web/ui_session.py | 0 30 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 src/agent/__pycache__/__init__.cpython-312.pyc create mode 100644 src/agent/__pycache__/chatbot_agent.cpython-312.pyc create mode 100644 src/agent/__pycache__/llm.cpython-312.pyc create mode 100644 src/agent/history/data_base/chat_history.db create mode 100644 src/agent/history/multi_inputs/20260519_144316/ui_messages.json create mode 100644 src/agent/memory/__pycache__/__init__.cpython-312.pyc create mode 100644 src/agent/memory/__pycache__/system_prompt.cpython-312.pyc create mode 100644 src/agent/tools/__pycache__/__init__.cpython-312.pyc create mode 100644 src/agent/tools/__pycache__/tool.cpython-312.pyc create mode 100644 src/agent/tools/__pycache__/tool_rag.cpython-312.pyc create mode 100644 src/agent/utils/__pycache__/__init__.cpython-312.pyc create mode 100644 src/agent/utils/__pycache__/agent_utils.cpython-312.pyc create mode 100644 src/agent/utils/__pycache__/env_utils.cpython-312.pyc create mode 100644 src/agent/utils/__pycache__/image_utils.cpython-312.pyc rename src/{agent => }/web/__init__.py (100%) create mode 100644 src/web/__pycache__/__init__.cpython-312.pyc create mode 100644 src/web/__pycache__/server.cpython-312.pyc create mode 100644 src/web/__pycache__/ui_session.cpython-312.pyc rename src/{agent => }/web/app.css (100%) rename src/{agent => }/web/app.js (99%) rename src/{agent => }/web/image/background.jpg (100%) rename src/{agent => }/web/image/favicon.svg (100%) rename src/{agent => }/web/image/microphone.svg (100%) rename src/{agent => }/web/index.html (100%) rename src/{agent => }/web/server.py (99%) rename src/{agent => }/web/ui_session.py (100%) diff --git a/README.md b/README.md index 731cfdf..b663539 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ RAG_BASE_URL – RAG 嵌入与重排序服务地址(可选) cd ./Agent export PYTHONPATH=src:$PYTHONPATH # Linux/macOS # 或 Windows PowerShell: $env:PYTHONPATH="src;$env:PYTHONPATH" -uvicorn agent.web.server:app --host 127.0.0.1 --port 8765 +uvicorn web.server:app --host 0.0.0.0 --port 8765 # (可选)通过 Cloudflare Tunnel 暴露公网 cloudflared tunnel --url http://localhost:8765 diff --git a/src/agent/__pycache__/__init__.cpython-312.pyc b/src/agent/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..54b9c69c74b882c76a2305987675a01782f46814 GIT binary patch literal 168 zcmX@j%ge<81aI7~XM*U*AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdD`Ewj%Lv59AjU^#Mn=XWW*`dyB1|hb literal 0 HcmV?d00001 diff --git a/src/agent/__pycache__/chatbot_agent.cpython-312.pyc b/src/agent/__pycache__/chatbot_agent.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..75ed37c879214af7bf87fa1e58201ae9dd394a7f GIT binary patch literal 4691 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 literal 0 HcmV?d00001 diff --git a/src/agent/__pycache__/llm.cpython-312.pyc b/src/agent/__pycache__/llm.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b0d46deaa9616da4acc5c19bbdcfce8c7f6786f3 GIT binary patch literal 21730 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 MHYq;L7eV-c0qvkjD*ylh literal 0 HcmV?d00001 diff --git a/src/agent/chatbot_agent.py b/src/agent/chatbot_agent.py index 9bd627f..380e29d 100644 --- a/src/agent/chatbot_agent.py +++ b/src/agent/chatbot_agent.py @@ -13,7 +13,7 @@ from agent.utils.agent_utils import ( get_session_meta, update_session_meta, ) -from agent.web.ui_session import ( +from web.ui_session import ( rewrite_user_message_files_to_session_dir, session_dir, sync_manifest_from_chat_history, diff --git a/src/agent/history/data_base/chat_history.db b/src/agent/history/data_base/chat_history.db new file mode 100644 index 0000000000000000000000000000000000000000..fbf8476bbd29ca4c83b1170d00685b51f73560df GIT binary patch literal 20480 zcmeI2&u`;I6vyo}ZI_kOz+sgO2P;yQRw>9%{ButPFsrI*cekX7YJ;q4JYKAI>~3r? zpj8fA?FI2?aOF?pwBo>pzX9GjaT^!9LgKXL>%^0pd2haN-e=}AqkQ>z7-n1vlG&7H zN?&?kl4a==MUf6}qTie_6>uJW$BA)Uz4U^cL@{Fz4>z^IFgORI@ z2A>XHW!0kW+*MYd(iHm2$o+bx96hA>WH{Wbc(JEE&b*jS`P;lE`7BLlUKsoQdu9J< z&DxdK<{aXaJ zI^faq{^8*GR5@@@m7S|J_mrz-b}y6MwdxzKgKb$VCZ9f!=)CH&JWGnUR}L4LJ#Dom z&aZdG-g#8pXmz{t>0((H0x5r<^LWCSdS!F1x;Rze9YJ}ITz6kRkT+YMj(l-gXifT~7$Lwk3W2>qml!Y3NBC8%4)Z-YOlpPvORy7b~3mrpe)MKAR(+IT`5Y;yj5{UR=DCt0oN9^%Q4$ z8WQJGM7Gess%J?Oc@q{zLh{Ks!WzF|QRvg{#&t_xocqPy!!nZ4o6lc$WZF{~{Tuhx zxA~OC|7KhLw^T2~+>q^jF3$gQ^ACx>ct8LIKmY_l00ck)1V8`;KmY_l00eFWfe+-h zj$HW@LTz#We&C(x>Q@4fdAR{(zj$9C8e literal 0 HcmV?d00001 diff --git a/src/agent/history/multi_inputs/20260519_144316/ui_messages.json b/src/agent/history/multi_inputs/20260519_144316/ui_messages.json new file mode 100644 index 0000000..9721091 --- /dev/null +++ b/src/agent/history/multi_inputs/20260519_144316/ui_messages.json @@ -0,0 +1,22 @@ +{ + "version": 2, + "turns": [ + { + "user": { + "content": [ + { + "type": "text", + "text": "你好" + } + ] + }, + "assistant": { + "text": "你好!很高兴能帮到你。\n\n如果你有图片、文件需要解读,或者有任何问题想要咨询,随时可以发给我或告诉我。请问有什么我可以帮你的吗?", + "output_type": "text", + "autoplay": false, + "audio_duration_seconds": null, + "audio_relpath": null + } + } + ] +} \ No newline at end of file diff --git a/src/agent/llm.py b/src/agent/llm.py index 7c31435..800cac0 100644 --- a/src/agent/llm.py +++ b/src/agent/llm.py @@ -316,6 +316,7 @@ class ChatQwen(ChatOpenAI): lc_msg.content = merged elif raw_content: lc_msg.content = raw_content + # print(f"raw_content={raw_content!r}, merged={merged!r}, final={lc_msg.content!r}") content_text = lc_msg.content if isinstance(lc_msg.content, str) else "" pattern = re.compile(r'\s*(.*?)\s*', re.DOTALL) matches = pattern.findall(content_text) diff --git a/src/agent/memory/__pycache__/__init__.cpython-312.pyc b/src/agent/memory/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..318af5875a13bd37ed9565f33a1ff9033445b320 GIT binary patch literal 175 zcmX@j%ge<81Yy&dvOx4>5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!@^iL|2`x@7Dvq%* zGc+@caY-%CF3B&5aZFFmD~b0>O)SdG%uA2Y&CJU$f(XVG7bV9ef}~?|Q*-l+Dr4f~ qGxIV_;^XxSDsOSvy@}1ma>4<0CU8BV!RWkOctbhAkKX literal 0 HcmV?d00001 diff --git a/src/agent/memory/__pycache__/system_prompt.cpython-312.pyc b/src/agent/memory/__pycache__/system_prompt.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0bfd68a5fd6a3e4d5fe3b9508ba26f803ea9fab8 GIT binary patch literal 5689 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 R)6*}%d@A_T7&ybge*vRsGjjj{ literal 0 HcmV?d00001 diff --git a/src/agent/tools/__pycache__/__init__.cpython-312.pyc b/src/agent/tools/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e3861756e25327652e78b45af553fadcc3781a32 GIT binary patch literal 555 zcmYk3OG^VW5XX~k`o^NxDhi6%dJw!65fN$&BBeY$oET%{pPhIuS&!Y3TB^;8@lT3niZrAvD9NMp&Pfn> z_Na99(FbryGRUEHiHe+Bjxp~5vohTBJgzWL-jjij{O(sa%u^{qn(L*tQpv0ed98w` zS$2f4_@1!9cYTL9Tt9%J)0AMFmJXXyC6ja4cNOQW&32e}gc>#g{cy{;WeTN3-m--k zRsd}r6w@KoxnW8x2g?D5{xEkYE+n?JFKy3~GR##iB@SBx+Lg#&IJQ9uzhX623j~g8 zgL@%{vHUg!H+Yds;428c$O-xvMT0<6lWq=a-6^%%29grbmwIfu&*pk;zR$9^yWiPF&gf(Yla$Uzb^ic928oIQ literal 0 HcmV?d00001 diff --git a/src/agent/tools/__pycache__/tool.cpython-312.pyc b/src/agent/tools/__pycache__/tool.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d69275e8f756ee209f3a493273919fe9b3fa09f GIT binary patch literal 12477 zcmcgydvsG(x<4o9oHVaCNz*5#5@>51D9=K{TEP|(m4}R|3>7Cg#meCtMRC7m_?Je_aA$0UE}Co>)!9%Cnrs7 zL9a9Gp0%>G&)(mDoc;KHzwg`o-;$Gc6g=OthT6XsQq)a+Q65f?&|`xT>7aOur`=Q? zT}9IvSGiSHD)?vIOdVUr)^Sx_EL~ltCizKKN#tKsr6K>?DlPo8Ze5+eN>5}tx1lb% zD!DGDDy7a?Wh7~8x2eutWhU_?cWRxb%0g2rYAwZUo~L-NpnsE*`&E@jQgx83Pe@HC zsRl?*PDsrlsVR_ZOi0ZXvUt-|MHD5{jjBeK%{+ot+h|Ge@OZp_hu`J(_%_;9lIG!h zj62*?(t4L)5FKt1(o{Np!lPcV+r~&*jBoJrf?MM5cL{D@GB`!S;TP<6mF4zGL?Oo0a8wB$_(6M=7f@&-dy zrQ=O}^7Cw!9{y9{-_U5ZnWdC1!ginF5S=@mZimk&=^pgd2mE$_W4#bag=(YiCx_0z z8hz!p;d8G>Uf2^kdlA2e7kp09MaBzWxt#$)Z2Z=Ug`S8H(vvX4VvW!4bM6r89FnO) z*lw3wvdc{|KEEij9!H%J_;+Y&u(xHf_l=>;2Zt`5lv|BlcrCK$!j~WJi?p2^y!2YM z>tb~O*`dST(cp!l>Q9$RCWJd}Ro~=Y?qSXyn50qbFNquN_^{caIF8{_W7)hvg!}&mM;U$OWSv?+^Dp z2d!g&_PjrM`Pks4OM{n>M4#IedEvdm-q(g+e^wTNc10t6kTW)85Tz&N<}r(%_^RKi&N%yGi6h66mg<)VXgIgYuv(SL97?VicJr05gqjq zlZyD#lBFwnr&CzuT)t%c_7#g4Eva54IGok|lImq8rPa&tTFyHbIhVO84OFC(QhcNe zyQAJ^e@bYC73}r+1&`nEb2SN&pX+vbYMeV9E|1;mt*Z-oT>i!d0l&-b^1B3|n2FtC zB-SUmtI3O$0*iVRtZV3$echU^KHRugtM%IlSC?&j3>x!oTT!~Wv~=5jg6}E6w|-ki z4Ysx(R-DJ>sj=6&JYG>w+~yOV+Z>p^%?}&SN5Td5jgrM)BR~hqBDFWjU*0rl^159x zjSP0ymjyu!^@ZkvaQ5n8%BRMHo?nC>dHlL@OGvY24Du*vY%gJ)LO3L|^lON8P+F>) zs!g0ll!50>`H!l_ubuKV)5=cWOyyC2oOkl%Q)1RG6;JzPJD#GNRf^;Z>Lry^wG|+D zm+Dul&9VOmx`BFz*-ACgXH**lxll{A_4M$meTiEHR%K-G2P21%m04}9I16MXMhti) z?V4wt0@5r9DL<%iVuA-2L4s1Igd| za5i?|F`GK2txz#{SDnRUyNwkY&~1e_-hU+lMM(H(g<-pPw_IdYzuf zo@VA#Z(zck^nB`VZAA+6esYDDxysNGy~=Wsb5+Y>JcWVyM))>dIpl*RwJ7)lqKCZL zk|mAZju39QOFBC$!hjp&2D^P{z~Pp2M6FU-1Qen~)GLzFZck9acDtC4S%{lt8H>PF zC~+i$Ad)PLDkbN#EDc z$_}n#c@^ks28WtwiC*U7dN~QSG{*1ej%h#SoZ<{|T72adCyK!O`}+>Vzh9!PfZ&b@K~&Yrz9$ z1slo=HYY%F;&3NIF(;Nn+Y;mPHb@$vIn`Lz1Sr6MnhE(tNL-FFWCcFd6`(t<@>0hQ z&}5msG!`IKFGSh_&G0J8*R7=Xn<`LGLnsQ*$^1&e!f`t$FRQRSY=s3NEo zR1s8TtQzpdL~}WEomkT(JV5}2=lgu0r>hv?`UFP=HO>jVCGoJ7CpaN+f3?C70Yj1m z;P?bpw7~9l@D^kH!13`dndBJ>-{*kuGr;#}YzCV}@T_*!1BeU2%7Djj7YObIYM{|* z@Qp~@QF-r2-f4?mJQBJ1KCs@w-UE?y7l+TiG}!y=!4JD4Cq5c#-HWuleIJ0y@aY$Z zPq&U7`e^vVIUvx{m)i$>KZqXP8+p3}=!>4yg&b? zhy;&CkDMR8d??!1HhiT={$yzVj7m!4g=$B@?I%hJt)6PHGvJdUI02Y5VF+PF?M`_} z?XqpOT}Z&^?kNL1*n3HCXz1`I_#Ct-$RNwZ80|h4dHKcR%WuWUQ0^P_D*A4B^!c_g zKRiBseutWi!F@MSvM{jn5?$*YZexhhxj%#LX^@%xhyqQZ}{-7(kTGY@}o_Hh@}b4( z$u}ZrTZezU$6DX$2>87<0T-;=D6yCkGTvz`vj&!dAS}}1a~C2fyGKr496E7!=)k$i ztIrMgzAc+BW!8FEz18LM`5kWeL{$>AY2#YhVd`qHSm*Eu@Ehe?BfooR`21^SRtc?O zb-n1V1KhGgb_|H#-wv-|Qn|cR zQe~rG@ICl2n9Po+1xW*z?9&c6P(2(}i34ijsuy(_Pg8Ki?y3VT*uEVL+O#rJxECbE zwHP2#kdo?MZV;=HnC*dTDM@rR*y}wtvUSJ$g=hReRD4J!$dkY)W=(?KN$^j&#YQOS z`yU8^Td-z2oY_l;^ObNX*|ovH!j>^|e{>&CpW<$Rj>sH^#zt7lLj z=V>d;nU9OP%H_<*i)oB6=P+EQU7g8%qG4C3GM^Y|jHhxK&d{!2!hDj)uAa|)Qb=Qb zJ_nDJkTychnyO;-GlPrzz;GJ(w`Phm4slHJaGonR^vT7$4F>lg%9VkAtRU!xCnHUFB^DNIz@SbXwkR)j0c}cwHHhJ2_ytj03;+Vk$zEQoP;|+u#B?DVZ zfj1+0GgTSLo0+_2@u^^?CG*+51^!d`H1MMu`5AmVyqVxX1OCl?4nLF6e4eXHZA`M| zN|s8|+W?-g)!6LWRYR*omtFxQElx+G2Tn(V?<+pe6u znIj!<$3<_pJR1pKh#u`xGP?E-z5UV1srMj5E)m_gH*)s4^|43RPi>!2EAZ^G-g?0! zaZa}v`i84JuoQymq5XrGPY%6v2^a^^ib51Bv?{$IZ31u>l2V0Mxm)5&D7Z1O0YYfc zD$^?HNue_!ir~I0v<{!@MiNF$P3R@mFhRCRgGjl0--v(T&>J0*w%-OG!4AdQTKoQ? z(>+iW*qyad;A@1!Vr!vu2dDrNt9FS(wfC7q#P#0&^7jLo8@zl4$k5QcmteF;k!F z#bIva0;u+6gJ@#jWyA$b@HhKp$bqE-RwORn!)L)(-55YGHNpu2WAu_Ka0K)gM;XvY z&MUJvsfw*Ot)zop;@Ip%{`t!tP5>=bYRogzD--NR|x}E zwS85!{Z;P%O?9D%J)vB0e`ZNNCI&o~R&U0l}CpS`U0p|CMqksRe9_gmsZy1FvG zGL!l^vuHKPe8SQYPC9fzUO+apj%?Sd_c*91WeHKke-Sn=BoMgNDN?;mn*-J!Q%qHBqK? zvaX4}Vh$TjVPhIDU$eY?k5=SXlu}nqwUsL7W15C=l3x~*C6~`=@I!j406Xk1!VDJJ( zTR(~fd#qn0cFWcR@&8!kR(J#_pSK7U#zsdUn{zyBg8rr8!@&WgPj_2rlKF7MA@-KUuy z)U|K8p-&0keZ!E^_HgUNog1zj=6-6N88)R2m{*N4;Rce}fP5wetr4CObHO>J9Sx4!s9=Y!Xh3;qhFGjj$qi~BN*yPv$Cd3QLs zusi8m(cL{OLWSj_@+U$$+d^sE62aG)+Sc6K-1*EkV<9x$VLWK;(sq|zH!TF_khTCE z6XtZ1$X+)Uge~*I*OZ(|db|3%!TP=4hSTSEmvk3|EQ>;hMYn+?xU~al3)>{lfMJYc z&$Mv#R15;9fusqr0SEw~i9rDRgjoUsae$hZXmAsoa)PN(M>Jw!gb*-|C!Gg(N&*Dv zZy}`x$cYgn017?8-)*P}Zy=!a)4o0V|MlBb628iGi*GmblcYe8CIXgh1;+tvqu2uL zL3|d19{?6&#frO8`Z)}qhd`otN{qt|p5*GK0X&_IqejfwR*VxFrNn;)kpNPFTjLjL zCT<{0bc4h?{i1ui+NW6KHjNBU1eb0FNd&NLoXig5xFpebf=WJI!^B7-9%(5VE;4{O zO2MJo)8bH~NI#VK{S5*DqMTU+Ig0^IdJ6k<%78lr>EJyCi2m8|v2+4HxGw*7Q*qc* z@_z#?K9nPb(u5xkSP3nvyBWE~(R3>1P8o}k4k-`D0Zr(!E{Ko|Yc!ZAum;4`Tj3H| z~Y4aTm+8&1}Ls6#FZd+^>ND$@eR^LO(_HItOMz zFv-+Ta7BW(ZH4R@2~d`K+;0=V^2Ufk5EI)m$cI2#dQV_NeErF{D<&^Kavh;5YuY6T zcMraV3VbyX;2jH%wk&K+@65PnoJABX@{noyjqH-1`$21EmWNE`%0-On&l~1ITe~xsQODrd!!D!V(^e!iAF&l0=BkQ@ z=v55|ArNoul=vtFVEdq|mwlDjTBtbhnJgjHe;<1%8xTRmO&~jz+7hu2fE?ga6oweJt@its_0Pk49c@6F? z@gbB@!yRe3_bQTMBcn(-9l_IoL8-MUWsKj#T|lnFipWpFf^Os;9>2>eCZVJT1Dp*> zOK#0BaJ%c|qeLTK*!3+CJWtz6jJToXt8+`RP&o!!F@fTF#xH_FKZ~yr?1%KlU zOmq&$;cxuTC3FSdl{HS`|M(92K^0xrSu{@J|LEf^#TtT5*O=@ZtY(y>*coJ8{}-Q& BuuuR1 literal 0 HcmV?d00001 diff --git a/src/agent/tools/__pycache__/tool_rag.cpython-312.pyc b/src/agent/tools/__pycache__/tool_rag.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23609a6a3d1537cf3124b1371705b919905b9753 GIT binary patch literal 16224 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 literal 0 HcmV?d00001 diff --git a/src/agent/utils/__pycache__/__init__.cpython-312.pyc b/src/agent/utils/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c72cf9f99728c1167ca37445638bc36230ce19f8 GIT binary patch literal 174 zcmX@j%ge<81aI7~XM*U*AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxd$Hd2H p=4F<|$LkeT-r}&y%}*)KNwq6t1)9zX#Kj=SM`lJw#v*1Q3jk#nEy(}? literal 0 HcmV?d00001 diff --git a/src/agent/utils/__pycache__/agent_utils.cpython-312.pyc b/src/agent/utils/__pycache__/agent_utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cb781617bf50262e77c3746b8f3f13120c67dc9b GIT binary patch literal 12879 zcmcgydsI_*p1(J_c|Rc_@{)ic#s?N{)iPQac?cFkA(YC{Nn`E>gCyWhqGFSoxUDs) zEn&13TU&9)PI0uAo!RNos$f;Z?I{5~XU}OmcF*qgpV{y4caxid z=x%q;*?W@T?{|Oi$M^C1et-9$G#VuVPwtGWTeOBCzCtgFM;lMvmx~GF96=K_*+aDR zG1*SycTu|t$KrM|#G)R`A!(O5r0r6NtX)Q;y5b(WL(#6lX{tx*P_?TZ>UOn5)2_jJ zk{+!?*RI29X^-BK)}DsbvYvE@q21ufXwPtDwr4t)v@anEhU_j&OfMOCmnYMS)L&h5 zL!zf-%;a1p`L~5}d+tNVdotNNkz#Ub`Bf4B)}H@8+U3&tQ%?rL*5ea+xiA8mjhN-Mbi<%i6`%L5*IvA1bT1TU|^% zm(#TLyWET;@v5%#IIPb28+4M6df3hOI{MsZ#?jYfbu+l@)?K?QoA+8;_O_U7c3E~e zH|^SOHc?!9L&GjhRa2w6=2^3)t-i6ksf|nDRo_?-nY(s3*R-@)nk&sUTzXw)bM=Be zO;u}ib4{b!Vs342Y~f`4`3Z9h+UmAi_Q9OL)7fA)mUuxKy^m8nJUwo^#qR9$xLur- zW!xUtX^YbYjwlF0W)SyR0G*#B+;OfUi0(Mur&e~O+W4W#YoY|jk^fUG=|fs2vWafF zkQ5T#Dj_K(-0DP<7AHpc5$;6h;{E7^VjkQP`u$tG^@)xWy|{ARhD2U>Mk1Ar zy+lfz_`brfWhH8KFHNM9aY~E$nfORA*`1rLkx0>0Vjd*%kQ$PCHS!ZJlW|f`Ko14U z{6s2Q-cOjMjbeOIXxM13+}==QtgkgTHkpkz&(^n? zTZ|5#*DQ$D7~@Kz32JGljrG77J8GJZyPN9~`xu|D*=ww9H8<5aLZ7>U_Sej7;ey`m zy-o|XL=1%oYHV$2m|rVC=KLx`KPH^AHozVWd5>5?Vn_$$wl0`|qUh1H0ZHR@Tbx!0 zGk-$!=WO$^u3i@SmS&C!yHZ_KTiM!RHm)sSP#L5T3tPd^7F(~=4gK?7C+e4$&adBN zg=2H~x~)AB9$=iV2S#{oeuLEGSeabr8e?)X{5GOve}yd+j}_5(R+yDWUhlfb~m$ulffQ18JnAvF-I7i$IWn3Td%`m2k~#~ z>2)zC5hv~Kp)DXCDOA;k_|a(mZg*8hN2`lrT^*Y@mT%nHQO&pxxO@9LD)E6eFjm%S zcXnAEc4sfkXLh()TL<2P4m1%LpSIw1SzkYw16%8184Fs!#pGE$0sYDUe6A}fVr9fE<$jU%jFsqk#MWFi5V>^#G z+=tl`oH9uRHbGxN0g~cam+XW@sxI*Y9(4=)q+0^T3m#gOl;}sH>>8Dj?=6H$(s)$K zA8*CFb?Z2?gCp0OL@a<{m`nV)K@OP2EYdVA5?`E*Wk4I-KpW$FE;LUgYeGe;E=Ew2 z?0U%A3V+v12;d-8#)u(5Vknp@di+k&mT=LQar4I;CX0524LiP-h}F^z7+07_;5&~N)vk44(8A|>SlqvB_9!{BFkyq@cIwc9l1^SXa ziav4qBk2>MhN#iX!s!dDxxTTbrrC@XR+B(Dye>|hgPl&*OF*0{s`P(Js!3(`Ol3oB zO^b2mwl&7&FIn8wXaq1{+fZL+ewbb~RyP@2cUL1o)KX&>)`5s9b!JOmHqH`W6zk!<=v5pK9RudpSEt}vTOQ`lra$ziT>AyJH0nP3)!rwc0$9*e`(<#M5Mgk8$9 zAeoYAW^vh_Hpaq}1X~LgZSZ#?edQ-2x+QmX1z}x*zb+y(1g#UYtl=%!HjEy*x^=uf zyn4$-?v{uyE1-+048ewx@^D6RD5E5#S`ngF@PeWW^%q|mB>5dev$_8d5P%nn^ud1k zL`j=4X*YrL0d_}w#qI>PgjL95>Wvm102#`z^@4s!`xI|efZFgmNZBmfk~&1ND%fA~ zQ4K+W?E`8Er$kN_Zi{k7PDwH?%!oX_(@Vl>Ncq#?B>R!kjt}LEh!a`uoWcs0gUfAo zy4j5|K7fg8h&amK-^Z9J7VQitLAJ7sBkdgNbRhzQLy8N2H2`f7z<6AP-3?`S_`6<& z0M13N@z+G;3V-EYxhhb1O5?ALC{+RL$r5xDl>|OK!3u~3k$tM%Pa$%_B&JD3FMR}nG5Q%yVvrYal(;17IU zXg3x-wD=I=B2Q;}Nt=iSR-lM}k%?-=o6c51WfrkG=x+&Yb#^g$zu5+qCBoayHbOd% z#d(;PVc{hcoPvb`^o)%mwgsvkK~;YM0ccoF`q>S^BWJb(fg6fP_Kg<(t7dJ0oVU}V zg7p)s^$|nH$-0l0#6L$U;orx6O??S_S?= z4XwQ(vXj?z3DxhDdZmlasRiaj;`tmVOnT3D7-sI)je92sqpzNty?N#9n{Q0terxu% z^U>qKzIXQh>5ooD-+%in|1k)sZ=FGjmw!F`-s@lAJRJ>;+&h0c`trHyTj#+L#4b7@ zq&n!(!=PTT|2BI4!|5CEOpl*}#N73_=5D_^cj@%}(N6QD&5VpkZ@>7k(V{;+&G#_# zn`6=7&{zJyRVrUVel{ORD)ET_fmGe>+0mK6Z*eku^2*G>sqaJ;M$fY33QxbzFEV=K z*34^Tb3eN}H})bl@*vmGy$k-iUmWAhXWw`!`ttGU`yWn^e*_jP420B(+lst=AfT8d z?nclos$P#9e0mlnusFTdL)&{T@hmVmuaL;-b#~gjOmY^{2B+x+AElsISOmM+JQN@n z#5ObX8*q|7)((->?mPsZ0h0{$R*!>48k&>#VJ|0G(fh4nr;`p&fhK1`GeVw47kC<7 z$ZSDk5+0t3Gc7&#uKn)A3uGPl&ZLe=PuHjUm`F&;XKEpK(qxr1-4Kc3&*Yl|uYUVesI&Lqmr~vL>=t4s0IX zA5v}_W5)|`n?5v+=T69LLQS@BP~H24C{5PaJ9aeGvNz;p!&UCkMo*w)Qgg^(8&RbVJ~i-Eh|2!+pES@VHVJ-Z z+FmH<3<>!Gei-Z;19t(ZaWaQ3!amvJ0u>fb5Qu8f`~6V}{tC$gW?)>hP;S9&1Z!I0 zZIBO(n2BDbQK<_cN05{q3)2E)4J_ zJTo+m$oZ$IXI>xUd55Ryxwl`51_MCXGZ*}`Hv)V$_8I6e!MneJ^xW<9GsD-XKRgv3 zcm**7W?#N82ngj1U}_$+_j+6wm&f6-vi&}#5*R%?crqG%b@s-4sRQEri4%Z&AQooN zUYrR8qoNYIk zYv57+!kKdN#9UZ_kOcc96g-E5=OF;ZjkcWKhXTx?G)f_H#@Zl&@=la?pumZOE)?uX z!2t*!K-^l(ek+T7g1lN|S*Y|Xs_24XF{X=&2*q~sL--D}O6e4}GR`HDymgU`!fzzv zTq!72ea`T%(T$ITS_#>fN|kA(MU_+*g69u1$|D^EI~XzD1Sp##;hX;c?@IXVHx(^8)T z{z|W$mf@0;)D}sVF0>TW5}(qUKCc#HXZ#4YfVF%Ix4?QS;92EWEyi9xwO7I3N~&V7 zI>E#~jayK`$%_H6M%V#u@&Y2+ik2fJ=hM+LpWX{0He5=*YOfBXxJ521Xaxq{dT5E@ zwce}uYBAg(0d(si7vVsi&=+~SR7gv3IgAIeMCnWGB7EuIwD_2EubNiDn;Zd)98@A> z3%u#w(A&a?mbua7@I$M;GJr9nYnsG9B-RVQgLGEy7A`})ls7$5<|Mr`pTR9$av)0a zrg;rs`Bj92;epm^h+?)t8uEc+P|Eq5SIM4nBfk)Syeh9W(Wfti)^-;rN|LcR13+75 z3TVspW-fLCMC;<9O%J=12B0k+>J=sXNu=h1w#>w;eM?}!wC<8bEm*D0yCi|meFmo{ zwTw2TmU-3C(jc@HD2k^Id{$Wt_9|<^US&PFS6-2CDcU!5RA8hnr85$5=)5rPEOnO( zqb^OJU>E7jp0~$w&J}h#$D7@4O0-PIUg1I?PA|KAb+ROpO45y2oE$H)ho}`TMcf{T zpqT(cGd)Yef>k28GBfhw%q#CtkDmm@IP?06*_bp~lzj9ce^cP4uL9a#6wg==5m49tFXolnmMUI)b9!Gv0{5 zjIJ=QOxR$^I|pjuh#TOOjbXqUmh`kG>QoqK-hL^1w;S&)o(bC8g`Gf? z;p@@hFXlctK6m?s@yW+ZjQr`s3G%?3-z)@HZhXX_0`6>qC$;Ne{uw?0zRg^lbn;-U z7TdRt9wecE7(E_{2dBL@U0hMOrCO(AJoBODLf)y*OugfTZ;iBh#F$U_01 z9Kr>x90E=Xn-8WoC$;wVL2SxR@$n(hz`9X@Pzc<*flabthd8AZj*UnBoC2p20>NG{ zPK_O2{Qa+s-G%y49$=V0-igAA?eq~&i5w~b2Eez1`U2#PowuAS#X9G-xIplCLdTtM z1R-!$){bU~&=IG`?gMbK!Ts2UdkEH9$Un<^-u zdb~DVP&=Wjg?HhXy0q_)JrBVx$8V^|(GEcZ8j zDNCEy=M8sE>Q@CMcQcn>$RCwVW|jq%)7rG)nn`WJNMTsJJRpu_E(s_jkhkaL{)jGj zxGJnO-qDqWbtNIwmauM11kjyzNEcMX)!0bRgkg0gBRitjf#<3&P!&@Vy7b_lQ~P6T zqOf@6;Lqg2mf`ZBwvFx!C}Ble*#T8V1x~D!+aftDMt(A?9NTk68_L-fc=|I{eng#h zN4+epUN(I2@|y92Q2h@>bseEi&rKEmXi9DQvbt$1yKK}o_ViTt--KGb0@`VLF52m_ zogZsMyRB35eUSoFfC~I5EYFLSYzR;xP2q&R=u1WVbXNIT>G+n(th#_2HtnL~yy7$S z^OI_8*!=t_2Zt*!)}F5&>6*w}J0u_59MWwW-#&iucK?U{;|C@*J45E@!)hy-m)XjI z<{R)9ExVh)dbBE3UiI;Flld(Jjnn9LEPV{#ssfE)KDOnoYZ%5_Ia)rEwdUiZfckEH zo(&(Dg_>zCgVFzVM5YR0U=Wn&p*&Tx6nq^1^ZQc8WI=~xq7^-{TC@aeM+qj^&q z8>gsEUx3fCHLxv2<^1_i<%DJ*iOq!HYfN>^<@21s2)|-;^bmx|MeZm2$yC>G5<@3+ zHLC|ldK^_RuJyA#PM{aPm~rs@KJ)~nti6u!CfW{n8xV_7bweEUA^c_6yxlB z12bno0B6SZxPRvT-$Vzm&%GN5W`Hs=vVa>WX@SK@JWssF1Il7fRBA(6`X|jIQm?i!VF%_8kX&4O%hIW$lBv!z!Pa@ z;gdxQzUgsr;sZ=SM;=;u|E?8oaj+MXeH%vl3;bP8K-PZZ3z^#Q1MPZOmKH3zV1SQg zBD##h7Y1H9$ zVe`fI^X+eTe5zk{H!XL#`f~B7X{Dd%Rt2k&a*>~xj~L$61S{`m6^;~MZuvCJG-|!x zb*1Y)dt_<;MfG|0$ewrGF17u9@6^(DpDoS*MnU9NlQ9L6nFCig`i#N;f&SslNnHW2 zbSHJCA$e(XexDnj2~?qpfZKC;`5A4X63w&lLd&PR!VxR_?B^YOBx~up!$XJ9^iSxG z;D5GHjxm5;|{SvqvVKE@6{|8PHCy!fj-uSPu_T_jrbis}9e!C&ek z)0vZRarDxj9_A_b8oVMI?~(ylg_9)7uL#xWgyM5T^EsjYBe6V8ERPZme*}Hq>^mW2j@K zG_-olWaicoksirda&E`aj<|4I_D@Kc38ZDnz8+r}D|PZ=NE^+$kb2CZ$N}a20&` zLP|r$Pu@pyOsgfE$q_@0K=IgeJ{~W=kKbcPHJLU7Eg%|e!BJ#|DJF*3$hPf#+}6&= z7PwA;{Ma&zEDf#Pibg5@1lpk2*1e&2CfwSIhAfS#HDucG<0GnY?wS|@=`q876rq;d zk;g|>;pLB`X4-MchbX4ikU3-K@zvocYEk{1Pd1?XIk9DGGG`ReD(7QZ0K9zyEg*_5 zvyfzNL~n?RQQ`|oNKgXcVn$X>hLdu_uq39yNhP7w#8fz`CZwvs<3Uwel{ZX>R7GLQ W^7|TGQZ3FUmkqakOF)DP<-Y+Y*!_$E literal 0 HcmV?d00001 diff --git a/src/agent/utils/__pycache__/env_utils.cpython-312.pyc b/src/agent/utils/__pycache__/env_utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c785846df7e0538bd84ff5833d7fa0366f4e95f GIT binary patch literal 2452 zcmaJ?OKcNI7@l2w{fO;#aO@;bATcBm%u5hZiV+1&ViJqkiEM|5YiZ?V*6C8)8)i2N zah=vhJ%D<^oMKce=q(i-BK4BqpeLkWTx}{Pqe!h(RVp_q94dP0%sLLx6h@kF{?|AA z&-kC;KRFx?fDGSC!4bY-(lj!m*TL(;%d-H;Y%)QB|Iy%5vKhC`5GO` z2Hoa(%VyJU{987=Zgav$(eZHG1H%TJ*R8I49!aOJH*M;Ty6)c8w-Mb%Cb+Vvw!@nU zJ+Qf+*CxYFq8;yKw7}La49|NRUf8yU(M%Zc&Z-@5-@<5lFJlMn*urRiFQXIswlKW! zW$c8zwlLaY7wm?+;U3rn_d@?&Q?gxTMU!YC)0APoS}QMpB(MO~jd}&(%0~Td#OX^B6q)*&=8Z*Tsj+B4yvo&MAX5Zi zgKyY+ZCq!H>=!JFBQp-H8l^uM=nT0ay}>KRo_e+N$K&dc*0k3 zh4VA%tOSWIJ1zP$GV&GJ6FxtOSy{oRNs-YqB*lH&qk;CPWiP z^c;vb4Mcki=Jd_6LA*Ah(8K!l@haMXA~mLnNJ$;m{QP0Dox#~X;sQ9DUzI^ONXZButgy03dDrm4&5YpvRL{RJ4}Sm#@-?FSd(;)SK&C2{Fu)%&5wpL*0^wG96A%s?Yv zDISu*lKD7Tb_P2PkIk;2*YMcO5gFTuhaGjt-1m zlmID7?23e=Vd9C5#zOJ95DO+klO%I8emjj_L&4a<|2qFXjUD}Cu~;aY5E5gtX#6RC zSJ)Dc3<~jZG9=M=g?XAo|Ik?Ue9ichJTScNwQ=M^C^j4%ecDU7ezw5pqzNP|az;HU z!b!2fN9wvSM0C;wOcNg?IVTnzgR(rC6@C4>N*v}4dE6QKTEQ8S3sN?l_MNL4C`n0Y zNZn&oTwjTWlcz+K#@q;9s6LL;Gh|nN@r@&SmK3MogpD)}ME?s=4~4xH_E9)M0Nc*S zMlQxfF(DEh^&6tmbN(I3P8}w7Zi*BzqP+#_7h|e*Dnz>lHYh5>MiN7s)wnEY^{Pd* zU{EuK78=B5NQYBVD>bxHXs589x(rfYMGmU&pwK~~lY)=JE(%=~x+xqYfSrPn&gW${ ztx9rU5rpr+3t|SSi8?JOb26OHil2*cS@;r}anS}Wd)>z?h8euQLX*7<~g&~aZGEkGa8%9;quvq@a=F#Uc9Qgk7$j( zCC8eLzcF_M-I}{OS82N+*PMRMwy$JabGpiba_>UmcA&cB;G&{69o3x2O8lD3QN~m=)0&TKu0R!Rdu9TTBdffB)p>B0-?i%KTy^w3cbNCHCEJZexvM-~iQn(4 XT)O>v)wSnmN6$-OW>|Eb`~d#~Z53Vq literal 0 HcmV?d00001 diff --git a/src/agent/utils/__pycache__/image_utils.cpython-312.pyc b/src/agent/utils/__pycache__/image_utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..46cf7dc0a763338f82ee2164e729a79686a08426 GIT binary patch literal 6808 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 NsnidR@Jqg%{{>NkHrW6G literal 0 HcmV?d00001 diff --git a/src/agent/utils/agent_utils.py b/src/agent/utils/agent_utils.py index a449fd7..e9b4ee1 100644 --- a/src/agent/utils/agent_utils.py +++ b/src/agent/utils/agent_utils.py @@ -279,4 +279,5 @@ def assistant_text(value) -> str: return json.dumps(value, ensure_ascii=False) except TypeError: return str(value).strip() - return str(value).strip() \ No newline at end of file + return str(value).strip() + diff --git a/src/agent/web/__init__.py b/src/web/__init__.py similarity index 100% rename from src/agent/web/__init__.py rename to src/web/__init__.py diff --git a/src/web/__pycache__/__init__.cpython-312.pyc b/src/web/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0065abe0b2b7f634e7b2f9204c4be81ab259d0f3 GIT binary patch literal 256 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 Ih#v6&0o3rMasU7T literal 0 HcmV?d00001 diff --git a/src/web/__pycache__/ui_session.cpython-312.pyc b/src/web/__pycache__/ui_session.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e70b30c82b6ea37ab048b23086130e8a98393575 GIT binary patch literal 22205 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 { chatPlaceholder.hidden = false; - chatPlaceholder.innerHTML = `

无法连接服务

${escapeHtml(e.message)}

请从 Agent 目录执行:uvicorn agent.web.server:app --reload --host 127.0.0.1 --port 8765,并保证 PYTHONPATH 包含 src。

`; + chatPlaceholder.innerHTML = `

无法连接服务

${escapeHtml(e.message)}

请从 Agent 目录执行:uvicorn web.server:app --reload --host 127.0.0.1 --port 8765,并保证 PYTHONPATH 包含 src。

`; }); })(); \ No newline at end of file diff --git a/src/agent/web/image/background.jpg b/src/web/image/background.jpg similarity index 100% rename from src/agent/web/image/background.jpg rename to src/web/image/background.jpg diff --git a/src/agent/web/image/favicon.svg b/src/web/image/favicon.svg similarity index 100% rename from src/agent/web/image/favicon.svg rename to src/web/image/favicon.svg diff --git a/src/agent/web/image/microphone.svg b/src/web/image/microphone.svg similarity index 100% rename from src/agent/web/image/microphone.svg rename to src/web/image/microphone.svg diff --git a/src/agent/web/index.html b/src/web/index.html similarity index 100% rename from src/agent/web/index.html rename to src/web/index.html diff --git a/src/agent/web/server.py b/src/web/server.py similarity index 99% rename from src/agent/web/server.py rename to src/web/server.py index 6b830ce..3227878 100644 --- a/src/agent/web/server.py +++ b/src/web/server.py @@ -25,7 +25,7 @@ if str(_SRC) not in sys.path: sys.path.insert(0, str(_SRC)) from agent import chatbot_agent as ca # noqa: E402 -from agent.web import ui_session as ui # noqa: E402 +from web import ui_session as ui # noqa: E402 from agent.utils.image_utils import IMAGE_FILE_EXTENSIONS # noqa: E402 _WEB_DIR = Path(__file__).resolve().parent diff --git a/src/agent/web/ui_session.py b/src/web/ui_session.py similarity index 100% rename from src/agent/web/ui_session.py rename to src/web/ui_session.py