feat: 现在使用工具调用来更新关系和心情而不是固定更新

This commit is contained in:
SengokuCola
2025-04-14 00:36:33 +08:00
parent d1bbda9e60
commit 7eba42f84a
16 changed files with 551 additions and 87 deletions

View File

@@ -0,0 +1,58 @@
from src.do_tool.tool_can_use.base_tool import BaseTool, register_tool
from src.plugins.config.config import global_config
from src.common.logger import get_module_logger
from src.plugins.moods.moods import MoodManager
from src.plugins.chat_module.think_flow_chat.think_flow_generator import ResponseGenerator
from typing import Dict, Any
logger = get_module_logger("change_mood_tool")
class ChangeMoodTool(BaseTool):
"""改变心情的工具"""
name = "change_mood"
description = "根据收到的内容和自身回复的内容,改变心情,当你回复了别人的消息,你可以使用这个工具"
parameters = {
"type": "object",
"properties": {
"text": {"type": "string", "description": "引起你改变心情的文本"},
"response_set": {"type": "list", "description": "你对文本的回复"}
},
"required": ["text", "response_set"],
}
async def execute(self, function_args: Dict[str, Any],message_txt:str) -> Dict[str, Any]:
"""执行心情改变
Args:
function_args: 工具参数
message_processed_plain_text: 原始消息文本
response_set: 原始消息文本
Returns:
Dict: 工具执行结果
"""
try:
response_set = function_args.get("response_set")
message_processed_plain_text = function_args.get("text")
mood_manager = MoodManager.get_instance()
gpt = ResponseGenerator()
if response_set is None:
response_set = ["你还没有回复"]
ori_response = ",".join(response_set)
_stance, emotion = await gpt._get_emotion_tags(ori_response, message_processed_plain_text)
mood_manager.update_mood_from_emotion(emotion, global_config.mood_intensity_factor)
return {"name": "change_mood", "content": f"你的心情刚刚变化了,现在的心情是: {emotion}"}
except Exception as e:
logger.error(f"心情改变工具执行失败: {str(e)}")
return {"name": "change_mood", "content": f"心情改变失败: {str(e)}"}
# 注册工具
# register_tool(ChangeMoodTool)

View File

@@ -0,0 +1,53 @@
from src.plugins.person_info.relationship_manager import relationship_manager
from src.common.logger import get_module_logger
from src.do_tool.tool_can_use.base_tool import BaseTool
from src.plugins.chat_module.think_flow_chat.think_flow_generator import ResponseGenerator
logger = get_module_logger("relationship_tool")
class RelationshipTool(BaseTool):
name = "change_relationship"
description = "根据收到的文本和回复内容,修改与特定用户的关系值,当你回复了别人的消息,你可以使用这个工具"
parameters = {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "收到的文本"
},
"changed_value": {
"type": "number",
"description": "变更值"
},
"reason": {
"type": "string",
"description": "变更原因"
}
},
"required": ["text", "changed_value", "reason"]
}
async def execute(self, args: dict,message_txt:str) -> dict:
"""执行工具功能
Args:
args: 包含工具参数的字典
text: 原始消息文本
changed_value: 变更值
reason: 变更原因
Returns:
dict: 包含执行结果的字典
"""
try:
text = args.get("text")
changed_value = args.get("changed_value")
reason = args.get("reason")
return {"content": f"因为你刚刚因为{reason},所以你和发[{text}]这条消息的人的关系值变化为{changed_value}"}
except Exception as e:
logger.error(f"修改关系值时发生错误: {str(e)}")
return {"content": f"修改关系值失败: {str(e)}"}

View File

@@ -47,4 +47,4 @@ class CompareNumbersTool(BaseTool):
# 注册工具
register_tool(CompareNumbersTool)
# register_tool(CompareNumbersTool)

View File

@@ -51,4 +51,4 @@ class GetCurrentTaskTool(BaseTool):
# 注册工具
register_tool(GetCurrentTaskTool)
# register_tool(GetCurrentTaskTool)

View File

@@ -132,4 +132,4 @@ class SearchKnowledgeTool(BaseTool):
# 注册工具
register_tool(SearchKnowledgeTool)
# register_tool(SearchKnowledgeTool)

View File

@@ -56,4 +56,4 @@ class GetMemoryTool(BaseTool):
# 注册工具
register_tool(GetMemoryTool)
# register_tool(GetMemoryTool)