diff --git a/src/do_tool/tool_can_use/fibonacci_sequence_tool.py b/src/do_tool/tool_can_use/fibonacci_sequence_tool.py new file mode 100644 index 000000000..31ca4d0a7 --- /dev/null +++ b/src/do_tool/tool_can_use/fibonacci_sequence_tool.py @@ -0,0 +1,56 @@ +from src.do_tool.tool_can_use.base_tool import BaseTool, register_tool +from src.common.logger import get_module_logger +from typing import Dict, Any + +logger = get_module_logger("fibonacci_sequence_tool") + +class FibonacciSequenceTool(BaseTool): + """生成斐波那契数列的工具""" + name = "fibonacci_sequence" + description = "生成指定长度的斐波那契数列" + parameters = { + "type": "object", + "properties": { + "n": { + "type": "integer", + "description": "斐波那契数列的长度", + "minimum": 1 + } + }, + "required": ["n"] + } + + async def execute(self, function_args: Dict[str, Any], message_txt: str = "") -> Dict[str, Any]: + """执行工具功能 + + Args: + function_args: 工具参数 + message_txt: 原始消息文本 + + Returns: + Dict: 工具执行结果 + """ + try: + n = function_args.get("n") + if n <= 0: + raise ValueError("参数n必须大于0") + + sequence = [] + a, b = 0, 1 + for _ in range(n): + sequence.append(a) + a, b = b, a + b + + return { + "name": self.name, + "content": sequence + } + except Exception as e: + logger.error(f"fibonacci_sequence工具执行失败: {str(e)}") + return { + "name": self.name, + "content": f"执行失败: {str(e)}" + } + +# 注册工具 +register_tool(FibonacciSequenceTool) \ No newline at end of file diff --git a/src/do_tool/tool_can_use/generate_buddha_emoji_tool.py b/src/do_tool/tool_can_use/generate_buddha_emoji_tool.py new file mode 100644 index 000000000..559b6eadd --- /dev/null +++ b/src/do_tool/tool_can_use/generate_buddha_emoji_tool.py @@ -0,0 +1,44 @@ +from src.do_tool.tool_can_use.base_tool import BaseTool, register_tool +from src.common.logger import get_module_logger +from typing import Dict, Any + +logger = get_module_logger("generate_buddha_emoji_tool") + +class GenerateBuddhaEmojiTool(BaseTool): + """生成佛祖颜文字的工具类""" + name = "generate_buddha_emoji" + description = "生成一个佛祖的颜文字表情" + parameters = { + "type": "object", + "properties": { + # 无参数 + }, + "required": [] + } + + async def execute(self, function_args: Dict[str, Any], message_txt: str = "") -> Dict[str, Any]: + """执行工具功能,生成佛祖颜文字 + + Args: + function_args: 工具参数 + message_txt: 原始消息文本 + + Returns: + Dict: 工具执行结果 + """ + try: + buddha_emoji = "这是一个佛祖emoji:༼ つ ◕_◕ ༽つ" + + return { + "name": self.name, + "content": buddha_emoji + } + except Exception as e: + logger.error(f"generate_buddha_emoji工具执行失败: {str(e)}") + return { + "name": self.name, + "content": f"执行失败: {str(e)}" + } + +# 注册工具 +register_tool(GenerateBuddhaEmojiTool) \ No newline at end of file diff --git a/src/do_tool/tool_can_use/generate_cmd_tutorial_tool.py b/src/do_tool/tool_can_use/generate_cmd_tutorial_tool.py new file mode 100644 index 000000000..6a790adb6 --- /dev/null +++ b/src/do_tool/tool_can_use/generate_cmd_tutorial_tool.py @@ -0,0 +1,73 @@ +from src.do_tool.tool_can_use.base_tool import BaseTool, register_tool +from src.common.logger import get_module_logger +from typing import Dict, Any + +logger = get_module_logger("generate_cmd_tutorial_tool") + +class GenerateCmdTutorialTool(BaseTool): + """生成Windows CMD基本操作教程的工具""" + name = "generate_cmd_tutorial" + description = "生成关于Windows命令提示符(CMD)的基本操作教程,包括常用命令和使用方法" + parameters = { + "type": "object", + "properties": {}, + "required": [] + } + + async def execute(self, function_args: Dict[str, Any], message_txt: str = "") -> Dict[str, Any]: + """执行工具功能 + + Args: + function_args: 工具参数 + message_txt: 原始消息文本 + + Returns: + Dict: 工具执行结果 + """ + try: + tutorial_content = """ +# Windows CMD 基本操作教程 + +## 1. 基本导航命令 +- `dir`: 列出当前目录下的文件和文件夹 +- `cd <目录名>`: 进入指定目录 +- `cd..`: 返回上一级目录 +- `cd\\`: 返回根目录 + +## 2. 文件操作命令 +- `copy <源文件> <目标位置>`: 复制文件 +- `move <源文件> <目标位置>`: 移动文件 +- `del <文件名>`: 删除文件 +- `ren <旧文件名> <新文件名>`: 重命名文件 + +## 3. 系统信息命令 +- `systeminfo`: 显示系统配置信息 +- `hostname`: 显示计算机名称 +- `ver`: 显示Windows版本 + +## 4. 网络相关命令 +- `ipconfig`: 显示网络配置信息 +- `ping <主机名或IP>`: 测试网络连接 +- `tracert <主机名或IP>`: 跟踪网络路径 + +## 5. 实用技巧 +- 按Tab键可以自动补全文件名或目录名 +- 使用`> <文件名>`可以将命令输出重定向到文件 +- 使用`| more`可以分页显示长输出 + +注意:使用命令时要小心,特别是删除操作。 +""" + + return { + "name": self.name, + "content": tutorial_content + } + except Exception as e: + logger.error(f"generate_cmd_tutorial工具执行失败: {str(e)}") + return { + "name": self.name, + "content": f"执行失败: {str(e)}" + } + +# 注册工具 +register_tool(GenerateCmdTutorialTool) \ No newline at end of file diff --git a/src/plugins/PFC/action_planner.py b/src/plugins/PFC/action_planner.py index b6b47f8b9..53b95118b 100644 --- a/src/plugins/PFC/action_planner.py +++ b/src/plugins/PFC/action_planner.py @@ -24,7 +24,7 @@ class ActionPlanner: def __init__(self, stream_id: str): self.llm = LLM_request( - model=global_config.llm_normal, temperature=0.7, max_tokens=1000, request_type="action_planning" + model=global_config.llm_normal, temperature=0.2, max_tokens=1000, request_type="action_planning" ) self.personality_info = Individuality.get_instance().get_prompt(type="personality", x_person=2, level=2) self.name = global_config.BOT_NICKNAME diff --git a/src/plugins/PFC/reply_generator.py b/src/plugins/PFC/reply_generator.py index 40083e041..11edf25a4 100644 --- a/src/plugins/PFC/reply_generator.py +++ b/src/plugins/PFC/reply_generator.py @@ -16,7 +16,7 @@ class ReplyGenerator: def __init__(self, stream_id: str): self.llm = LLM_request( - model=global_config.llm_normal, temperature=0.3, max_tokens=300, request_type="reply_generation" + model=global_config.llm_normal, temperature=0.2, max_tokens=300, request_type="reply_generation" ) self.personality_info = Individuality.get_instance().get_prompt(type="personality", x_person=2, level=2) self.name = global_config.BOT_NICKNAME