camel-ai 0.2.67__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 (224) hide show
  1. camel/__init__.py +1 -1
  2. camel/agents/_types.py +6 -2
  3. camel/agents/_utils.py +38 -0
  4. camel/agents/chat_agent.py +4014 -410
  5. camel/agents/mcp_agent.py +30 -27
  6. camel/agents/repo_agent.py +2 -1
  7. camel/benchmarks/browsecomp.py +6 -6
  8. camel/configs/__init__.py +15 -0
  9. camel/configs/aihubmix_config.py +88 -0
  10. camel/configs/amd_config.py +70 -0
  11. camel/configs/cometapi_config.py +104 -0
  12. camel/configs/minimax_config.py +93 -0
  13. camel/configs/nebius_config.py +103 -0
  14. camel/configs/vllm_config.py +2 -0
  15. camel/data_collectors/alpaca_collector.py +15 -6
  16. camel/datagen/self_improving_cot.py +1 -1
  17. camel/datasets/base_generator.py +39 -10
  18. camel/environments/__init__.py +12 -0
  19. camel/environments/rlcards_env.py +860 -0
  20. camel/environments/single_step.py +28 -3
  21. camel/environments/tic_tac_toe.py +1 -1
  22. camel/interpreters/__init__.py +2 -0
  23. camel/interpreters/docker/Dockerfile +4 -16
  24. camel/interpreters/docker_interpreter.py +3 -2
  25. camel/interpreters/e2b_interpreter.py +34 -1
  26. camel/interpreters/internal_python_interpreter.py +51 -2
  27. camel/interpreters/microsandbox_interpreter.py +395 -0
  28. camel/loaders/__init__.py +11 -2
  29. camel/loaders/base_loader.py +85 -0
  30. camel/loaders/chunkr_reader.py +9 -0
  31. camel/loaders/firecrawl_reader.py +4 -4
  32. camel/logger.py +1 -1
  33. camel/memories/agent_memories.py +84 -1
  34. camel/memories/base.py +34 -0
  35. camel/memories/blocks/chat_history_block.py +122 -4
  36. camel/memories/blocks/vectordb_block.py +8 -1
  37. camel/memories/context_creators/score_based.py +29 -237
  38. camel/memories/records.py +88 -8
  39. camel/messages/base.py +166 -40
  40. camel/messages/func_message.py +32 -5
  41. camel/models/__init__.py +10 -0
  42. camel/models/aihubmix_model.py +83 -0
  43. camel/models/aiml_model.py +1 -16
  44. camel/models/amd_model.py +101 -0
  45. camel/models/anthropic_model.py +117 -18
  46. camel/models/aws_bedrock_model.py +2 -33
  47. camel/models/azure_openai_model.py +205 -91
  48. camel/models/base_audio_model.py +3 -1
  49. camel/models/base_model.py +189 -24
  50. camel/models/cohere_model.py +5 -17
  51. camel/models/cometapi_model.py +83 -0
  52. camel/models/crynux_model.py +1 -16
  53. camel/models/deepseek_model.py +6 -16
  54. camel/models/fish_audio_model.py +6 -0
  55. camel/models/gemini_model.py +71 -20
  56. camel/models/groq_model.py +1 -17
  57. camel/models/internlm_model.py +1 -16
  58. camel/models/litellm_model.py +49 -32
  59. camel/models/lmstudio_model.py +1 -17
  60. camel/models/minimax_model.py +83 -0
  61. camel/models/mistral_model.py +1 -16
  62. camel/models/model_factory.py +27 -1
  63. camel/models/model_manager.py +24 -6
  64. camel/models/modelscope_model.py +1 -16
  65. camel/models/moonshot_model.py +185 -19
  66. camel/models/nebius_model.py +83 -0
  67. camel/models/nemotron_model.py +0 -5
  68. camel/models/netmind_model.py +1 -16
  69. camel/models/novita_model.py +1 -16
  70. camel/models/nvidia_model.py +1 -16
  71. camel/models/ollama_model.py +4 -19
  72. camel/models/openai_compatible_model.py +171 -46
  73. camel/models/openai_model.py +205 -77
  74. camel/models/openrouter_model.py +1 -17
  75. camel/models/ppio_model.py +1 -16
  76. camel/models/qianfan_model.py +1 -16
  77. camel/models/qwen_model.py +1 -16
  78. camel/models/reka_model.py +1 -16
  79. camel/models/samba_model.py +34 -47
  80. camel/models/sglang_model.py +64 -31
  81. camel/models/siliconflow_model.py +1 -16
  82. camel/models/stub_model.py +0 -4
  83. camel/models/togetherai_model.py +1 -16
  84. camel/models/vllm_model.py +1 -16
  85. camel/models/volcano_model.py +0 -17
  86. camel/models/watsonx_model.py +1 -16
  87. camel/models/yi_model.py +1 -16
  88. camel/models/zhipuai_model.py +60 -16
  89. camel/parsers/__init__.py +18 -0
  90. camel/parsers/mcp_tool_call_parser.py +176 -0
  91. camel/retrievers/auto_retriever.py +1 -0
  92. camel/runtimes/configs.py +11 -11
  93. camel/runtimes/daytona_runtime.py +15 -16
  94. camel/runtimes/docker_runtime.py +6 -6
  95. camel/runtimes/remote_http_runtime.py +5 -5
  96. camel/services/agent_openapi_server.py +380 -0
  97. camel/societies/__init__.py +2 -0
  98. camel/societies/role_playing.py +26 -28
  99. camel/societies/workforce/__init__.py +2 -0
  100. camel/societies/workforce/events.py +122 -0
  101. camel/societies/workforce/prompts.py +249 -38
  102. camel/societies/workforce/role_playing_worker.py +82 -20
  103. camel/societies/workforce/single_agent_worker.py +634 -34
  104. camel/societies/workforce/structured_output_handler.py +512 -0
  105. camel/societies/workforce/task_channel.py +169 -23
  106. camel/societies/workforce/utils.py +176 -9
  107. camel/societies/workforce/worker.py +77 -23
  108. camel/societies/workforce/workflow_memory_manager.py +772 -0
  109. camel/societies/workforce/workforce.py +3168 -478
  110. camel/societies/workforce/workforce_callback.py +74 -0
  111. camel/societies/workforce/workforce_logger.py +203 -175
  112. camel/societies/workforce/workforce_metrics.py +33 -0
  113. camel/storages/__init__.py +4 -0
  114. camel/storages/key_value_storages/json.py +15 -2
  115. camel/storages/key_value_storages/mem0_cloud.py +48 -47
  116. camel/storages/object_storages/google_cloud.py +1 -1
  117. camel/storages/vectordb_storages/__init__.py +6 -0
  118. camel/storages/vectordb_storages/chroma.py +731 -0
  119. camel/storages/vectordb_storages/oceanbase.py +13 -13
  120. camel/storages/vectordb_storages/pgvector.py +349 -0
  121. camel/storages/vectordb_storages/qdrant.py +3 -3
  122. camel/storages/vectordb_storages/surreal.py +365 -0
  123. camel/storages/vectordb_storages/tidb.py +8 -6
  124. camel/tasks/task.py +244 -27
  125. camel/toolkits/__init__.py +46 -8
  126. camel/toolkits/aci_toolkit.py +64 -19
  127. camel/toolkits/arxiv_toolkit.py +6 -6
  128. camel/toolkits/base.py +63 -5
  129. camel/toolkits/code_execution.py +28 -1
  130. camel/toolkits/context_summarizer_toolkit.py +684 -0
  131. camel/toolkits/craw4ai_toolkit.py +93 -0
  132. camel/toolkits/dappier_toolkit.py +10 -6
  133. camel/toolkits/dingtalk.py +1135 -0
  134. camel/toolkits/edgeone_pages_mcp_toolkit.py +49 -0
  135. camel/toolkits/excel_toolkit.py +901 -67
  136. camel/toolkits/file_toolkit.py +1402 -0
  137. camel/toolkits/function_tool.py +30 -6
  138. camel/toolkits/github_toolkit.py +107 -20
  139. camel/toolkits/gmail_toolkit.py +1839 -0
  140. camel/toolkits/google_calendar_toolkit.py +38 -4
  141. camel/toolkits/google_drive_mcp_toolkit.py +54 -0
  142. camel/toolkits/human_toolkit.py +34 -10
  143. camel/toolkits/hybrid_browser_toolkit/__init__.py +18 -0
  144. camel/toolkits/hybrid_browser_toolkit/config_loader.py +185 -0
  145. camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +246 -0
  146. camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +1973 -0
  147. camel/toolkits/hybrid_browser_toolkit/installer.py +203 -0
  148. camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +3749 -0
  149. camel/toolkits/hybrid_browser_toolkit/ts/package.json +32 -0
  150. camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +125 -0
  151. camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +1815 -0
  152. camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +233 -0
  153. camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +590 -0
  154. camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +7 -0
  155. camel/toolkits/hybrid_browser_toolkit/ts/src/parent-child-filter.ts +226 -0
  156. camel/toolkits/hybrid_browser_toolkit/ts/src/snapshot-parser.ts +219 -0
  157. camel/toolkits/hybrid_browser_toolkit/ts/src/som-screenshot-injected.ts +543 -0
  158. camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +130 -0
  159. camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +26 -0
  160. camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +319 -0
  161. camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +1032 -0
  162. camel/toolkits/hybrid_browser_toolkit_py/__init__.py +17 -0
  163. camel/toolkits/hybrid_browser_toolkit_py/actions.py +575 -0
  164. camel/toolkits/hybrid_browser_toolkit_py/agent.py +311 -0
  165. camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +787 -0
  166. camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +490 -0
  167. camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +2390 -0
  168. camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +233 -0
  169. camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
  170. camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +1043 -0
  171. camel/toolkits/image_generation_toolkit.py +390 -0
  172. camel/toolkits/jina_reranker_toolkit.py +3 -4
  173. camel/toolkits/klavis_toolkit.py +5 -1
  174. camel/toolkits/markitdown_toolkit.py +104 -0
  175. camel/toolkits/math_toolkit.py +64 -10
  176. camel/toolkits/mcp_toolkit.py +370 -45
  177. camel/toolkits/memory_toolkit.py +5 -1
  178. camel/toolkits/message_agent_toolkit.py +608 -0
  179. camel/toolkits/message_integration.py +724 -0
  180. camel/toolkits/minimax_mcp_toolkit.py +195 -0
  181. camel/toolkits/note_taking_toolkit.py +277 -0
  182. camel/toolkits/notion_mcp_toolkit.py +224 -0
  183. camel/toolkits/openbb_toolkit.py +5 -1
  184. camel/toolkits/origene_mcp_toolkit.py +56 -0
  185. camel/toolkits/playwright_mcp_toolkit.py +12 -31
  186. camel/toolkits/pptx_toolkit.py +25 -12
  187. camel/toolkits/resend_toolkit.py +168 -0
  188. camel/toolkits/screenshot_toolkit.py +213 -0
  189. camel/toolkits/search_toolkit.py +437 -142
  190. camel/toolkits/slack_toolkit.py +104 -50
  191. camel/toolkits/sympy_toolkit.py +1 -1
  192. camel/toolkits/task_planning_toolkit.py +3 -3
  193. camel/toolkits/terminal_toolkit/__init__.py +18 -0
  194. camel/toolkits/terminal_toolkit/terminal_toolkit.py +957 -0
  195. camel/toolkits/terminal_toolkit/utils.py +532 -0
  196. camel/toolkits/thinking_toolkit.py +1 -1
  197. camel/toolkits/vertex_ai_veo_toolkit.py +590 -0
  198. camel/toolkits/video_analysis_toolkit.py +106 -26
  199. camel/toolkits/video_download_toolkit.py +17 -14
  200. camel/toolkits/web_deploy_toolkit.py +1219 -0
  201. camel/toolkits/wechat_official_toolkit.py +483 -0
  202. camel/toolkits/zapier_toolkit.py +5 -1
  203. camel/types/__init__.py +2 -2
  204. camel/types/agents/tool_calling_record.py +4 -1
  205. camel/types/enums.py +316 -40
  206. camel/types/openai_types.py +2 -2
  207. camel/types/unified_model_type.py +31 -4
  208. camel/utils/commons.py +36 -5
  209. camel/utils/constants.py +3 -0
  210. camel/utils/context_utils.py +1003 -0
  211. camel/utils/mcp.py +138 -4
  212. camel/utils/mcp_client.py +45 -1
  213. camel/utils/message_summarizer.py +148 -0
  214. camel/utils/token_counting.py +43 -20
  215. camel/utils/tool_result.py +44 -0
  216. {camel_ai-0.2.67.dist-info → camel_ai-0.2.80a2.dist-info}/METADATA +296 -85
  217. {camel_ai-0.2.67.dist-info → camel_ai-0.2.80a2.dist-info}/RECORD +219 -146
  218. camel/loaders/pandas_reader.py +0 -368
  219. camel/toolkits/dalle_toolkit.py +0 -175
  220. camel/toolkits/file_write_toolkit.py +0 -444
  221. camel/toolkits/openai_agent_toolkit.py +0 -135
  222. camel/toolkits/terminal_toolkit.py +0 -1037
  223. {camel_ai-0.2.67.dist-info → camel_ai-0.2.80a2.dist-info}/WHEEL +0 -0
  224. {camel_ai-0.2.67.dist-info → camel_ai-0.2.80a2.dist-info}/licenses/LICENSE +0 -0
