camel-ai 0.2.71a3__py3-none-any.whl → 0.2.71a5__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.

Potentially problematic release.


This version of camel-ai might be problematic. Click here for more details.

Files changed (39) hide show
  1. camel/__init__.py +1 -1
  2. camel/agents/chat_agent.py +1482 -134
  3. camel/agents/repo_agent.py +2 -1
  4. camel/benchmarks/browsecomp.py +6 -6
  5. camel/interpreters/docker_interpreter.py +3 -2
  6. camel/loaders/base_loader.py +85 -0
  7. camel/logger.py +1 -1
  8. camel/messages/base.py +12 -1
  9. camel/models/azure_openai_model.py +96 -7
  10. camel/models/base_model.py +68 -10
  11. camel/models/deepseek_model.py +5 -0
  12. camel/models/gemini_model.py +5 -0
  13. camel/models/litellm_model.py +48 -16
  14. camel/models/model_manager.py +24 -6
  15. camel/models/openai_compatible_model.py +109 -5
  16. camel/models/openai_model.py +117 -8
  17. camel/societies/workforce/prompts.py +68 -5
  18. camel/societies/workforce/role_playing_worker.py +1 -0
  19. camel/societies/workforce/single_agent_worker.py +1 -0
  20. camel/societies/workforce/utils.py +67 -2
  21. camel/societies/workforce/workforce.py +412 -67
  22. camel/societies/workforce/workforce_logger.py +0 -8
  23. camel/tasks/task.py +2 -0
  24. camel/toolkits/__init__.py +7 -2
  25. camel/toolkits/craw4ai_toolkit.py +2 -2
  26. camel/toolkits/file_write_toolkit.py +526 -121
  27. camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +9 -3
  28. camel/toolkits/hybrid_browser_toolkit/unified_analyzer.js +31 -8
  29. camel/toolkits/message_agent_toolkit.py +608 -0
  30. camel/toolkits/note_taking_toolkit.py +90 -0
  31. camel/toolkits/openai_image_toolkit.py +292 -0
  32. camel/toolkits/slack_toolkit.py +4 -4
  33. camel/toolkits/terminal_toolkit.py +223 -73
  34. camel/utils/mcp_client.py +37 -1
  35. {camel_ai-0.2.71a3.dist-info → camel_ai-0.2.71a5.dist-info}/METADATA +48 -7
  36. {camel_ai-0.2.71a3.dist-info → camel_ai-0.2.71a5.dist-info}/RECORD +38 -35
  37. camel/toolkits/dalle_toolkit.py +0 -175
  38. {camel_ai-0.2.71a3.dist-info → camel_ai-0.2.71a5.dist-info}/WHEEL +0 -0
  39. {camel_ai-0.2.71a3.dist-info → camel_ai-0.2.71a5.dist-info}/licenses/LICENSE +0 -0
@@ -180,7 +180,6 @@ class WorkforceLogger:
180
180
  self,
181
181
  task_id: str,
182
182
  error_message: str,
183
- error_type: str,
184
183
  worker_id: Optional[str] = None,
185
184
  metadata: Optional[Dict[str, Any]] = None,
186
185
  ) -> None:
@@ -190,7 +189,6 @@ class WorkforceLogger:
190
189
  task_id=task_id,
191
190
  worker_id=worker_id,
192
191
  error_message=error_message,
193
- error_type=error_type,
194
192
  metadata=metadata or {},
195
193
  )
196
194
  if task_id in self._task_hierarchy:
@@ -484,7 +482,6 @@ class WorkforceLogger:
484
482
  'total_tasks_created': 0,
485
483
  'total_tasks_completed': 0,
486
484
  'total_tasks_failed': 0,
487
- 'error_types_count': {},
488
485
  'worker_utilization': {},
489
486
  'current_pending_tasks': 0,
490
487
  'total_workforce_running_time_seconds': 0.0,
@@ -560,11 +557,6 @@ class WorkforceLogger:
560
557
  tasks_handled_by_worker[worker_id] = (
561
558
  tasks_handled_by_worker.get(worker_id, 0) + 1
562
559
  )
563
- error_type = entry['error_type']
564
- kpis['error_types_count'][error_type] = (
565
- kpis['error_types_count'].get(error_type, 0) + 1
566
- )
567
-
568
560
  elif event_type == 'queue_status':
569
561
  pass # Placeholder for now
570
562
 
camel/tasks/task.py CHANGED
@@ -430,6 +430,8 @@ class Task(BaseModel):
430
430
  tasks = task_parser(response.msg.content, self.id)
431
431
  for task in tasks:
432
432
  task.additional_info = self.additional_info
433
+ task.parent = self
434
+ self.subtasks = tasks
433
435
  return tasks
434
436
 
435
437
  def compose(
@@ -23,7 +23,7 @@ from .open_api_specs.security_config import openapi_security_config
23
23
  from .math_toolkit import MathToolkit
24
24
  from .search_toolkit import SearchToolkit
25
25
  from .weather_toolkit import WeatherToolkit
26
- from .dalle_toolkit import DalleToolkit
26
+ from .openai_image_toolkit import OpenAIImageToolkit
27
27
  from .ask_news_toolkit import AskNewsToolkit, AsyncAskNewsToolkit
28
28
  from .linkedin_toolkit import LinkedInToolkit
29
29
  from .reddit_toolkit import RedditToolkit
@@ -82,6 +82,8 @@ from .edgeone_pages_mcp_toolkit import EdgeOnePagesMCPToolkit
82
82
  from .google_drive_mcp_toolkit import GoogleDriveMCPToolkit
83
83
  from .craw4ai_toolkit import Crawl4AIToolkit
84
84
  from .markitdown_toolkit import MarkItDownToolkit
85
+ from .note_taking_toolkit import NoteTakingToolkit
86
+ from .message_agent_toolkit import AgentCommunicationToolkit
85
87
 
86
88
  __all__ = [
87
89
  'BaseToolkit',
@@ -96,7 +98,7 @@ __all__ = [
96
98
  'SearchToolkit',
97
99
  'SlackToolkit',
98
100
  'WhatsAppToolkit',
99
- 'DalleToolkit',
101
+ 'OpenAIImageToolkit',
100
102
  'TwitterToolkit',
101
103
  'WeatherToolkit',
102
104
  'RetrievalToolkit',
@@ -145,10 +147,13 @@ __all__ = [
145
147
  'PlaywrightMCPToolkit',
146
148
  'WolframAlphaToolkit',
147
149
  'BohriumToolkit',
150
+ 'OpenAIImageToolkit',
148
151
  'TaskPlanningToolkit',
149
152
  'HybridBrowserToolkit',
150
153
  'EdgeOnePagesMCPToolkit',
151
154
  'GoogleDriveMCPToolkit',
152
155
  'Crawl4AIToolkit',
153
156
  'MarkItDownToolkit',
157
+ 'NoteTakingToolkit',
158
+ 'AgentCommunicationToolkit',
154
159
  ]
@@ -71,11 +71,11 @@ class Crawl4AIToolkit(BaseToolkit):
71
71
  return f"Error scraping {url}: {e}"
72
72
 
73
73
  async def __aenter__(self):
74
- """Async context manager entry."""
74
+ r"""Async context manager entry."""
75
75
  return self
76
76
 
77
77
  async def __aexit__(self, exc_type, exc_val, exc_tb):
78
- """Async context manager exit - cleanup the client."""
78
+ r"""Async context manager exit - cleanup the client."""
79
79
  if self._client is not None:
80
80
  await self._client.__aexit__(exc_type, exc_val, exc_tb)
81
81
  self._client = None