Merge branch 'main' of https://github.com/camel-ai/owl
Browse files- README_zh.md +6 -2
- owl/.env_template +6 -9
- owl/camel/toolkits/video_analysis_toolkit.py +3 -8
- owl/run.py +6 -6
- owl/run_gaia_roleplaying.py +1 -1
README_zh.md
CHANGED
@@ -36,12 +36,16 @@
|
|
36 |
|
37 |
</h4>
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
<div align="center">
|
40 |
|
41 |
🦉 OWL 是一个前沿的多智能体协作框架,推动任务自动化的边界,构建在 [CAMEL-AI Framework](https://github.com/camel-ai/camel)。
|
42 |
|
43 |
-
OWL 在 GAIA 基准测试中取得 **58.18** 平均分,在开源框架中排名 🏅️ #1。
|
44 |
-
|
45 |
我们的愿景是彻底变革 AI 智能体协作解决现实任务的方式。通过利用动态智能体交互,OWL 实现了跨多领域更自然、高效且稳健的任务自动化。
|
46 |
|
47 |
</div>
|
|
|
36 |
|
37 |
</h4>
|
38 |
|
39 |
+
<div align="center" style="background-color: #f0f7ff; padding: 10px; border-radius: 5px; margin: 15px 0;">
|
40 |
+
<h3 style="color: #1e88e5; margin: 0;">
|
41 |
+
🏆 OWL 在 GAIA 基准测试中取得 <span style="color: #d81b60; font-weight: bold; font-size: 1.2em;">58.18</span> 平均分,在开源框架中排名 <span style="color: #d81b60; font-weight: bold; font-size: 1.2em;">🏅️ #1</span>! 🏆
|
42 |
+
</h3>
|
43 |
+
</div>
|
44 |
+
|
45 |
<div align="center">
|
46 |
|
47 |
🦉 OWL 是一个前沿的多智能体协作框架,推动任务自动化的边界,构建在 [CAMEL-AI Framework](https://github.com/camel-ai/camel)。
|
48 |
|
|
|
|
|
49 |
我们的愿景是彻底变革 AI 智能体协作解决现实任务的方式。通过利用动态智能体交互,OWL 实现了跨多领域更自然、高效且稳健的任务自动化。
|
50 |
|
51 |
</div>
|
owl/.env_template
CHANGED
@@ -1,19 +1,14 @@
|
|
1 |
# MODEL & API (See https://github.com/camel-ai/camel/blob/master/camel/types/enums.py)
|
2 |
-
DEFAULT_MODEL_PLATFORM_TYPE = "OPENAI"
|
3 |
-
DEFAULT_MODEL_TYPE = "gpt-4o"
|
4 |
-
OPENAI_API_BASE_URL = ""
|
5 |
|
6 |
# OPENAI API
|
7 |
OPENAI_API_KEY = ""
|
8 |
-
|
9 |
-
# Hugging Face API (https://huggingface.co/join)
|
10 |
-
HF_TOKEN=""
|
11 |
|
12 |
# Qwen API (https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key)
|
13 |
-
QWEN_API_KEY=""
|
14 |
|
15 |
# DeepSeek API (https://platform.deepseek.com/api_keys)
|
16 |
-
DEEPSEEK_API_KEY="
|
17 |
|
18 |
#===========================================
|
19 |
# Tools & Services API
|
@@ -23,9 +18,11 @@ DEEPSEEK_API_KEY="
|
|
23 |
GOOGLE_API_KEY=""
|
24 |
SEARCH_ENGINE_ID=""
|
25 |
|
|
|
|
|
|
|
26 |
# Chunkr API (https://chunkr.ai/)
|
27 |
CHUNKR_API_KEY=""
|
28 |
|
29 |
# Firecrawl API (https://www.firecrawl.dev/)
|
30 |
FIRECRAWL_API_KEY=""
|
31 |
-
|
|
|
1 |
# MODEL & API (See https://github.com/camel-ai/camel/blob/master/camel/types/enums.py)
|
|
|
|
|
|
|
2 |
|
3 |
# OPENAI API
|
4 |
OPENAI_API_KEY = ""
|
5 |
+
# OPENAI_API_BASE_URL = ""
|
|
|
|
|
6 |
|
7 |
# Qwen API (https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key)
|
8 |
+
# QWEN_API_KEY=""
|
9 |
|
10 |
# DeepSeek API (https://platform.deepseek.com/api_keys)
|
11 |
+
# DEEPSEEK_API_KEY=""
|
12 |
|
13 |
#===========================================
|
14 |
# Tools & Services API
|
|
|
18 |
GOOGLE_API_KEY=""
|
19 |
SEARCH_ENGINE_ID=""
|
20 |
|
21 |
+
# Hugging Face API (https://huggingface.co/join)
|
22 |
+
HF_TOKEN=""
|
23 |
+
|
24 |
# Chunkr API (https://chunkr.ai/)
|
25 |
CHUNKR_API_KEY=""
|
26 |
|
27 |
# Firecrawl API (https://www.firecrawl.dev/)
|
28 |
FIRECRAWL_API_KEY=""
|
|
owl/camel/toolkits/video_analysis_toolkit.py
CHANGED
@@ -28,12 +28,10 @@ from scenedetect.detectors import ( # type: ignore[import-untyped]
|
|
28 |
)
|
29 |
|
30 |
from camel.agents import ChatAgent
|
31 |
-
from camel.configs import QwenConfig
|
32 |
from camel.messages import BaseMessage
|
33 |
-
from camel.models import
|
34 |
from camel.toolkits.base import BaseToolkit
|
35 |
from camel.toolkits.function_tool import FunctionTool
|
36 |
-
from camel.types import ModelPlatformType, ModelType
|
37 |
from camel.utils import dependencies_required
|
38 |
|
39 |
from .video_downloader_toolkit import (
|
@@ -101,6 +99,7 @@ class VideoAnalysisToolkit(BaseToolkit):
|
|
101 |
def __init__(
|
102 |
self,
|
103 |
download_directory: Optional[str] = None,
|
|
|
104 |
) -> None:
|
105 |
self._cleanup = download_directory is None
|
106 |
|
@@ -125,11 +124,7 @@ class VideoAnalysisToolkit(BaseToolkit):
|
|
125 |
|
126 |
logger.info(f"Video will be downloaded to {self._download_directory}")
|
127 |
|
128 |
-
self.vl_model =
|
129 |
-
model_platform=ModelPlatformType.QWEN,
|
130 |
-
model_type=ModelType.QWEN_VL_MAX,
|
131 |
-
model_config_dict=QwenConfig(temperature=0.2).as_dict(),
|
132 |
-
)
|
133 |
|
134 |
self.vl_agent = ChatAgent(
|
135 |
model=self.vl_model, output_language="English"
|
|
|
28 |
)
|
29 |
|
30 |
from camel.agents import ChatAgent
|
|
|
31 |
from camel.messages import BaseMessage
|
32 |
+
from camel.models import OpenAIAudioModels, BaseModelBackend
|
33 |
from camel.toolkits.base import BaseToolkit
|
34 |
from camel.toolkits.function_tool import FunctionTool
|
|
|
35 |
from camel.utils import dependencies_required
|
36 |
|
37 |
from .video_downloader_toolkit import (
|
|
|
99 |
def __init__(
|
100 |
self,
|
101 |
download_directory: Optional[str] = None,
|
102 |
+
model: Optional[BaseModelBackend] = None,
|
103 |
) -> None:
|
104 |
self._cleanup = download_directory is None
|
105 |
|
|
|
124 |
|
125 |
logger.info(f"Video will be downloaded to {self._download_directory}")
|
126 |
|
127 |
+
self.vl_model = model
|
|
|
|
|
|
|
|
|
128 |
|
129 |
self.vl_agent = ChatAgent(
|
130 |
model=self.vl_model, output_language="English"
|
owl/run.py
CHANGED
@@ -24,14 +24,14 @@ def construct_society(question: str) -> OwlRolePlaying:
|
|
24 |
assistant_role_name = "assistant"
|
25 |
|
26 |
user_model = ModelFactory.create(
|
27 |
-
model_platform=ModelPlatformType.
|
28 |
-
model_type=ModelType.
|
29 |
model_config_dict=ChatGPTConfig(temperature=0, top_p=1).as_dict(), # [Optional] the config for model
|
30 |
)
|
31 |
|
32 |
assistant_model = ModelFactory.create(
|
33 |
-
model_platform=ModelPlatformType.
|
34 |
-
model_type=ModelType.
|
35 |
model_config_dict=ChatGPTConfig(temperature=0, top_p=1).as_dict(), # [Optional] the config for model
|
36 |
)
|
37 |
|
@@ -42,10 +42,10 @@ def construct_society(question: str) -> OwlRolePlaying:
|
|
42 |
planning_agent_model=assistant_model
|
43 |
).get_tools(),
|
44 |
*DocumentProcessingToolkit().get_tools(),
|
45 |
-
*VideoAnalysisToolkit().get_tools(), # This requires OpenAI
|
|
|
46 |
*CodeExecutionToolkit().get_tools(),
|
47 |
*ImageAnalysisToolkit(model=assistant_model).get_tools(),
|
48 |
-
*AudioAnalysisToolkit().get_tools(), # This requires OpenAI Key
|
49 |
*SearchToolkit(model=assistant_model).get_tools(),
|
50 |
*ExcelToolkit().get_tools()
|
51 |
]
|
|
|
24 |
assistant_role_name = "assistant"
|
25 |
|
26 |
user_model = ModelFactory.create(
|
27 |
+
model_platform=ModelPlatformType.OPENAI,
|
28 |
+
model_type=ModelType.GPT_4O,
|
29 |
model_config_dict=ChatGPTConfig(temperature=0, top_p=1).as_dict(), # [Optional] the config for model
|
30 |
)
|
31 |
|
32 |
assistant_model = ModelFactory.create(
|
33 |
+
model_platform=ModelPlatformType.OPENAI,
|
34 |
+
model_type=ModelType.GPT_4O,
|
35 |
model_config_dict=ChatGPTConfig(temperature=0, top_p=1).as_dict(), # [Optional] the config for model
|
36 |
)
|
37 |
|
|
|
42 |
planning_agent_model=assistant_model
|
43 |
).get_tools(),
|
44 |
*DocumentProcessingToolkit().get_tools(),
|
45 |
+
*VideoAnalysisToolkit(model=assistant_model).get_tools(), # This requires OpenAI Key
|
46 |
+
*AudioAnalysisToolkit().get_tools(), # This requires OpenAI Key
|
47 |
*CodeExecutionToolkit().get_tools(),
|
48 |
*ImageAnalysisToolkit(model=assistant_model).get_tools(),
|
|
|
49 |
*SearchToolkit(model=assistant_model).get_tools(),
|
50 |
*ExcelToolkit().get_tools()
|
51 |
]
|
owl/run_gaia_roleplaying.py
CHANGED
@@ -43,7 +43,7 @@ def main():
|
|
43 |
planning_agent_model=assistant_model
|
44 |
).get_tools(),
|
45 |
*DocumentProcessingToolkit().get_tools(),
|
46 |
-
*VideoAnalysisToolkit().get_tools(), # This requires OpenAI
|
47 |
*CodeExecutionToolkit().get_tools(),
|
48 |
*ImageAnalysisToolkit(model=assistant_model).get_tools(),
|
49 |
*AudioAnalysisToolkit().get_tools(), # This requires OpenAI Key
|
|
|
43 |
planning_agent_model=assistant_model
|
44 |
).get_tools(),
|
45 |
*DocumentProcessingToolkit().get_tools(),
|
46 |
+
*VideoAnalysisToolkit(model=assistant_model).get_tools(), # This requires OpenAI Key
|
47 |
*CodeExecutionToolkit().get_tools(),
|
48 |
*ImageAnalysisToolkit(model=assistant_model).get_tools(),
|
49 |
*AudioAnalysisToolkit().get_tools(), # This requires OpenAI Key
|