@@ -90,6 +90,7 @@ class VLLMConfig(BaseConfig):
90
90
  most likely tokens to return at each token position, each with an
91
91
  associated log probability. `logprobs` must be set to `true` if
92
92
  this parameter is used. (default: :obj:`None`)
93
+ extra_body: Add additional JSON properties to the request. (default: :obj:`None`)
93
94
  """
94
95
 
95
96
  temperature: Optional[float] = None # openai default: 1.0
@@ -105,6 +106,7 @@ class VLLMConfig(BaseConfig):
105
106
  user: Optional[str] = None
106
107
  logprobs: Optional[bool] = None
107
108
  top_logprobs: Optional[int] = None
109
+ extra_body: Optional[dict] = None
108
110
 
109
111
 
110
112
  VLLM_API_PARAMS = {param for param in VLLMConfig.model_fields.keys()}
@@ -70,16 +70,25 @@ class AlpacaDataCollector(BaseDataCollector):
70
70
  if not history:
71
71
  raise ValueError("No data collected.")
72
72
 
73
- # Validate and process history
74
- if len(history) == 3 and history[0].role == "system":
75
- history = history[1:] # Ignore the system message.
76
- elif len(history) != 2:
73
+ # Filter out system and tool-related messages
74
+ # Keep only user and final assistant messages
75
+ filtered_history = []
76
+ for msg in history:
77
+ if msg.role == "user":
78
+ filtered_history.append(msg)
79
+ elif msg.role == "assistant" and msg.message:
80
+ # Keep assistant messages with actual content
81
+ # (skip empty ones that only contain tool calls)
82
+ filtered_history.append(msg)
83
+
84
+ # Validate filtered history
85
+ if len(filtered_history) != 2:
77
86
  raise ValueError(
78
87
  f"AlpacaDataCollector only supports one message pair, but "
79
- f"got {len(history)}"
88
+ f"got {len(filtered_history)} after filtering tool messages"
80
89
  )
81
90
 
82
- input_message, output_message = history
91
+ input_message, output_message = filtered_history
83
92
  instruction = (
84
93
  self.system_message.content if self.system_message else ""
85
94
  ) + str(input_message.message)
@@ -116,7 +116,7 @@ class SelfImprovingCoTPipeline:
116
116
  samples to be drawn using the rejection sampling
117
117
  method, where samples are accepted or rejected based on
118
118
  a predefined condition to achieve a desired distribution.
119
- (default: :obj: `None`)
119
+ (default: :obj:`None`)
120
120
  evaluate_agent (Optional[ChatAgent]): The chat agent used for
121
121
  evaluating reasoning traces. (default: :obj:`None`)
122
122
  reward_model (BaseRewardModel, optional): Model used to evaluate
@@ -62,6 +62,7 @@ class BaseGenerator(abc.ABC, IterableDataset):
62
62
  self._buffer = buffer
63
63
  self._data: List[DataPoint] = []
64
64
  self._batch_to_save: List[DataPoint] = []
65
+ self._iter_position: int = 0
65
66
 
66
67
  if data_path:
67
68
  file_path = Path(data_path)
@@ -103,9 +104,9 @@ class BaseGenerator(abc.ABC, IterableDataset):
103
104
  r"""Async iterator that yields datapoints dynamically.
