camel-ai 0.2.73a4__py3-none-any.whl → 0.2.80a2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. camel/__init__.py +1 -1
  2. camel/agents/_utils.py +38 -0
  3. camel/agents/chat_agent.py +2217 -519
  4. camel/agents/mcp_agent.py +30 -27
  5. camel/configs/__init__.py +15 -0
  6. camel/configs/aihubmix_config.py +88 -0
  7. camel/configs/amd_config.py +70 -0
  8. camel/configs/cometapi_config.py +104 -0
  9. camel/configs/minimax_config.py +93 -0
  10. camel/configs/nebius_config.py +103 -0
  11. camel/data_collectors/alpaca_collector.py +15 -6
  12. camel/datasets/base_generator.py +39 -10
  13. camel/environments/single_step.py +28 -3
  14. camel/environments/tic_tac_toe.py +1 -1
  15. camel/interpreters/__init__.py +2 -0
  16. camel/interpreters/docker/Dockerfile +3 -12
  17. camel/interpreters/e2b_interpreter.py +34 -1
  18. camel/interpreters/microsandbox_interpreter.py +395 -0
  19. camel/loaders/__init__.py +11 -2
  20. camel/loaders/chunkr_reader.py +9 -0
  21. camel/memories/agent_memories.py +48 -4
  22. camel/memories/base.py +26 -0
  23. camel/memories/blocks/chat_history_block.py +122 -4
  24. camel/memories/context_creators/score_based.py +25 -384
  25. camel/memories/records.py +88 -8
  26. camel/messages/base.py +153 -34
  27. camel/models/__init__.py +10 -0
  28. camel/models/aihubmix_model.py +83 -0
  29. camel/models/aiml_model.py +1 -16
  30. camel/models/amd_model.py +101 -0
  31. camel/models/anthropic_model.py +6 -19
  32. camel/models/aws_bedrock_model.py +2 -33
  33. camel/models/azure_openai_model.py +114 -89
  34. camel/models/base_audio_model.py +3 -1
  35. camel/models/base_model.py +32 -14
  36. camel/models/cohere_model.py +1 -16
  37. camel/models/cometapi_model.py +83 -0
  38. camel/models/crynux_model.py +1 -16
  39. camel/models/deepseek_model.py +1 -16
  40. camel/models/fish_audio_model.py +6 -0
  41. camel/models/gemini_model.py +36 -18
  42. camel/models/groq_model.py +1 -17
  43. camel/models/internlm_model.py +1 -16
  44. camel/models/litellm_model.py +1 -16
  45. camel/models/lmstudio_model.py +1 -17
  46. camel/models/minimax_model.py +83 -0
  47. camel/models/mistral_model.py +1 -16
  48. camel/models/model_factory.py +27 -1
  49. camel/models/modelscope_model.py +1 -16
  50. camel/models/moonshot_model.py +105 -24
  51. camel/models/nebius_model.py +83 -0
  52. camel/models/nemotron_model.py +0 -5
  53. camel/models/netmind_model.py +1 -16
  54. camel/models/novita_model.py +1 -16
  55. camel/models/nvidia_model.py +1 -16
  56. camel/models/ollama_model.py +4 -19
  57. camel/models/openai_compatible_model.py +62 -41
  58. camel/models/openai_model.py +62 -57
  59. camel/models/openrouter_model.py +1 -17
  60. camel/models/ppio_model.py +1 -16
  61. camel/models/qianfan_model.py +1 -16
  62. camel/models/qwen_model.py +1 -16
  63. camel/models/reka_model.py +1 -16
  64. camel/models/samba_model.py +34 -47
  65. camel/models/sglang_model.py +64 -31
  66. camel/models/siliconflow_model.py +1 -16
  67. camel/models/stub_model.py +0 -4
  68. camel/models/togetherai_model.py +1 -16
  69. camel/models/vllm_model.py +1 -16
  70. camel/models/volcano_model.py +0 -17
  71. camel/models/watsonx_model.py +1 -16
  72. camel/models/yi_model.py +1 -16
  73. camel/models/zhipuai_model.py +60 -16
  74. camel/parsers/__init__.py +18 -0
  75. camel/parsers/mcp_tool_call_parser.py +176 -0
  76. camel/retrievers/auto_retriever.py +1 -0
  77. camel/runtimes/daytona_runtime.py +11 -12
  78. camel/societies/__init__.py +2 -0
  79. camel/societies/workforce/__init__.py +2 -0
  80. camel/societies/workforce/events.py +122 -0
  81. camel/societies/workforce/prompts.py +146 -66
  82. camel/societies/workforce/role_playing_worker.py +15 -11
  83. camel/societies/workforce/single_agent_worker.py +302 -65
  84. camel/societies/workforce/structured_output_handler.py +30 -18
  85. camel/societies/workforce/task_channel.py +163 -27
  86. camel/societies/workforce/utils.py +107 -13
  87. camel/societies/workforce/workflow_memory_manager.py +772 -0
  88. camel/societies/workforce/workforce.py +1949 -579
  89. camel/societies/workforce/workforce_callback.py +74 -0
  90. camel/societies/workforce/workforce_logger.py +168 -145
  91. camel/societies/workforce/workforce_metrics.py +33 -0
  92. camel/storages/key_value_storages/json.py +15 -2
  93. camel/storages/key_value_storages/mem0_cloud.py +48 -47
  94. camel/storages/object_storages/google_cloud.py +1 -1
  95. camel/storages/vectordb_storages/oceanbase.py +13 -13
  96. camel/storages/vectordb_storages/qdrant.py +3 -3
  97. camel/storages/vectordb_storages/tidb.py +8 -6
  98. camel/tasks/task.py +4 -3
  99. camel/toolkits/__init__.py +20 -7
  100. camel/toolkits/aci_toolkit.py +45 -0
  101. camel/toolkits/base.py +6 -4
  102. camel/toolkits/code_execution.py +28 -1
  103. camel/toolkits/context_summarizer_toolkit.py +684 -0
  104. camel/toolkits/dappier_toolkit.py +5 -1
  105. camel/toolkits/dingtalk.py +1135 -0
  106. camel/toolkits/edgeone_pages_mcp_toolkit.py +11 -31
  107. camel/toolkits/excel_toolkit.py +1 -1
  108. camel/toolkits/{file_write_toolkit.py → file_toolkit.py} +430 -36
  109. camel/toolkits/function_tool.py +13 -3
  110. camel/toolkits/github_toolkit.py +104 -17
  111. camel/toolkits/gmail_toolkit.py +1839 -0
  112. camel/toolkits/google_calendar_toolkit.py +38 -4
  113. camel/toolkits/google_drive_mcp_toolkit.py +12 -31
  114. camel/toolkits/hybrid_browser_toolkit/config_loader.py +15 -0
  115. camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +77 -8
  116. camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +884 -88
  117. camel/toolkits/hybrid_browser_toolkit/installer.py +203 -0
  118. camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +5 -612
  119. camel/toolkits/hybrid_browser_toolkit/ts/package.json +0 -1
  120. camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +959 -89
  121. camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +9 -2
  122. camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +281 -213
  123. camel/toolkits/hybrid_browser_toolkit/ts/src/parent-child-filter.ts +226 -0
  124. camel/toolkits/hybrid_browser_toolkit/ts/src/snapshot-parser.ts +219 -0
  125. camel/toolkits/hybrid_browser_toolkit/ts/src/som-screenshot-injected.ts +543 -0
  126. camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +23 -3
  127. camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +72 -7
  128. camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +582 -132
  129. camel/toolkits/hybrid_browser_toolkit_py/actions.py +158 -0
  130. camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +55 -8
  131. camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +43 -0
  132. camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +321 -8
  133. camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +10 -4
  134. camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +45 -4
  135. camel/toolkits/{openai_image_toolkit.py → image_generation_toolkit.py} +151 -53
  136. camel/toolkits/klavis_toolkit.py +5 -1
  137. camel/toolkits/markitdown_toolkit.py +27 -1
  138. camel/toolkits/math_toolkit.py +64 -10
  139. camel/toolkits/mcp_toolkit.py +366 -71
  140. camel/toolkits/memory_toolkit.py +5 -1
  141. camel/toolkits/message_integration.py +18 -13
  142. camel/toolkits/minimax_mcp_toolkit.py +195 -0
  143. camel/toolkits/note_taking_toolkit.py +19 -10
  144. camel/toolkits/notion_mcp_toolkit.py +16 -26
  145. camel/toolkits/openbb_toolkit.py +5 -1
  146. camel/toolkits/origene_mcp_toolkit.py +8 -49
  147. camel/toolkits/playwright_mcp_toolkit.py +12 -31
  148. camel/toolkits/resend_toolkit.py +168 -0
  149. camel/toolkits/search_toolkit.py +264 -91
  150. camel/toolkits/slack_toolkit.py +64 -10
  151. camel/toolkits/terminal_toolkit/__init__.py +18 -0
  152. camel/toolkits/terminal_toolkit/terminal_toolkit.py +957 -0
  153. camel/toolkits/terminal_toolkit/utils.py +532 -0
  154. camel/toolkits/vertex_ai_veo_toolkit.py +590 -0
  155. camel/toolkits/video_analysis_toolkit.py +17 -11
  156. camel/toolkits/wechat_official_toolkit.py +483 -0
  157. camel/toolkits/zapier_toolkit.py +5 -1
  158. camel/types/__init__.py +2 -2
  159. camel/types/enums.py +274 -7
  160. camel/types/openai_types.py +2 -2
  161. camel/types/unified_model_type.py +15 -0
  162. camel/utils/commons.py +36 -5
  163. camel/utils/constants.py +3 -0
  164. camel/utils/context_utils.py +1003 -0
  165. camel/utils/mcp.py +138 -4
  166. camel/utils/token_counting.py +43 -20
  167. {camel_ai-0.2.73a4.dist-info → camel_ai-0.2.80a2.dist-info}/METADATA +223 -83
  168. {camel_ai-0.2.73a4.dist-info → camel_ai-0.2.80a2.dist-info}/RECORD +170 -141
  169. camel/loaders/pandas_reader.py +0 -368
  170. camel/toolkits/openai_agent_toolkit.py +0 -135
  171. camel/toolkits/terminal_toolkit.py +0 -1550
  172. {camel_ai-0.2.73a4.dist-info → camel_ai-0.2.80a2.dist-info}/WHEEL +0 -0
  173. {camel_ai-0.2.73a4.dist-info → camel_ai-0.2.80a2.dist-info}/licenses/LICENSE +0 -0
