From a59c956a2cdd4b56d32f30e3bb5a42a69b4a11ec Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Wed, 20 Aug 2025 14:23:33 +0800 Subject: [PATCH] 'commit' --- dsLightRag/Routes/QA.py | 13 ++++- .../BackgroundTasks.cpython-310.pyc | Bin 3872 -> 4066 bytes .../Routes/__pycache__/QA.cpython-310.pyc | Bin 6197 -> 6599 bytes .../Util/__pycache__/DocxUtil.cpython-310.pyc | Bin 3503 -> 3525 bytes dsLightRag/static/YunXiao.txt | 47 ++++++++++++++++++ dsSchoolBuddy/TestStart.py | 17 ++++--- 6 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 dsLightRag/static/YunXiao.txt diff --git a/dsLightRag/Routes/QA.py b/dsLightRag/Routes/QA.py index e58cebc4..356a46f5 100644 --- a/dsLightRag/Routes/QA.py +++ b/dsLightRag/Routes/QA.py @@ -27,6 +27,7 @@ client = AsyncOpenAI( # 初始化 ElasticSearch 工具 search_util = EsSearchUtil(Config.ES_CONFIG) + @router.post("/chat") async def chat(request: fastapi.Request): """ @@ -37,6 +38,8 @@ async def chat(request: fastapi.Request): data = await request.json() user_id = data.get('user_id', 'anonymous') query = data.get('query', '') + type_id = data.get('type_id', '1') # 1-教学模式,2-对话模式 + yunxiao_sample = data.get('yunxiao_sample', False) # 是不是给长春云校做例子 session_id = data.get('session_id', str(uuid.uuid4())) # 获取或生成会话ID include_history = data.get('include_history', True) @@ -96,6 +99,9 @@ async def chat(request: fastapi.Request): for i, (user_msg, ai_msg) in enumerate(recent_history, 1): history_context += f"[对话 {i}] 用户: {user_msg}\n" history_context += f"[对话 {i}] 老师: {ai_msg}\n" + if yunxiao_sample: + with open(r"D:\dsWork\dsProject\dsLightRag\static\YunXiao.txt", "r", encoding="utf-8") as f: + history_context += f"[讨论的内容] " + f.read() + "\n" # 4. 构建学生信息上下文 student_context = "" @@ -121,6 +127,9 @@ async def chat(request: fastapi.Request): 最重要的是:不要直接给出答案,而是通过合作和基于学生已有知识的引导,帮助学生自己找到答案。 """ + if type_id == 2: + system_prompt = "你是一位具有丰富经验的K12教师,可以解答学生提出的各类问题。" + # 添加学生信息到系统提示词 if user_id in search_util.student_info and search_util.student_info[user_id]: student_info_str = "\n\n学生基础信息:\n" @@ -171,7 +180,8 @@ async def chat(request: fastapi.Request): answer_tags = [f"{user_id}_answer", f"time:{current_time.split()[0]}", f"session:{session_id}"] try: seg_list = jieba.cut(answer_text, cut_all=False) - answer_keywords = [kw for kw in seg_list if kw.strip() and kw not in search_util.STOPWORDS and len(kw) > 1] + answer_keywords = [kw for kw in seg_list if + kw.strip() and kw not in search_util.STOPWORDS and len(kw) > 1] answer_keywords = answer_keywords[:5] answer_tags.extend([f"keyword:{kw}" for kw in answer_keywords]) except Exception as e: @@ -201,4 +211,3 @@ async def chat(request: fastapi.Request): except Exception as e: logger.error(f"聊天接口异常: {str(e)}") raise HTTPException(status_code=500, detail=f"处理请求失败: {str(e)}") - diff --git a/dsLightRag/Routes/TeachingModel/tasks/__pycache__/BackgroundTasks.cpython-310.pyc b/dsLightRag/Routes/TeachingModel/tasks/__pycache__/BackgroundTasks.cpython-310.pyc index c95abd0c52bcf425b47ebbb74e3a69d67bacdb31..6a5846b527dc72badbbc269c4b106b1c7d41810c 100644 GIT binary patch delta 1217 zcmb_c&1(}u6rVS{`QF{6`7}vux3+3)qo$3Ti#=(fA_nwQ6r_es)cUcdlMTgX)&!~` zf)bgd7E;iwD7|@6^dNdvyyT{TfO_%bMQ1lLRTS~y!o2ytd2fF6dpjTPtsjQ9B~=X~ z@x`hS&L16mteu8%R=CdC3(;y1Wp2TYglUOCae5=nzd{X$xPi~)h-3$?W7dSJGVdxJ zK?KbqJ7j9iw+gnx6oTqN->}eyFjM$PJk~HUk?r6-GBPqUBUe5FvQ64k_* zhm7Cq)eA_7_mT;coq1~%h% zbP?Gx7CnqkhwZo-XK}JSEsAC_!5Swi2OmT&SboG}?F89F)OBnpT)fxCjil?0xK7H& z+g!YbsCJsAhW6kbAjxP_^YCHu(9=#GgQT}1LME#yx95WXhc8Lzw6x07gK}&sMrM|F|%jF0w^|%UuL{ux+~ zPVC>Hp4R}KjTv7S0v(v{K+!s&^W|WcKl5j>rEJ{s7Xc3OSAiVP75SIIm^a^nDXSoI z3MFeWr<=6AXe^w)R6eKA=y`p9ZuZ2izDR`gTXgEL(P{1rJ%ucP8M-~HbXjS&R=;GP zl4$u{$5&Z0%&K8_pi0Byn)9l19rFCGGBuX$W|O5#{j$hds4UfmEuIS1s%2U^?~3D+ zdJXRL8){LPLBoFRhYUnP#&T1GLGU;6H{8@E4Q~PdPR$n-P(X&DXyZ5z5!mY5E{;g} mKFtXY6G`g4JT&c?A)XUY(J;TM9Zxtx>O4q4nMwXx%YO&`9w}b{ delta 952 zcmb_b&1(}u6rVSn&&_@%P0}VQc5P$Z*r-Vmd$9-6N(B$Km!eQKblO@gTe=-64YQ^Y zL{Th(Io80&zrZ#Z@#4Xo;7t&E?7@QvK@fz3=xkd}tI(4RJ8#~{Z|41e!`ta`PiTv( zDkJed`uO5*e`-^k0zD~QFZNda%iknkfe{Jpul%)Vtu4L_%Mj)kzGGIdR(h$*0yVgX z2pU6l{QQ;75~;5yik zN#7BGCIH%D0QI{8lI5SJp{gtxbTB_T_3VHfAklV!^fQ0EZ7bsutHbK-|E5+Y14ml@ zhZ`AWK9BhZBDsd-=rqXmHWkO1M^2O(SJ0I1#Auww$Z1a{78R$)h>)ZP7f~ISp0lW% zAVWlLVy9zopWoY8<19|p1)osuJvsCHss?rvLbF8sBJnI))^Sj|L(U#ssgrZZ<*DTQ zNTIo>cW4X&T8ib0t$g4ez^&HzU_I`QJ95GAgS&Ge<2HeI`RgRyiZv- zB)dGf9h_dY=!`|TVTOND9`YqM&0nfDSm)=p;iQH`I1O>opc_JK_$OX7B?I%PT46vI x!5GNcTQzKef$^rD6BCw8+Fiof-qhJ?{zXh+H@~jmNO(!xo5MrPAm7ppzW`isOKp7&$U_iRl=7UK>83HzCgtXal6qrGTj-5L zhw8$JBAN*G!3-dR1A;j6N5_Bub0&Xj+A`zF;J{z;>`e=0Mv~d@o;`c^oNvE-Hu+)M zZ!2sutF;8d=X`kN-FtH{+shy1jaQ_7hJ#pM8%E61_$H)DU>U*J zu1HyvCgpHSR7E+cip;M`O-L!pnu%RANT(5Ts3L9SYST`(n8lhDK{@U;I>Y5KMv66S zBQC(w9C$O3nz%KTwdWA=lp_{Jyc*A*VLm1G%vT)yoEk?=#5csH45W;d4u@hxZrD`!%M?3>EN z2JwqjTec#He2~M3SdJDDBP}2S_461-O?5yjey|%3%f35d0BvEiix}bWi+xkB+hlP@ zn3`uRa|lTLfpBTcu9lJ|`#Fdo(FC$owd?eFCnJt{6~qUr#S;vgEt zgWMoLC=7~&QoDgXN9qTRDW_7UI{TqTThKO8Oc959futwNd{iGvRQy-q{ zGQD-U+8V`1Mb%fT@cck0qZ}BceTS93Kc688Rj1_dfp##sMR}D?#X7=Ml9~#9HHlH-I<8)08&eo zLrNaYJz_#>U)&JDd1ENr79){pIN^k(yC*JwGjZ|8_@@JfqeluCf82ZJZ&MfFc9(;- zL<_*^t?byTOQY9&M{f-kj$9l2EHirjyTYYo<2R4rJ%0@LZK_*7cJhEVNg#$JTQLw=G~7k-u?2_o!-8Lm)pLw6f$8sthARn6d8VqAm8xCOw7B+NbX!jLev zIhyf2NM5~ZKHJPxEo%O(G&fkp0)T`Ypm6$gb|UTQ#HFFaxyut*M;d3y3+Yuy3fIu( z&K>2;At*2Gi^rmQkt901;xLItqOzZ!b#B0o^e<;Kot1DoB z{MPej^h0+U9;Pn$8qCoax1XP|SJI^WaG*wB!wT@>kRrdPmr5j{_e6#(WuB$VHx#l0zfJ$~1UTGIE4=;%yI6!S!FFcp-QNrrJ5Kx@0M{!>Hf+Hb+Unh%marXram^z^ zD8m9+CD@HCIDs#*3b>4a;xWR^@`9c7LX@%B4pClsa{tOKcc8K;r=cSj4#P!|Tfr&s z0mvKLgK&MiB1O5_CD7H)OH7Yogf8}l@n(9`H*a+l3pc&8t#!@TE$cR}*Y(c}U9q^5 aH@q1-kO;*Uz1Xy?U3}B@p|6?ez4$-N7)*2k delta 1792 zcmZ`&TTC2P7(VCBb+0VTURYp3DYvaiTWe~oZM2rQ(AtY2ExlN>@hk|1T{=500cYG& zFgqBVkQ^UO2yr*j2Q?v@#>9u3^vyIr`nHcI#+Vpm(s%X$XLqF-*<`=--{$-N`TsLN z9Q<~FFc%1T3H-je^!dAwyS@p2M&luHF}4E#d{`!AnXc2NAH`$Z|DwrEsU(-l3N5oW z$)Y97HLjPL%^a2=Fct3MUhcck?omfF)fw#$H4cm8tf}{^sg^vBTBf#SNyeCkS=~{O z64P7qalfN(5FW53@gD1@K~ZLjLW3D7HIxbH5J%-9hm=BP!W$E0gKRP$b|gHfBwJqU zGaF~Z4&zNca-Z1>kMh_mv6MmR(pD{%Qy%|-B?#DZsfjncSrxNoN~`(_3-mV``j<&| zKqh9SuvnqQ)+kx(gchT`#blPYLhEG?bKBWT-MW+dGPy!HwYB%PtWrG}=mJ@4f>FdA zX31q%lW%ihKWWLpF4vkUB(aNiy6CI55pvsT-`U3hOK@e4T5O#fXKGs@XyZN{DM8?j z`=Bv*Cc33#j(4n4v)R)5Gb?P6yq&zx3byAuv%R*@q5N6P1MBIuynuT)m6ymG{WscW z`L?6$^j1HJ%Z`fcy@RsL)kP;r`qqV!D-$CZ#?B9pR;2mde9B`SKv6z}fhBw4VvHrpknr9JS$0FIB zp37A9ylG6jmS;BiPI?wi;{+BBBAi4xg>V|-5W*RRa{v`jCVLyo(`KfkOq-dxyrEz& z0+0$Bek_rB+Dsc^FuSh$r?Zo}iAf_jH<8I39xT0xHTuoW;zG{gdE-rSE1nXY@%Ele zn04QF1TFWP903a_mj4)l-Idj#_$7YrhAcHxnZ~G>MraEIFSzaLv{~{W3$Ykf=yyX< z5rdQcWgu6owK^_sHa9gjot-kSLC_cnsA!YvyqTV#HU`C)%@!RJy@}ot+pO=@50SJUsmuAcn-^eG!!W+dElv`CcTF~ApTNtM#k_#E zhGik+1jZug$p_e#;}Z(QYd9A0q=+nJEGhu9cvD0dG8X59Sz;hDusmOi_(H}M=4{sd zZlDZbiUgR)QUKveqVS|3yjsp0&Z3`_oj4o?x7YBdux2wAZ?EC0;mu|#+B10yha%(6 z$=f&*8N(+_aH@)ihcl!wumE8*Gb2MDry;`x#$xfwL7bM1CX;(O6_`>OHm~AzVPrI% z{GQ8-QFF2ucMGGzXE?xW!Uh onwb(cc>|9Nqr~K|JaH!B>)oG4y!PA>OKam%td4GgceM@za+WOi8{8?xsKMkw29_FWo-I zWLFK}x`x(Q53@q6Qyyr5Rg@9q!3Nlcb`)}R?YhbP8o)gz?|xNQOdf7Ca`4L{9jyPC zo#;ZhzA&q0CYyqBZ%MVAf(lk5*8P#6$0`8I-ncLX<?D@4AEM^5NTr3SViH}q*p;FTV0J?L`)DFkB%;y7zmVG