lazychih114 commited on
Commit
0c55394
·
1 Parent(s): d191efd

update readme

Browse files
README.md CHANGED
@@ -2,10 +2,43 @@
2
  🦉 OWL: Optimized Workforce Learning for General Multi-Agent Assistance in Real-World Task Automation
3
  </h1>
4
 
5
- 🦉 OWL is a cutting-edge framework for multi-agent collaboration that pushes the boundaries of task automation, built on top of the [CAMEL-AI Framework](https://github.com/camel-ai/camel).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  OWL achieves 58.18 average score on GAIA benchmark and ranks #1 among open-source frameworks.
 
 
 
 
7
 
8
- Our vision is to revolutionize how AI agents collaborate to solve real-world tasks. By leveraging dynamic agent interactions, OWL enables more natural, efficient, and robust task automation across diverse domains.
9
 
10
  <!-- # Key Features -->
11
 
@@ -80,3 +113,30 @@ python run_gaia_roleplaying.py
80
 
81
 
82
  # Cite -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  🦉 OWL: Optimized Workforce Learning for General Multi-Agent Assistance in Real-World Task Automation
3
  </h1>
4
 
5
+
6
+ <div align="center">
7
+
8
+ [![Documentation][docs-image]][docs-url]
9
+ [![Discord][discord-image]][discord-url]
10
+ [![X][x-image]][x-url]
11
+ [![Reddit][reddit-image]][reddit-url]
12
+ [![Wechat][wechat-image]][wechat-url]
13
+ [![Hugging Face][huggingface-image]][huggingface-url]
14
+ [![Star][star-image]][star-url]
15
+ [![Package License][package-license-image]][package-license-url]
16
+
17
+ </div>
18
+
19
+
20
+ <hr>
21
+
22
+ <div align="center">
23
+ <h4 align="center">
24
+
25
+ [Community](https://github.com/camel-ai/camel#community) |
26
+ [Installation](https://github.com/camel-ai/camel#installation) |
27
+ [Examples](https://github.com/camel-ai/camel/tree/HEAD/examples) |
28
+ [Paper](https://arxiv.org/abs/2303.17760) |
29
+ [Citation](https://github.com/camel-ai/camel#citation) |
30
+ [Contributing](https://github.com/camel-ai/camel#contributing-to-camel-) |
31
+ [CAMEL-AI](https://www.camel-ai.org/)
32
+
33
+ </h4>
34
+
35
+ <p style="line-height: 1.5; text-align: center;"> 🦉 OWL is a cutting-edge framework for multi-agent collaboration that pushes the boundaries of task automation, built on top of the [CAMEL-AI Framework](https://github.com/camel-ai/camel).
36
  OWL achieves 58.18 average score on GAIA benchmark and ranks #1 among open-source frameworks.
37
+ Our vision is to revolutionize how AI agents collaborate to solve real-world tasks. By leveraging dynamic agent interactions, OWL enables more natural, efficient, and robust task automation across diverse domains.</p>
38
+ <br>
39
+
40
+
41
 
 
42
 
43
  <!-- # Key Features -->
44
 
 
113
 
114
 
115
  # Cite -->
116
+
117
+ # 📄 License
118
+
119
+ The source code is licensed under Apache 2.0.
120
+
121
+
122
+ [docs-image]: https://img.shields.io/badge/Documentation-EB3ECC
123
+ [docs-url]: https://camel-ai.github.io/camel/index.html
124
+ [star-image]: https://img.shields.io/github/stars/camel-ai/owl?label=stars&logo=github&color=brightgreen
125
+ [star-url]: https://github.com/camel-ai/camel/stargazers
126
+ [package-license-image]: https://img.shields.io/badge/License-Apache_2.0-blue.svg
127
+ [package-license-url]: https://github.com/camel-ai/camel/blob/master/licenses/LICENSE
128
+
129
+ [colab-url]: https://colab.research.google.com/drive/1AzP33O8rnMW__7ocWJhVBXjKziJXPtim?usp=sharing
130
+ [colab-image]: https://colab.research.google.com/assets/colab-badge.svg
131
+ [huggingface-url]: https://huggingface.co/camel-ai
132
+ [huggingface-image]: https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-CAMEL--AI-ffc107?color=ffc107&logoColor=white
133
+ [discord-url]: https://discord.camel-ai.org/
134
+ [discord-image]: https://img.shields.io/discord/1082486657678311454?logo=discord&labelColor=%20%235462eb&logoColor=%20%23f5f5f5&color=%20%235462eb
135
+ [wechat-url]: https://ghli.org/camel/wechat.png
136
+ [wechat-image]: https://img.shields.io/badge/WeChat-CamelAIOrg-brightgreen?logo=wechat&logoColor=white
137
+ [x-url]: https://x.com/CamelAIOrg
138
+ [x-image]: https://img.shields.io/twitter/follow/CamelAIOrg?style=social
139
+ [twitter-image]: https://img.shields.io/twitter/follow/CamelAIOrg?style=social&color=brightgreen&logo=twitter
140
+ [reddit-url]: https://www.reddit.com/r/CamelAI/
141
+ [reddit-image]: https://img.shields.io/reddit/subreddit-subscribers/CamelAI?style=plastic&logo=reddit&label=r%2FCAMEL&labelColor=white
142
+ [ambassador-url]: https://www.camel-ai.org/community
licenses/license_template.txt ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
licenses/update_license.py ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
+ import os
15
+ import re
16
+ import sys
17
+ from pathlib import Path
18
+ from typing import List
19
+
20
+
21
+ # The license template file is hard-coded with specific start and end lines
22
+ def fine_license_start_line(lines: List[str], start_with: str) -> int:
23
+ for i in range(len(lines)):
24
+ if lines[i].startswith(start_with):
25
+ return i
26
+ return None
27
+
28
+
29
+ def find_license_end_line(lines: List[str], start_with: str) -> int:
30
+ for i in range(len(lines) - 1, -1, -1):
31
+ if lines[i].startswith(start_with):
32
+ return i
33
+ return None
34
+
35
+
36
+ def update_license_in_file(
37
+ file_path: str,
38
+ license_template_path: str,
39
+ start_line_start_with: str,
40
+ end_line_start_with: str,
41
+ ) -> bool:
42
+ with open(
43
+ file_path, 'r', encoding='utf-8'
44
+ ) as f: # for windows compatibility
45
+ content = f.read()
46
+
47
+ with open(license_template_path, 'r', encoding='utf-8') as f:
48
+ new_license = f.read().strip()
49
+
50
+ maybe_existing_licenses = re.findall(
51
+ r'^#.*?(?=\n)', content, re.MULTILINE | re.DOTALL
52
+ )
53
+ start_index = fine_license_start_line(
54
+ maybe_existing_licenses, start_line_start_with
55
+ )
56
+ end_index = find_license_end_line(
57
+ maybe_existing_licenses, end_line_start_with
58
+ )
59
+ if start_index is not None and end_index is not None:
60
+ maybe_existing_licenses = maybe_existing_licenses[
61
+ start_index : end_index + 1
62
+ ]
63
+ else:
64
+ maybe_existing_licenses = None
65
+ if maybe_existing_licenses:
66
+ maybe_old_licenses = '\n'.join(maybe_existing_licenses)
67
+ if maybe_old_licenses.strip() != new_license.strip():
68
+ replaced_content = content.replace(maybe_old_licenses, new_license)
69
+ with open(file_path, 'w') as f:
70
+ f.write(replaced_content)
71
+ print(f'Replaced license in {file_path}')
72
+ return True
73
+ else:
74
+ return False
75
+ else:
76
+ with open(file_path, 'w') as f:
77
+ f.write(new_license + '\n' + content)
78
+ print(f'Added license to {file_path}')
79
+ return True
80
+
81
+
82
+ def update_license_in_directory(
83
+ directory_path: str,
84
+ license_template_path: str,
85
+ start_line_start_with: str,
86
+ end_line_start_with: str,
87
+ ) -> None:
88
+ # Check if directory exists
89
+ if not os.path.isdir(directory_path):
90
+ raise NotADirectoryError(f'{directory_path} is not a directory')
91
+ # Check if license template exists
92
+ if not os.path.isfile(license_template_path):
93
+ raise FileNotFoundError(f'{license_template_path} not found')
94
+
95
+ file_count = 0
96
+ for py_files in Path(directory_path).rglob("*.py"):
97
+ if py_files.name.startswith('.'):
98
+ continue
99
+ if any(part.startswith('.') for part in py_files.parts):
100
+ continue
101
+ if update_license_in_file(
102
+ py_files,
103
+ license_template_path,
104
+ start_line_start_with,
105
+ end_line_start_with,
106
+ ):
107
+ file_count += 1
108
+
109
+ print(f'License updated in {file_count} files')
110
+
111
+
112
+ if __name__ == '__main__':
113
+ if len(sys.argv) < 3:
114
+ print(
115
+ "Usage from command line: "
116
+ "python update_license.py <directory_path> <license_template_path>"
117
+ "No valid input arguments found, please enter manually."
118
+ )
119
+ directory_path = input("Enter directory path: ")
120
+ license_template_path = input("Enter license template path: ")
121
+ else:
122
+ directory_path = sys.argv[1]
123
+ license_template_path = sys.argv[2]
124
+
125
+ start_line_start_with = "# ========= Copyright"
126
+ end_line_start_with = "# ========= Copyright"
127
+ update_license_in_directory(
128
+ directory_path,
129
+ license_template_path,
130
+ start_line_start_with,
131
+ end_line_start_with,
132
+ )