@@ -128,8 +128,9 @@ class SlackToolkit(BaseToolkit):
128
128
  return f"Error creating conversation: {e.response['error']}"
129
129
 
130
130
  def join_slack_channel(self, channel_id: str) -> str:
131
- r"""Joins an existing Slack channel. To get the `channel_id` of a
132
- channel, you can use the `get_slack_channel_information` function.
131
+ r"""Joins an existing Slack channel. When use this function you must
132
+ call `get_slack_channel_information` function first to get the
133
+ `channel id`.
133
134
 
134
135
  Args:
135
136
  channel_id (str): The ID of the Slack channel to join.
@@ -147,8 +148,9 @@ class SlackToolkit(BaseToolkit):
147
148
  return f"Error joining channel: {e.response['error']}"
148
149
 
149
150
  def leave_slack_channel(self, channel_id: str) -> str:
150
- r"""Leaves an existing Slack channel. To get the `channel_id` of a
151
- channel, you can use the `get_slack_channel_information` function.
151
+ r"""Leaves an existing Slack channel. When use this function you must
152
+ call `get_slack_channel_information` function first to get the
153
+ `channel id`.
152
154
 
153
155
  Args:
154
156
  channel_id (str): The ID of the Slack channel to leave.
@@ -199,9 +201,9 @@ class SlackToolkit(BaseToolkit):
199
201
  return f"Error retrieving channel list: {e.response['error']}"
