Merge branch 'dev' of https://github.com/MaiM-with-u/MaiBot into dev
This commit is contained in:
@@ -66,9 +66,9 @@
|
||||
|
||||
## 💬 讨论
|
||||
|
||||
- [一群](https://qm.qq.com/q/VQ3XZrWgMs) |
|
||||
[四群](https://qm.qq.com/q/wGePTl1UyY) |
|
||||
[二群](https://qm.qq.com/q/RzmCiRtHEW) |
|
||||
- [四群](https://qm.qq.com/q/wGePTl1UyY) |
|
||||
[一群](https://qm.qq.com/q/VQ3XZrWgMs)(已满) |
|
||||
[二群](https://qm.qq.com/q/RzmCiRtHEW)(已满) |
|
||||
[五群](https://qm.qq.com/q/JxvHZnxyec)(已满) |
|
||||
[三群](https://qm.qq.com/q/wlH5eT8OmQ)(已满)
|
||||
|
||||
|
||||
@@ -209,14 +209,14 @@ class ExpressionSelector:
|
||||
return []
|
||||
|
||||
all_situations_str = "\n".join(all_situations)
|
||||
|
||||
|
||||
if target_message:
|
||||
target_message_str = f",现在你想要回复消息:{target_message}"
|
||||
target_message_extra_block = f"4.考虑你要回复的目标消息"
|
||||
target_message_extra_block = "4.考虑你要回复的目标消息"
|
||||
else:
|
||||
target_message_str = ""
|
||||
target_message_extra_block = ""
|
||||
|
||||
|
||||
# 3. 构建prompt(只包含情境,不包含完整的表达方式)
|
||||
prompt = (await global_prompt_manager.get_prompt_async("expression_evaluation_prompt")).format(
|
||||
bot_name=global_config.bot.nickname,
|
||||
@@ -227,7 +227,7 @@ class ExpressionSelector:
|
||||
target_message=target_message_str,
|
||||
target_message_extra_block=target_message_extra_block,
|
||||
)
|
||||
|
||||
|
||||
# print(prompt)
|
||||
|
||||
# 4. 调用LLM
|
||||
|
||||
@@ -649,7 +649,6 @@ class HeartFChatting:
|
||||
|
||||
return all_plan_info, processor_time_costs
|
||||
|
||||
|
||||
async def _process_post_planning_processors_with_timing(
|
||||
self, observations: List[Observation], action_type: str, action_data: dict
|
||||
) -> tuple[dict, dict]:
|
||||
@@ -681,9 +680,7 @@ class HeartFChatting:
|
||||
start_time = time.time()
|
||||
try:
|
||||
result = await asyncio.wait_for(
|
||||
proc.process_info(
|
||||
observations=observations, action_type=action_type, action_data=action_data
|
||||
),
|
||||
proc.process_info(observations=observations, action_type=action_type, action_data=action_data),
|
||||
timeout=global_config.focus_chat.processor_max_time,
|
||||
)
|
||||
end_time = time.time()
|
||||
|
||||
@@ -181,14 +181,13 @@ class HeartFCMessageReceiver:
|
||||
mes_name = chat.group_info.group_name if chat.group_info else "私聊"
|
||||
# current_time = time.strftime("%H:%M:%S", time.localtime(message.message_info.time))
|
||||
current_talk_frequency = global_config.chat.get_current_talk_frequency(chat.stream_id)
|
||||
|
||||
|
||||
# 如果消息中包含图片标识,则日志展示为图片
|
||||
import re
|
||||
|
||||
picid_match = re.search(r"\[picid:([^\]]+)\]", message.processed_plain_text)
|
||||
if picid_match:
|
||||
logger.info(
|
||||
f"[{mes_name}]{userinfo.user_nickname}: [图片] [当前回复频率: {current_talk_frequency}]"
|
||||
)
|
||||
logger.info(f"[{mes_name}]{userinfo.user_nickname}: [图片] [当前回复频率: {current_talk_frequency}]")
|
||||
else:
|
||||
logger.info(
|
||||
f"[{mes_name}]{userinfo.user_nickname}:{message.processed_plain_text}[当前回复频率: {current_talk_frequency}]"
|
||||
|
||||
@@ -13,7 +13,6 @@ from typing import List
|
||||
from typing import Dict
|
||||
from src.chat.focus_chat.info.info_base import InfoBase
|
||||
from src.chat.focus_chat.info.relation_info import RelationInfo
|
||||
from src.person_info.person_info import PersonInfoManager
|
||||
from json_repair import repair_json
|
||||
from src.person_info.person_info import get_person_info_manager
|
||||
import json
|
||||
@@ -26,7 +25,6 @@ from src.chat.utils.chat_message_builder import (
|
||||
)
|
||||
import os
|
||||
import pickle
|
||||
import random
|
||||
|
||||
|
||||
# 消息段清理配置
|
||||
@@ -446,8 +444,8 @@ class PersonImpressionpProcessor(BaseProcessor):
|
||||
List[InfoBase]: 处理后的结构化信息列表
|
||||
"""
|
||||
await self.build_relation(observations)
|
||||
|
||||
relation_info_str = await self.relation_identify(observations,action_type,action_data)
|
||||
|
||||
relation_info_str = await self.relation_identify(observations, action_type, action_data)
|
||||
|
||||
if relation_info_str:
|
||||
relation_info = RelationInfo()
|
||||
@@ -462,7 +460,7 @@ class PersonImpressionpProcessor(BaseProcessor):
|
||||
"""构建关系"""
|
||||
self._cleanup_old_segments()
|
||||
current_time = time.time()
|
||||
|
||||
|
||||
if observations:
|
||||
for observation in observations:
|
||||
if isinstance(observation, ChattingObservation):
|
||||
@@ -518,7 +516,7 @@ class PersonImpressionpProcessor(BaseProcessor):
|
||||
# 移除已处理的用户缓存
|
||||
del self.person_engaged_cache[person_id]
|
||||
self._save_cache()
|
||||
|
||||
|
||||
async def relation_identify(
|
||||
self,
|
||||
observations: List[Observation] = None,
|
||||
@@ -527,7 +525,7 @@ class PersonImpressionpProcessor(BaseProcessor):
|
||||
):
|
||||
"""
|
||||
从人物获取信息
|
||||
"""
|
||||
"""
|
||||
|
||||
chat_observe_info = ""
|
||||
current_time = time.time()
|
||||
@@ -567,7 +565,6 @@ class PersonImpressionpProcessor(BaseProcessor):
|
||||
self.last_processed_message_time = max(self.last_processed_message_time, msg_time)
|
||||
break
|
||||
|
||||
|
||||
for person_id in list(self.info_fetched_cache.keys()):
|
||||
for info_type in list(self.info_fetched_cache[person_id].keys()):
|
||||
self.info_fetched_cache[person_id][info_type]["ttl"] -= 1
|
||||
@@ -575,11 +572,7 @@ class PersonImpressionpProcessor(BaseProcessor):
|
||||
del self.info_fetched_cache[person_id][info_type]
|
||||
if not self.info_fetched_cache[person_id]:
|
||||
del self.info_fetched_cache[person_id]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if action_type != "reply":
|
||||
return None
|
||||
|
||||
@@ -831,7 +824,6 @@ class PersonImpressionpProcessor(BaseProcessor):
|
||||
logger.info(f"{self.log_prefix} 记得 {person_name} 的 {info_type}: {cached_info}")
|
||||
return
|
||||
|
||||
|
||||
try:
|
||||
person_name = await person_info_manager.get_value(person_id, "person_name")
|
||||
person_impression = await person_info_manager.get_value(person_id, "impression")
|
||||
@@ -864,9 +856,7 @@ class PersonImpressionpProcessor(BaseProcessor):
|
||||
return
|
||||
|
||||
nickname_str = ",".join(global_config.bot.alias_names)
|
||||
name_block = (
|
||||
f"你的名字是{global_config.bot.nickname},你的昵称有{nickname_str},有人也会用这些昵称称呼你。"
|
||||
)
|
||||
name_block = f"你的名字是{global_config.bot.nickname},你的昵称有{nickname_str},有人也会用这些昵称称呼你。"
|
||||
prompt = (await global_prompt_manager.get_prompt_async("fetch_person_info_prompt")).format(
|
||||
name_block=name_block,
|
||||
info_type=info_type,
|
||||
|
||||
@@ -8,7 +8,7 @@ from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
|
||||
from src.tools.tool_use import ToolUser
|
||||
from src.chat.utils.json_utils import process_llm_tool_calls
|
||||
from .base_processor import BaseProcessor
|
||||
from typing import List, Optional
|
||||
from typing import List
|
||||
from src.chat.heart_flow.observation.observation import Observation
|
||||
from src.chat.focus_chat.info.structured_info import StructuredInfo
|
||||
from src.chat.heart_flow.observation.structure_observation import StructureObservation
|
||||
@@ -92,9 +92,7 @@ class ToolProcessor(BaseProcessor):
|
||||
|
||||
return [structured_info]
|
||||
|
||||
async def execute_tools(
|
||||
self, observation: ChattingObservation, action_type: str = None, action_data: dict = None
|
||||
):
|
||||
async def execute_tools(self, observation: ChattingObservation, action_type: str = None, action_data: dict = None):
|
||||
"""
|
||||
并行执行工具,返回结构化信息
|
||||
|
||||
|
||||
@@ -126,10 +126,9 @@ class PromptBuilder:
|
||||
(chat_stream.user_info.platform, chat_stream.user_info.user_id) if chat_stream.user_info else None,
|
||||
limit=global_config.normal_chat.max_context_size,
|
||||
)
|
||||
elif chat_stream.user_info:
|
||||
who_chat_in_group.append(
|
||||
(chat_stream.user_info.platform, chat_stream.user_info.user_id, chat_stream.user_info.user_nickname)
|
||||
)
|
||||
who_chat_in_group.append(
|
||||
(chat_stream.user_info.platform, chat_stream.user_info.user_id, chat_stream.user_info.user_nickname)
|
||||
)
|
||||
|
||||
relation_prompt = ""
|
||||
if global_config.relationship.enable_relationship:
|
||||
|
||||
Reference in New Issue
Block a user