From c5bfbd79bd357413a2387618e82abd5a682d7e27 Mon Sep 17 00:00:00 2001 From: Wendong Date: Tue, 11 Mar 2025 16:26:57 +0800 Subject: [PATCH] add FileWriteToolkit to example --- owl/run.py | 2 + owl/run_deepseek_zh.py | 2 + owl/run_gaia_roleplaying.py | 2 + owl/run_mini.py | 2 + owl/run_openai_compatiable_model.py | 2 + owl/run_qwen_mini_zh.py | 3 +- owl/run_qwen_zh.py | 2 + owl/run_write_files.py | 144 ---------------------------- 8 files changed, 14 insertions(+), 145 deletions(-) delete mode 100644 owl/run_write_files.py diff --git a/owl/run.py b/owl/run.py index 3ba9206..823dc08 100644 --- a/owl/run.py +++ b/owl/run.py @@ -21,6 +21,7 @@ from camel.toolkits import ( SearchToolkit, VideoAnalysisToolkit, WebToolkit, + FileWriteToolkit, ) from camel.types import ModelPlatformType, ModelType from camel.logger import set_log_level @@ -97,6 +98,7 @@ def construct_society(question: str) -> OwlRolePlaying: SearchToolkit().search_wiki, *ExcelToolkit().get_tools(), *DocumentProcessingToolkit(model=models["document"]).get_tools(), + *FileWriteToolkit(output_dir="./").get_tools(), ] # Configure agent roles and parameters diff --git a/owl/run_deepseek_zh.py b/owl/run_deepseek_zh.py index e7bad12..a268843 100644 --- a/owl/run_deepseek_zh.py +++ b/owl/run_deepseek_zh.py @@ -26,6 +26,7 @@ from camel.toolkits import ( CodeExecutionToolkit, ExcelToolkit, SearchToolkit, + FileWriteToolkit, ) from camel.types import ModelPlatformType, ModelType @@ -95,6 +96,7 @@ def construct_society(question: str) -> OwlRolePlaying: SearchToolkit().search_wiki, *ExcelToolkit().get_tools(), *DocumentProcessingToolkit(model=models["document"]).get_tools(), + *FileWriteToolkit(output_dir="./").get_tools(), ] # Configure agent roles and parameters diff --git a/owl/run_gaia_roleplaying.py b/owl/run_gaia_roleplaying.py index 652ccc2..5f22aae 100644 --- a/owl/run_gaia_roleplaying.py +++ b/owl/run_gaia_roleplaying.py @@ -27,6 +27,7 @@ from camel.toolkits import ( SearchToolkit, VideoAnalysisToolkit, WebToolkit, + FileWriteToolkit, ) from camel.types import ModelPlatformType, ModelType from camel.configs import ChatGPTConfig @@ -101,6 +102,7 @@ def main(): *ImageAnalysisToolkit(model=models["image"]).get_tools(), *SearchToolkit().get_tools(), *ExcelToolkit().get_tools(), + *FileWriteToolkit(output_dir="./").get_tools(), ] # Configure agent roles and parameters diff --git a/owl/run_mini.py b/owl/run_mini.py index 22539b3..82fa2b7 100644 --- a/owl/run_mini.py +++ b/owl/run_mini.py @@ -17,6 +17,7 @@ from camel.models import ModelFactory from camel.toolkits import ( SearchToolkit, WebToolkit, + FileWriteToolkit, ) from camel.types import ModelPlatformType, ModelType from camel.logger import set_log_level @@ -71,6 +72,7 @@ def construct_society(question: str) -> OwlRolePlaying: ).get_tools(), SearchToolkit().search_duckduckgo, SearchToolkit().search_wiki, + *FileWriteToolkit(output_dir="./").get_tools(), ] # Configure agent roles and parameters diff --git a/owl/run_openai_compatiable_model.py b/owl/run_openai_compatiable_model.py index a9cab9a..fa8a08e 100644 --- a/owl/run_openai_compatiable_model.py +++ b/owl/run_openai_compatiable_model.py @@ -21,6 +21,7 @@ from camel.toolkits import ( ImageAnalysisToolkit, SearchToolkit, WebToolkit, + FileWriteToolkit, ) from camel.types import ModelPlatformType @@ -95,6 +96,7 @@ def construct_society(question: str) -> OwlRolePlaying: SearchToolkit().search_google, # Comment this out if you don't have google search SearchToolkit().search_wiki, *ExcelToolkit().get_tools(), + *FileWriteToolkit(output_dir="./").get_tools(), ] # Configure agent roles and parameters diff --git a/owl/run_qwen_mini_zh.py b/owl/run_qwen_mini_zh.py index 884c041..76d887b 100644 --- a/owl/run_qwen_mini_zh.py +++ b/owl/run_qwen_mini_zh.py @@ -19,7 +19,7 @@ from dotenv import load_dotenv from camel.models import ModelFactory -from camel.toolkits import WebToolkit, SearchToolkit +from camel.toolkits import WebToolkit, SearchToolkit, FileWriteToolkit from camel.types import ModelPlatformType, ModelType from utils import OwlRolePlaying, run_society @@ -69,6 +69,7 @@ def construct_society(question: str) -> OwlRolePlaying: output_language="Chinese", ).get_tools(), SearchToolkit().search_duckduckgo, + *FileWriteToolkit(output_dir="./").get_tools(), ] user_role_name = "user" diff --git a/owl/run_qwen_zh.py b/owl/run_qwen_zh.py index 2271a45..d0c4d6a 100644 --- a/owl/run_qwen_zh.py +++ b/owl/run_qwen_zh.py @@ -25,6 +25,7 @@ from camel.toolkits import ( SearchToolkit, VideoAnalysisToolkit, WebToolkit, + FileWriteToolkit, ) from camel.types import ModelPlatformType, ModelType @@ -103,6 +104,7 @@ def construct_society(question: str) -> OwlRolePlaying: SearchToolkit().search_wiki, *ExcelToolkit().get_tools(), *DocumentProcessingToolkit(model=models["document"]).get_tools(), + *FileWriteToolkit(output_dir="./").get_tools(), ] # Configure agent roles and parameters diff --git a/owl/run_write_files.py b/owl/run_write_files.py deleted file mode 100644 index 0fc4c11..0000000 --- a/owl/run_write_files.py +++ /dev/null @@ -1,144 +0,0 @@ -# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. ========= -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. ========= -from dotenv import load_dotenv -from camel.models import ModelFactory -import os -from camel.toolkits import ( - AudioAnalysisToolkit, - CodeExecutionToolkit, - ExcelToolkit, - ImageAnalysisToolkit, - SearchToolkit, - VideoAnalysisToolkit, - FileWriteToolkit, - WebToolkit, -) -from camel.types import ModelPlatformType, ModelType -from camel.logger import set_log_level - -from utils import OwlRolePlaying, run_society, DocumentProcessingToolkit - -load_dotenv() - -set_log_level(level="DEBUG") - - -def construct_society(question: str) -> OwlRolePlaying: - r"""Construct a society of agents based on the given question. - - Args: - question (str): The task or question to be addressed by the society. - - Returns: - OwlRolePlaying: A configured society of agents ready to address the question. - """ - - # Create models for different components - models = { - "user": ModelFactory.create( - model_platform=ModelPlatformType.OPENAI, - model_type=ModelType.GPT_4O, - model_config_dict={"temperature": 0}, - ), - "assistant": ModelFactory.create( - model_platform=ModelPlatformType.OPENAI, - model_type=ModelType.GPT_4O, - model_config_dict={"temperature": 0}, - ), - "web": ModelFactory.create( - model_platform=ModelPlatformType.OPENAI, - model_type=ModelType.GPT_4O, - model_config_dict={"temperature": 0}, - ), - "planning": ModelFactory.create( - model_platform=ModelPlatformType.OPENAI, - model_type=ModelType.GPT_4O, - model_config_dict={"temperature": 0}, - ), - "video": ModelFactory.create( - model_platform=ModelPlatformType.OPENAI, - model_type=ModelType.GPT_4O, - model_config_dict={"temperature": 0}, - ), - "image": ModelFactory.create( - model_platform=ModelPlatformType.OPENAI, - model_type=ModelType.GPT_4O, - model_config_dict={"temperature": 0}, - ), - "document": ModelFactory.create( - model_platform=ModelPlatformType.OPENAI, - model_type=ModelType.GPT_4O, - model_config_dict={"temperature": 0}, - ), - } - output_dir = "./file_write_outputs" - os.makedirs(output_dir, exist_ok=True) - - # Initialize the FileWriteToolkit with the output directory - file_toolkit = FileWriteToolkit(output_dir=output_dir) - - # Configure toolkits - tools = [ - *file_toolkit.get_tools(), - *WebToolkit( - headless=False, # Set to True for headless mode (e.g., on remote servers) - web_agent_model=models["web"], - planning_agent_model=models["planning"], - ).get_tools(), - *VideoAnalysisToolkit(model=models["video"]).get_tools(), - *AudioAnalysisToolkit().get_tools(), # This requires OpenAI Key - *CodeExecutionToolkit(sandbox="subprocess", verbose=True).get_tools(), - *ImageAnalysisToolkit(model=models["image"]).get_tools(), - SearchToolkit().search_duckduckgo, - SearchToolkit().search_google, # Comment this out if you don't have google search - SearchToolkit().search_wiki, - *ExcelToolkit().get_tools(), - *DocumentProcessingToolkit(model=models["document"]).get_tools(), - ] - - # Configure agent roles and parameters - user_agent_kwargs = {"model": models["user"]} - assistant_agent_kwargs = {"model": models["assistant"], "tools": tools} - - # Configure task parameters - task_kwargs = { - "task_prompt": question, - "with_task_specify": False, - } - - # Create and return the society - society = OwlRolePlaying( - **task_kwargs, - user_role_name="user", - user_agent_kwargs=user_agent_kwargs, - assistant_role_name="assistant", - assistant_agent_kwargs=assistant_agent_kwargs, - ) - - return society - - -def main(): - r"""Main function to run the OWL system with an example question.""" - # Example research question - question ="""请使用文件写入工具生成一个Python脚本,创建一个简单的Flask网络服务器,并将其保存到file_write_outputs目录中的flask_server.py文件。脚本应该包含基本的路由和启动服务器的代码。""" - # Construct and run the society - society = construct_society(question) - answer, chat_history, token_count = run_society(society) - - # Output the result - print(f"\033[94mAnswer: {answer}\033[0m") - -if __name__ == "__main__": - main()