200
202
 
201
203
  def get_slack_channel_message(self, channel_id: str) -> str:
202
- r"""Retrieve messages from a Slack channel. To get the `channel_id`
203
- of a channel, you can use the `get_slack_channel_information`
204
- function.
204
+ r"""Retrieve messages from a Slack channel. When use this function you
205
+ must call `get_slack_channel_information` function first to get the
206
+ `channel id`.
205
207
 
206
208
  Args:
207
209
  channel_id (str): The ID of the Slack channel to retrieve messages
@@ -233,8 +235,10 @@ class SlackToolkit(BaseToolkit):
233
235
  file_path: Optional[str] = None,
234
236
  user: Optional[str] = None,
235
237
  ) -> str:
236
- r"""Send a message to a Slack channel. To get the `channel_id` of a
237
- channel, you can use the `get_slack_channel_information` function.
238
+ r"""Send a message to a Slack channel. When use this function you must
239
+ call `get_slack_channel_information` function first to get the
240
+ `channel id`. If use user, you must use `get_slack_user_list`
241
+ function first to get the user id.
238
242
 
239
243
  Args:
240
244
  message (str): The message to send.
@@ -279,7 +283,9 @@ class SlackToolkit(BaseToolkit):
279
283
  time_stamp: str,
280
284
  channel_id: str,
