This commit is contained in:
2025-08-20 14:23:33 +08:00
parent 8e799f8d55
commit a59c956a2c
6 changed files with 69 additions and 8 deletions

View File

@@ -27,6 +27,7 @@ client = AsyncOpenAI(
# 初始化 ElasticSearch 工具 # 初始化 ElasticSearch 工具
search_util = EsSearchUtil(Config.ES_CONFIG) search_util = EsSearchUtil(Config.ES_CONFIG)
@router.post("/chat") @router.post("/chat")
async def chat(request: fastapi.Request): async def chat(request: fastapi.Request):
""" """
@@ -37,6 +38,8 @@ async def chat(request: fastapi.Request):
data = await request.json() data = await request.json()
user_id = data.get('user_id', 'anonymous') user_id = data.get('user_id', 'anonymous')
query = data.get('query', '') 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 session_id = data.get('session_id', str(uuid.uuid4())) # 获取或生成会话ID
include_history = data.get('include_history', True) 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): for i, (user_msg, ai_msg) in enumerate(recent_history, 1):
history_context += f"[对话 {i}] 用户: {user_msg}\n" history_context += f"[对话 {i}] 用户: {user_msg}\n"
history_context += f"[对话 {i}] 老师: {ai_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. 构建学生信息上下文 # 4. 构建学生信息上下文
student_context = "" 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]: if user_id in search_util.student_info and search_util.student_info[user_id]:
student_info_str = "\n\n学生基础信息:\n" 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}"] answer_tags = [f"{user_id}_answer", f"time:{current_time.split()[0]}", f"session:{session_id}"]
try: try:
seg_list = jieba.cut(answer_text, cut_all=False) 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_keywords = answer_keywords[:5]
answer_tags.extend([f"keyword:{kw}" for kw in answer_keywords]) answer_tags.extend([f"keyword:{kw}" for kw in answer_keywords])
except Exception as e: except Exception as e:
@@ -201,4 +211,3 @@ async def chat(request: fastapi.Request):
except Exception as e: except Exception as e:
logger.error(f"聊天接口异常: {str(e)}") logger.error(f"聊天接口异常: {str(e)}")
raise HTTPException(status_code=500, detail=f"处理请求失败: {str(e)}") raise HTTPException(status_code=500, detail=f"处理请求失败: {str(e)}")

View File

@@ -0,0 +1,47 @@
### 代数式与整式复习资料 一、代数式 1. 代数式的概念
由数和字母用运算符号连接所成的式子称为代数式。特别的,单独的一个数或一个字母也是代数式。
2. 代数式的书写规则
- 如果式子中出现了乘号,通常写作点或者省略不写。
- 数字与字母相乘时,常把数字放在字母的前面。
- 如果出现了除法,通常写成分数的形式。 3. 列代数式示例
- 某瓜子的单价为16元每千克购买N千克16N元。
- 1500米跑步测试某同学跑完全程的成绩是T秒平均速度1500/T 米每秒。
- 练习本单价1元圆珠笔单价2元买A本练习本和B支圆珠笔的总价A + 2B 元(带单位的相加或相减式子要用括号括起来)。 4. 代数式的值
一般的,用数值来代替代数式中的字母,按照代数式中的运算关系,计算得出的结果,称为代数式的值。
5. 代数式求值方法
- 直接代入法例如当A=2B=-1C=-30时求B²-4AC的值直接代入计算得25。
- 整体代入法例如若A²+2A-1=0求2A²+4A-1的值可由A²+2A=1整体代入得2×1-1=1。 二、整式 1. 整式的相关概念
- 整式:单项式和多项式统称为整式。
- 单项式:由数和字母的乘积组成的代数式,单独的一个数或者一个字母也是单项式。
- 单项式的次数:所有字母的指数和。
- 单项式的系数:单项式中的数字因数(注意负号)。
- 多项式:几个单项式的和。
- 多项式的项:多项式中的每个单项式,不含字母的项叫做常数项。
- 多项式的次数:多项式里次数最高项的次数。 2. 整式的加减运算
- 同类项:所含字母相同,并且相同字母的指数也相同的项。
- 合并同类项法则:系数相加减,字母和字母的指数保持不变。
- 去括号法则:括号前是正号,去掉括号后各项不变号;括号前是负号,去掉括号后各项都变号。 3. 整式的乘法运算
- 幂的运算:
- 同底数幂相乘底数不变指数相加a^m · a^n = a^(m+n))。
- 幂的乘方:底数不变,指数相乘((a^m)^n = a^(mn))。
- 积的乘方:各因式分别乘方,再把所得的幂相乘((ab)^n = a^n b^n
- 单项式与单项式相乘:系数、相同字母的幂分别相乘,单独的字母连同指数作为积的因式。
- 单项式与多项式相乘用单项式去乘多项式中的每一项m(a+b+c) = ma+mb+mc
- 多项式与多项式相乘:用一个多项式中的每一项分别乘以另一个多项式中的每一项((m+n)(a+b) = ma+mb+na+nb。 4. 乘法公式
- 平方差公式:两数的和乘以这两数的差等于两数的平方差((a+b)(a-b) = a²-b²
- 完全平方公式:两数的和(或差)的完全平方等于两数的平方和加上(或减去)它们乘积的二倍((a±b)² = a²±2ab+b²
- 常见恒等变换a²+b² = (a+b)²-2ab = (a-b)²+2ab(a+b)² = (a-b)²+4ab。 5. 整式的除法运算
- 同底数幂相除底数不变指数相减a^m ÷ a^n = a^(m-n)a≠0
- 单项式除以单项式:系数、相同字母的幂分别相除,单独的字母连同指数作为商的因式。
- 多项式除以单项式:用多项式的每一项除以单项式,再把所得的商相加。 6. 因式分解
- 定义:把一个多项式化成几个整式的乘积的形式(整式乘法的逆运算)。
- 方法:
- 提公因式法如果多项式中含有相同的因式提取出来ma+mb+mc = m(a+b+c))。
- 公式法利用平方差公式a²-b² = (a+b)(a-b)和完全平方公式a²±2ab+b² = (a±b)²)进行分解。
- 步骤:一提(提公因式)、二套(套公式)、三检验(分解到不能再分解为止)。 7. 因式分解示例
- x³-9x = x(x²-9) = x(x+3)(x-3)
- 16x⁴-1 = (4x²+1)(4x²-1) = (4x²+1)(2x+1)(2x-1)
- -9x²y+6xy²-y³ = -y(9x²-6xy+y²) = -y(3x-y)²
- (2a-b)²+8ab = 4a²-4ab+b²+8ab = 4a²+4ab+b² = (2a+b)²
### 总结
通过以上复习,应熟练掌握代数式的概念及求值方法,整式的相关概念,整式的加减、乘除运算,乘法公式的应用以及因式分解的方法和步骤。

View File

@@ -23,6 +23,9 @@ MIN_QUERY_INTERVAL = 1
last_query_time = 0 last_query_time = 0
# type_id = data.get('type_id', '1') # 1-教学模式2-对话模式
# yunxiao_sample = data.get('yunxiao_sample', False) # 是不是给长春云校做例子
def send_message(query): def send_message(query):
"""发送消息到聊天API并接收流式响应""" """发送消息到聊天API并接收流式响应"""
global last_query_time global last_query_time
@@ -42,6 +45,8 @@ def send_message(query):
"user_id": USER_ID, "user_id": USER_ID,
"query": query, "query": query,
"session_id": SESSION_ID, "session_id": SESSION_ID,
"type_id": 2,
"yunxiao_sample": True,
"include_history": True # 包含历史记录 "include_history": True # 包含历史记录
} }