app.py
CHANGED
@@ -419,17 +419,24 @@ def chatbot_response(message, history, window_size, threshold, score_threshold,u
|
|
419 |
#更新轮次,获取窗口历史
|
420 |
current_turn = len(history) + 1
|
421 |
|
422 |
-
combined_user_message =
|
423 |
-
combined_assistant_message = "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
424 |
|
425 |
#提取关键词
|
426 |
user_keywords = extract_keywords(combined_user_message).split(',')
|
427 |
-
assistant_keywords = extract_keywords(combined_assistant_message).split(',')
|
428 |
-
|
429 |
#获取关键词字典
|
430 |
keywords_dict = {keyword: user_weight for keyword in user_keywords}
|
431 |
-
|
432 |
-
|
|
|
|
|
433 |
|
434 |
for keyword in list(keywords_dict.keys()):
|
435 |
if keyword in triggered_keywords and current_turn - triggered_keywords[keyword] < window_size:
|
@@ -496,6 +503,12 @@ def chatbot_response(message, history, window_size, threshold, score_threshold,u
|
|
496 |
else:
|
497 |
score = 1
|
498 |
|
|
|
|
|
|
|
|
|
|
|
|
|
499 |
# 更新 group_scores 字典中的分数
|
500 |
if group_id in group_scores:
|
501 |
group_scores[group_id] += score
|
@@ -513,30 +526,12 @@ def chatbot_response(message, history, window_size, threshold, score_threshold,u
|
|
513 |
sorted_group_scores = sorted(group_scores.items(), key=lambda item: item[1], reverse=True)
|
514 |
print(f"group_scores: {sorted_group_scores}")
|
515 |
|
516 |
-
|
517 |
-
# if(candidates):
|
518 |
-
# # distance, ad_summary, ad_keywords=keyword_match(keywords_dict,candidates)
|
519 |
-
# distance,ad_summary,ad_keywords=candidates[0]['distance'],candidates[0]['summary'],candidates[0]['keyword_list']
|
520 |
-
# else:
|
521 |
-
# distance=1000
|
522 |
end_time=time.time()
|
523 |
print(f"Time taken for vecDB: {end_time - start_time}")
|
524 |
|
525 |
if distance < 1000:
|
526 |
pass
|
527 |
-
|
528 |
-
# print(f"ad_sumamry: {ad_summary}")
|
529 |
-
# messages = [{"role": "system", "content": "请你将生活化、原汁原味的语言提炼出来,具有亲切感,类似于拉家常的方式推销商品,具有融洽的氛围和口语化的语言。请直接输出融合的对话文本。"}]
|
530 |
-
# for val in history:
|
531 |
-
# if val[0]:
|
532 |
-
# messages.append({"role": "user", "content": val[0]})
|
533 |
-
# if val[1]:
|
534 |
-
# messages.append({"role": "assistant", "content": val[1]})
|
535 |
-
# messages.append({"role": "user", "content": ad_message})
|
536 |
-
|
537 |
-
# for keyword in keywords_dict.keys():
|
538 |
-
# if any(ad_keyword in keyword for ad_keyword in ad_keywords.split(',')):
|
539 |
-
# triggered_keywords[keyword] = current_turn
|
540 |
else:
|
541 |
messages = [{"role": "system", "content": "你是一个热情的聊天机器人。"}]
|
542 |
for val in history:
|
|
|
419 |
#更新轮次,获取窗口历史
|
420 |
current_turn = len(history) + 1
|
421 |
|
422 |
+
combined_user_message = message
|
423 |
+
combined_assistant_message = ""
|
424 |
+
|
425 |
+
for i in range(1, window_size + 1):
|
426 |
+
if len(history) >= i:
|
427 |
+
if i % 2 == 1: # 奇数轮次,添加 assistant 的内容
|
428 |
+
combined_assistant_message = " ".join([history[-i][1], combined_assistant_message]).strip()
|
429 |
+
else: # 偶数轮次,添加 user 的内容
|
430 |
+
combined_user_message = " ".join([history[-i][0], combined_user_message]).strip()
|
431 |
|
432 |
#提取关键词
|
433 |
user_keywords = extract_keywords(combined_user_message).split(',')
|
|
|
|
|
434 |
#获取关键词字典
|
435 |
keywords_dict = {keyword: user_weight for keyword in user_keywords}
|
436 |
+
if combined_assistant_message:
|
437 |
+
assistant_keywords = extract_keywords(combined_assistant_message).split(',')
|
438 |
+
for keyword in assistant_keywords:
|
439 |
+
keywords_dict[keyword] = keywords_dict.get(keyword, 0) + 1
|
440 |
|
441 |
for keyword in list(keywords_dict.keys()):
|
442 |
if keyword in triggered_keywords and current_turn - triggered_keywords[keyword] < window_size:
|
|
|
503 |
else:
|
504 |
score = 1
|
505 |
|
506 |
+
if keyword in triggered_keywords and current_turn - triggered_keywords[keyword] < window_size:
|
507 |
+
if(keyword == keyword_list[0]):
|
508 |
+
score = triggered_weight*3
|
509 |
+
else:
|
510 |
+
keywords_dict[keyword] = triggered_weight
|
511 |
+
|
512 |
# 更新 group_scores 字典中的分数
|
513 |
if group_id in group_scores:
|
514 |
group_scores[group_id] += score
|
|
|
526 |
sorted_group_scores = sorted(group_scores.items(), key=lambda item: item[1], reverse=True)
|
527 |
print(f"group_scores: {sorted_group_scores}")
|
528 |
|
|
|
|
|
|
|
|
|
|
|
|
|
529 |
end_time=time.time()
|
530 |
print(f"Time taken for vecDB: {end_time - start_time}")
|
531 |
|
532 |
if distance < 1000:
|
533 |
pass
|
534 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
535 |
else:
|
536 |
messages = [{"role": "system", "content": "你是一个热情的聊天机器人。"}]
|
537 |
for val in history:
|