104
105
 
105
106
  If a `data_path` was provided during initialization, those datapoints
106
- are yielded first. When self._data is empty, 20 new datapoints
107
- are generated. Every 100 yields, the batch is appended to the
108
- JSONL file or discarded if `cache` is None.
107
+ are yielded first. When self._iter_position reaches the end of _data,
108
+ new datapoints are generated. Every 100 yields, the batch is appended
109
+ to the JSONL file or discarded if `cache` is None.
109
110
 
110
111
  Yields:
111
112
  DataPoint: A single datapoint.
@@ -113,9 +114,10 @@ class BaseGenerator(abc.ABC, IterableDataset):
113
114
 
114
115
  async def generator():
115
116
  while True:
116
- if not self._data:
117
+ if self._iter_position >= len(self._data):
117
118
  await self.generate_new(self._buffer)
118
- datapoint = self._data.pop(0)
119
+ datapoint = self._data[self._iter_position]
120
+ self._iter_position += 1
119
121
  yield datapoint
120
122
  self._batch_to_save.append(datapoint)
121
123
  if len(self._batch_to_save) == 100:
@@ -132,9 +134,9 @@ class BaseGenerator(abc.ABC, IterableDataset):
132
134
  r"""Synchronous iterator for PyTorch IterableDataset compatibility.
133
135
 
134
136
  If a `data_path` was provided during initialization, those datapoints
135
- are yielded first. When self._data is empty, 20 new datapoints
136
- are generated. Every 100 yields, the batch is appended to the
137
- JSONL file or discarded if `cache` is None.
137
+ are yielded first. When self._iter_position reaches the end of _data,
138
+ new datapoints are generated. Every 100 yields, the batch is appended
139
+ to the JSONL file or discarded if `cache` is None.
138
140
 
139
141
  Yields:
140
142
  DataPoint: A single datapoint.
@@ -150,9 +152,10 @@ class BaseGenerator(abc.ABC, IterableDataset):
150
152
  raise
151
153
 
152
154
  while True:
153
- if not self._data:
155
+ if self._iter_position >= len(self._data):
154
156
  asyncio.run(self.generate_new(self._buffer))
155
- datapoint = self._data.pop(0)
157
+ datapoint = self._data[self._iter_position]
158
+ self._iter_position += 1
156
159
  yield datapoint
157
160
  self._batch_to_save.append(datapoint)
158
161
  if len(self._batch_to_save) == 100:
@@ -248,6 +251,7 @@ class BaseGenerator(abc.ABC, IterableDataset):
248
251
 
249
252
  self.save_to_jsonl(file_path)
250
253
  self._data = []
254
+ self._iter_position = 0
251
255
  logger.info(f"Data flushed to {file_path} and cleared from the memory")
252
256
 
253
257
  def _init_from_jsonl(self, file_path: Path) -> List[Dict[str, Any]]:
@@ -290,3 +294,28 @@ class BaseGenerator(abc.ABC, IterableDataset):
290
294
  f"Successfully loaded {len(raw_data)} items from {file_path}"
291
295
  )
292
296
  return raw_data
297
+
298
+ def __getitem__(self, index: int) -> DataPoint:
299
+ r"""Get a datapoint by index without removing the datapoint from _data.
300
+
301
+ Args:
302
+ index (int): Index of the datapoint to retrieve.
303
+
304
+ Returns:
305
+ DataPoint: The datapoint at the specified index.
306
+
307
+ Raises:
308
+ IndexError: If the index is out of range.
309
+ """
310
+ if index < 0 or index >= len(self._data):
311
+ raise IndexError(f"Index {index} is out of range")
312
+
313
+ return self._data[index]
314
+
315
+ def __len__(self) -> int:
316
+ r"""Get the number of datapoints in the dataset.
317
+
318
+ Returns:
319
+ int: The number of datapoints.
320
+ """
321
+ return len(self._data)
@@ -13,6 +13,13 @@
13
13
  # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  from .models import Action, Environment, Observation, StepResult
15
15
  from .multi_step import MultiStepEnv
16
+ from .rlcards_env import (
17
+ ActionExtractor,
18
+ BlackjackEnv,
19
+ DoudizhuEnv,
20
+ LeducHoldemEnv,
21
+ RLCardsEnv,
22
+ )
16
23
  from .single_step import SingleStepEnv
17
24
  from .tic_tac_toe import Opponent, TicTacToeEnv
18
25
 
@@ -25,4 +32,9 @@ __all__ = [
25
32
  "StepResult",
26
33
  "TicTacToeEnv",
27
34
  "Opponent",
35
+ "RLCardsEnv",
36
+ "BlackjackEnv",
37
+ "LeducHoldemEnv",
38
+ "ActionExtractor",
39
+ "DoudizhuEnv",
28
40
  ]