281
285
  ) -> str:
282
- r"""Delete a message from a Slack channel.
286
+ r"""Delete a message from a Slack channel. When use this function you
287
+ must call `get_slack_channel_information` function first to get the
288
+ `channel id`.
283
289
 
284
290
  Args:
285
291
  time_stamp (str): The 'ts' value of the message to be deleted.
@@ -301,6 +307,52 @@ class SlackToolkit(BaseToolkit):
301
307
  except SlackApiError as e:
302
308
  return f"Error deleting message: {e.response['error']}"
303
309
 
310
+ def get_slack_user_list(self) -> str:
311
+ r"""Retrieve a list of all users in the Slack workspace.
312
+
313
+ Returns:
314
+ str: A JSON string representing a list of users. Each user
315
+ object contains 'id', 'name'.
316
+ """
317
+ from slack_sdk.errors import SlackApiError
318
+
319
+ try:
320
+ slack_client = self._login_slack()
321
+ response = slack_client.users_list()
322
+ users = response["members"]
323
+ filtered_users = [
324
+ {
325
+ "id": user["id"],
326
+ "name": user["name"],
327
+ }
328
+ for user in users
329
+ ]
330
+
331
+ return json.dumps(filtered_users, ensure_ascii=False)
332
+ except SlackApiError as e:
333
+ return f"Error retrieving user list: {e.response['error']}"
334
+
335
+ def get_slack_user_info(self, user_id: str) -> str:
336
+ r"""Retrieve information about a specific user in the Slack workspace.
337
+ normally, you don't need to use this method, when you need to get a
338
+ user's detailed information, use this method. Use `get_slack_user_list`
339
+ function first to get the user id.
340
+
341
+ Args:
342
+ user_id (str): The ID of the user to retrieve information about.
343
+
344
+ Returns:
345
+ str: A JSON string representing the user's information.
346
+ """
347
+ from slack_sdk.errors import SlackApiError
348
+
349
+ try:
350
+ slack_client = self._login_slack()
351
+ response = slack_client.users_info(user=user_id)
352
+ return json.dumps(response, ensure_ascii=False)
353
+ except SlackApiError as e:
354
+ return f"Error retrieving user info: {e.response['error']}"
355
+
304
356
  def get_tools(self) -> List[FunctionTool]:
305
357
  r"""Returns a list of FunctionTool objects representing the
306
358
  functions in the toolkit.
@@ -317,4 +369,6 @@ class SlackToolkit(BaseToolkit):
317
369
  FunctionTool(self.get_slack_channel_message),
318
370
  FunctionTool(self.send_slack_message),
319
371
  FunctionTool(self.delete_slack_message),
372
+ FunctionTool(self.get_slack_user_list),
373
+ FunctionTool(self.get_slack_user_info),
320
374
  ]
@@ -0,0 +1,18 @@
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
+ from .terminal_toolkit import TerminalToolkit
15
+
16
+ __all__ = [
17
+ "TerminalToolkit",
18
+ ]