camel-ai 0.2.51__py3-none-any.whl → 0.2.53__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.

@@ -60,6 +60,8 @@ class MCPClient(BaseToolkit):
60
60
  timeout (Optional[float]): Connection timeout. (default: :obj:`'None'`)
61
61
  headers (Dict[str, str]): Headers for the HTTP request.
62
62
  (default: :obj:`'None'`)
63
+ strict (Optional[bool]): Whether to enforce strict mode for the
64
+ function call. (default: :obj:`False`)
63
65
  """
64
66
 
65
67
  def __init__(
@@ -69,6 +71,7 @@ class MCPClient(BaseToolkit):
69
71
  env: Optional[Dict[str, str]] = None,
70
72
  timeout: Optional[float] = None,
71
73
  headers: Optional[Dict[str, str]] = None,
74
+ strict: Optional[bool] = False,
72
75
  ):
73
76
  from mcp import Tool
74
77
 
@@ -78,6 +81,7 @@ class MCPClient(BaseToolkit):
78
81
  self.args = args or []
79
82
  self.env = env or {}
80
83
  self.headers = headers or {}
84
+ self.strict = strict
81
85
 
82
86
  self._mcp_tools: List[Tool] = []
83
87
  self._session: Optional['ClientSession'] = None
@@ -223,7 +227,7 @@ class MCPClient(BaseToolkit):
223
227
 
224
228
  func_params.append(param_name)
225
229
 
226
- async def dynamic_function(**kwargs):
230
+ async def dynamic_function(**kwargs) -> str:
227
231
  r"""Auto-generated function for MCP Tool interaction.
228
232
 
229
233
  Args:
@@ -317,13 +321,15 @@ class MCPClient(BaseToolkit):
317
321
  "additionalProperties": False,
318
322
  }
319
323
 
324
+ # Because certain parameters in MCP may include keywords that are not
325
+ # supported by OpenAI, it is essential to set "strict" to False.
320
326
  return {
321
327
  "type": "function",
322
328
  "function": {
323
329
  "name": mcp_tool.name,
324
330
  "description": mcp_tool.description
325
331
  or "No description provided.",
326
- "strict": True,
332
+ "strict": self.strict,
327
333
  "parameters": parameters,
328
334
  },
329
335
  }
@@ -345,6 +351,39 @@ class MCPClient(BaseToolkit):
345
351
  for mcp_tool in self._mcp_tools
346
352
  ]
347
353
 
354
+ def get_text_tools(self) -> str:
355
+ r"""Returns a string containing the descriptions of the tools
356
+ in the toolkit.
357
+
358
+ Returns:
359
+ str: A string containing the descriptions of the tools
360
+ in the toolkit.
361
+ """
362
+ return "\n".join(
363
+ f"tool_name: {tool.name}\n"
364
+ + f"description: {tool.description or 'No description'}\n"
365
+ + f"input Schema: {tool.inputSchema}\n"
366
+ for tool in self._mcp_tools
367
+ )
368
+
369
+ async def call_tool(
370
+ self, tool_name: str, tool_args: Dict[str, Any]
371
+ ) -> Any:
372
+ r"""Calls the specified tool with the provided arguments.
373
+
374
+ Args:
375
+ tool_name (str): Name of the tool to call.
376
+ tool_args (Dict[str, Any]): Arguments to pass to the tool
377
+ (default: :obj:`{}`).
378
+
379
+ Returns:
380
+ Any: The result of the tool call.
381
+ """
382
+ if self._session is None:
383
+ raise RuntimeError("Session is not initialized.")
384
+
385
+ return await self._session.call_tool(tool_name, tool_args)
386
+
348
387
  @property
349
388
  def session(self) -> Optional["ClientSession"]:
350
389
  return self._session
@@ -363,6 +402,8 @@ class MCPToolkit(BaseToolkit):
363
402
  instances to manage.
364
403
  config_path (Optional[str]): Path to a JSON configuration file
365
404
  defining MCP servers.
405
+ strict (Optional[bool]): Whether to enforce strict mode for the
406
+ function call. (default: :obj:`False`)
366
407
 
367
408
  Note:
368
409
  Either `servers` or `config_path` must be provided. If both are
@@ -397,6 +438,7 @@ class MCPToolkit(BaseToolkit):
397
438
  self,
398
439
  servers: Optional[List[MCPClient]] = None,
399
440
  config_path: Optional[str] = None,
441
+ strict: Optional[bool] = False,
400
442
  ):
401
443
  super().__init__()
402
444
 
@@ -409,16 +451,22 @@ class MCPToolkit(BaseToolkit):
409
451
  self.servers: List[MCPClient] = servers or []
410
452
 
411
453
  if config_path:
412
- self.servers.extend(self._load_servers_from_config(config_path))
454
+ self.servers.extend(
455
+ self._load_servers_from_config(config_path, strict)
456
+ )
413
457
 
414
458
  self._exit_stack = AsyncExitStack()
415
459
  self._connected = False
416
460
 
417
- def _load_servers_from_config(self, config_path: str) -> List[MCPClient]:
461
+ def _load_servers_from_config(
462
+ self, config_path: str, strict: Optional[bool] = False
463
+ ) -> List[MCPClient]:
418
464
  r"""Loads MCP server configurations from a JSON file.
419
465
 
420
466
  Args:
421
467
  config_path (str): Path to the JSON configuration file.
468
+ strict (bool): Whether to enforce strict mode for the
469
+ function call. (default: :obj:`False`)
422
470
 
423
471
  Returns:
424
472
  List[MCPClient]: List of configured MCPClient instances.
@@ -462,6 +510,7 @@ class MCPToolkit(BaseToolkit):
462
510
  args=cfg.get("args", []),
463
511
  env={**os.environ, **cfg.get("env", {})},
464
512
  timeout=cfg.get("timeout", None),
513
+ strict=strict,
465
514
  )
466
515
  all_servers.append(server)
467
516
 
@@ -532,3 +581,13 @@ class MCPToolkit(BaseToolkit):
532
581
  for server in self.servers:
533
582
  all_tools.extend(server.get_tools())
534
583
  return all_tools
584
+
585
+ def get_text_tools(self) -> str:
586
+ r"""Returns a string containing the descriptions of the tools
587
+ in the toolkit.
588
+
589
+ Returns:
590
+ str: A string containing the descriptions of the tools
591
+ in the toolkit.
592
+ """
593
+ return "\n".join(server.get_text_tools() for server in self.servers)
camel/types/__init__.py CHANGED
@@ -14,6 +14,7 @@
14
14
  from .enums import (
15
15
  AudioModelType,
16
16
  EmbeddingModelType,
17
+ GeminiEmbeddingTaskType,
17
18
  HuggingFaceRepoType,
18
19
  ModelPlatformType,
19
20
  ModelType,
@@ -75,6 +76,7 @@ __all__ = [
75
76
  'UnifiedModelType',
76
77
  'ParsedChatCompletion',
77
78
  'HuggingFaceRepoType',
79
+ 'GeminiEmbeddingTaskType',
78
80
  'NOT_GIVEN',
79
81
  'NotGiven',
80
82
  ]
camel/types/enums.py CHANGED
@@ -1202,6 +1202,8 @@ class EmbeddingModelType(Enum):
1202
1202
 
1203
1203
  MISTRAL_EMBED = "mistral-embed"
1204
1204
 
1205
+ GEMINI_EMBEDDING_EXP = "gemini-embedding-exp-03-07"
1206
+
1205
1207
  @property
1206
1208
  def is_openai(self) -> bool:
1207
1209
  r"""Returns whether this type of models is an OpenAI-released model."""
@@ -1230,6 +1232,13 @@ class EmbeddingModelType(Enum):
1230
1232
  EmbeddingModelType.MISTRAL_EMBED,
1231
1233
  }
1232
1234
 
1235
+ @property
1236
+ def is_gemini(self) -> bool:
1237
+ r"""Returns whether this type of models is an Gemini-released model."""
1238
+ return self in {
1239
+ EmbeddingModelType.GEMINI_EMBEDDING_EXP,
1240
+ }
1241
+
1233
1242
  @property
1234
1243
  def output_dim(self) -> int:
1235
1244
  if self in {
@@ -1253,10 +1262,29 @@ class EmbeddingModelType(Enum):
1253
1262
  return 3072
1254
1263
  elif self is EmbeddingModelType.MISTRAL_EMBED:
1255
1264
  return 1024
1265
+ elif self is EmbeddingModelType.GEMINI_EMBEDDING_EXP:
1266
+ return 3072
1256
1267
  else:
1257
1268
  raise ValueError(f"Unknown model type {self}.")
1258
1269
 
1259
1270
 
1271
+ class GeminiEmbeddingTaskType(str, Enum):
1272
+ r"""Task types for Gemini embedding models.
1273
+
1274
+ For more information, please refer to:
1275
+ https://ai.google.dev/gemini-api/docs/embeddings#task-types
1276
+ """
1277
+
1278
+ SEMANTIC_SIMILARITY = "SEMANTIC_SIMILARITY"
1279
+ CLASSIFICATION = "CLASSIFICATION"
1280
+ CLUSTERING = "CLUSTERING"
1281
+ RETRIEVAL_DOCUMENT = "RETRIEVAL_DOCUMENT"
1282
+ RETRIEVAL_QUERY = "RETRIEVAL_QUERY"
1283
+ QUESTION_ANSWERING = "QUESTION_ANSWERING"
1284
+ FACT_VERIFICATION = "FACT_VERIFICATION"
1285
+ CODE_RETRIEVAL_QUERY = "CODE_RETRIEVAL_QUERY"
1286
+
1287
+
1260
1288
  class TaskType(Enum):
1261
1289
  AI_SOCIETY = "ai_society"
1262
1290
  CODE = "code"
camel/utils/commons.py CHANGED
@@ -352,6 +352,8 @@ def api_keys_required(
352
352
  key_way = "https://platform.lingyiwanwu.com/docs"
353
353
  elif env_var_name == 'ZHIPUAI_API_KEY':
354
354
  key_way = "https://www.zhipuai.cn/"
355
+ elif env_var_name == 'KLAVIS_API_KEY':
356
+ key_way = "https://www.klavis.ai/docs"
355
357
 
356
358
  if missing_keys:
357
359
  raise ValueError(
camel/utils/mcp.py CHANGED
@@ -17,6 +17,42 @@ from typing import Any, Callable, Optional
17
17
 
18
18
 
19
19
  class MCPServer:
20
+ r"""Decorator class for registering functions of a class as tools in an MCP
21
+ (Model Context Protocol) server.
22
+
23
+ This class is typically used to wrap a toolkit or service class and
24
+ automatically register specified methods (or methods derived from
25
+ `BaseToolkit`) with a FastMCP server.
26
+
27
+ Args:
28
+ function_names (Optional[list[str]]): A list of method names to expose
29
+ via the MCP server. If not provided and the class is a subclass of
30
+ `BaseToolkit`, method names will be inferred from the tools
31
+ returned by `get_tools()`.
32
+ server_name (Optional[str]): A name for the MCP server. If not
33
+ provided, the class name of the decorated object is used.
34
+
35
+ Example:
36
+ ```
37
+ @MCPServer(function_names=["run", "status"])
38
+ class MyTool:
39
+ def run(self): ...
40
+ def status(self): ...
41
+ ```
42
+ Or, with a class inheriting from BaseToolkit (no need to specify
43
+ `function_names`):
44
+ ```
45
+ @MCPServer()
46
+ class MyToolkit(BaseToolkit):
47
+ ...
48
+ ```
49
+
50
+ Raises:
51
+ ValueError: If no function names are provided and the class does not
52
+ inherit from BaseToolkit, or if any specified method is not found
53
+ or not callable.
54
+ """
55
+
20
56
  def __init__(
21
57
  self,
22
58
  function_names: Optional[list[str]] = None,
@@ -26,6 +62,19 @@ class MCPServer:
26
62
  self.server_name = server_name
27
63
 
28
64
  def make_wrapper(self, func: Callable[..., Any]) -> Callable[..., Any]:
65
+ r"""Wraps a function (sync or async) to preserve its signature and
66
+ metadata.
67
+
68
+ This is used to ensure the MCP server can correctly call and introspect
69
+ the method.
70
+
71
+ Args:
72
+ func (Callable[..., Any]): The function to wrap.
73
+
74
+ Returns:
75
+ Callable[..., Any]: The wrapped function, with preserved signature
76
+ and async support.
77
+ """
29
78
  if inspect.iscoroutinefunction(func):
30
79
 
31
80
  @functools.wraps(func)
@@ -41,6 +90,20 @@ class MCPServer:
41
90
  return wrapper
42
91
 
43
92
  def __call__(self, cls):
93
+ r"""Decorates a class by injecting an MCP server instance and
94
+ registering specified methods.
95
+
96
+ Args:
97
+ cls (type): The class being decorated.
98
+
99
+ Returns:
100
+ type: The modified class with MCP integration.
101
+
102
+ Raises:
103
+ ValueError: If function names are missing and the class is not a
104
+ `BaseToolkit` subclass,
105
+ or if a specified method cannot be found or is not callable.
106
+ """
44
107
  from mcp.server.fastmcp import FastMCP
45
108
 
46
109
  from camel.toolkits.base import BaseToolkit
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.51
3
+ Version: 0.2.53
4
4
  Summary: Communicative Agents for AI Society Study
5
5
  Project-URL: Homepage, https://www.camel-ai.org/
6
6
  Project-URL: Repository, https://github.com/camel-ai/camel
@@ -21,6 +21,7 @@ Requires-Dist: pydantic>=2.10.6
21
21
  Requires-Dist: tiktoken<0.8,>=0.7.0
22
22
  Provides-Extra: all
23
23
  Requires-Dist: accelerate<0.27,>=0.26.0; extra == 'all'
24
+ Requires-Dist: aci-sdk>=1.0.0b1; extra == 'all'
24
25
  Requires-Dist: agentops<0.4,>=0.3.21; extra == 'all'
25
26
  Requires-Dist: aiosqlite<0.21,>=0.20.0; extra == 'all'
26
27
  Requires-Dist: anthropic<0.50.0,>=0.47.0; extra == 'all'
@@ -36,6 +37,7 @@ Requires-Dist: dappier<0.4,>=0.3.3; extra == 'all'
36
37
  Requires-Dist: datacommons-pandas<0.0.4,>=0.0.3; extra == 'all'
37
38
  Requires-Dist: datacommons<2,>=1.4.3; extra == 'all'
38
39
  Requires-Dist: datasets<4,>=3; extra == 'all'
40
+ Requires-Dist: daytona-sdk==0.14.0; extra == 'all'
39
41
  Requires-Dist: diffusers<0.26,>=0.25.0; extra == 'all'
40
42
  Requires-Dist: discord-py<3,>=2.3.2; extra == 'all'
41
43
  Requires-Dist: docker<8,>=7.1.0; extra == 'all'
@@ -53,6 +55,7 @@ Requires-Dist: google-api-python-client==2.166.0; extra == 'all'
53
55
  Requires-Dist: google-auth-httplib2==0.2.0; extra == 'all'
54
56
  Requires-Dist: google-auth-oauthlib==1.2.1; extra == 'all'
55
57
  Requires-Dist: google-cloud-storage<3,>=2.18.0; extra == 'all'
58
+ Requires-Dist: google-genai>=1.13.0; extra == 'all'
56
59
  Requires-Dist: googlemaps<5,>=4.10.0; extra == 'all'
57
60
  Requires-Dist: gradio<4,>=3; extra == 'all'
58
61
  Requires-Dist: html2text>=2024.2.26; extra == 'all'
@@ -169,7 +172,9 @@ Requires-Dist: types-setuptools<70,>=69.2.0; extra == 'dev'
169
172
  Requires-Dist: types-tqdm<5,>=4.66.0; extra == 'dev'
170
173
  Requires-Dist: uv==0.6.5; extra == 'dev'
171
174
  Provides-Extra: dev-tools
175
+ Requires-Dist: aci-sdk>=1.0.0b1; extra == 'dev-tools'
172
176
  Requires-Dist: agentops<0.4,>=0.3.21; extra == 'dev-tools'
177
+ Requires-Dist: daytona-sdk==0.14.0; extra == 'dev-tools'
173
178
  Requires-Dist: docker<8,>=7.1.0; extra == 'dev-tools'
174
179
  Requires-Dist: e2b-code-interpreter<2,>=1.0.3; extra == 'dev-tools'
175
180
  Requires-Dist: ipykernel<7,>=6.0.0; extra == 'dev-tools'
@@ -225,6 +230,7 @@ Requires-Dist: litellm<2,>=1.38.1; extra == 'model-platforms'
225
230
  Requires-Dist: mistralai<2,>=1.1.0; extra == 'model-platforms'
226
231
  Requires-Dist: reka-api<4,>=3.0.8; extra == 'model-platforms'
227
232
  Provides-Extra: owl
233
+ Requires-Dist: aci-sdk>=1.0.0b1; extra == 'owl'
228
234
  Requires-Dist: anthropic<0.50.0,>=0.47.0; extra == 'owl'
229
235
  Requires-Dist: beautifulsoup4<5,>=4; extra == 'owl'
230
236
  Requires-Dist: chunkr-ai>=0.0.41; extra == 'owl'
@@ -273,6 +279,7 @@ Requires-Dist: yt-dlp<2025,>=2024.11.4; extra == 'owl'
273
279
  Provides-Extra: rag
274
280
  Requires-Dist: cohere<6,>=5.11.0; extra == 'rag'
275
281
  Requires-Dist: crawl4ai>=0.3.745; extra == 'rag'
282
+ Requires-Dist: google-genai>=1.13.0; extra == 'rag'
276
283
  Requires-Dist: nebula3-python==3.8.2; extra == 'rag'
277
284
  Requires-Dist: neo4j<6,>=5.18.0; extra == 'rag'
278
285
  Requires-Dist: numpy~=1.26; extra == 'rag'
@@ -1,17 +1,18 @@
1
- camel/__init__.py,sha256=o4tJY1NJXzHDiLow3ekKk0-90Fw8zF2DqhRI1JFAd6s,912
1
+ camel/__init__.py,sha256=JXKNO4YyVylDjRFAu4BWvZAhTxJZjKDMr3vNBe4yIws,912
2
2
  camel/generators.py,sha256=JRqj9_m1PF4qT6UtybzTQ-KBT9MJQt18OAAYvQ_fr2o,13844
3
3
  camel/human.py,sha256=9X09UmxI2JqQnhrFfnZ3B9EzFmVfdSWQcjLWTIXKXe0,4962
4
4
  camel/logger.py,sha256=rZVeOVYuQ9RYJ5Tqyv0usqy0g4zaVEq4qSfZ9nd2640,5755
5
5
  camel/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- camel/agents/__init__.py,sha256=OEWDfxima22hjSZWgIu6sn9O_QKBr6cpS8b1Jywou0A,1596
6
+ camel/agents/__init__.py,sha256=64weKqdvmpZcGWyVkO-OKASAmVUdrQjv60JApgPk_SA,1644
7
7
  camel/agents/_types.py,sha256=ryPRmEXnpNtbFT23GoAcwK-zxWWsIOqYu64mxMx_PhI,1430
8
8
  camel/agents/_utils.py,sha256=AR7Qqgbkmn4X2edYUQf1rdksGUyV5hm3iK1z-Dn0Mcg,6266
9
9
  camel/agents/base.py,sha256=c4bJYL3G3Z41SaFdMPMn8ZjLdFiFaVOFO6EQIfuCVR8,1124
10
- camel/agents/chat_agent.py,sha256=hwkUnUtg9H18bML5hKXompbZPeoweKaO4BkaZ_WGucY,57977
10
+ camel/agents/chat_agent.py,sha256=DTP9-tFryDu4ezbrVUS-H671ccBXZa4Tz7KxARawtyw,58962
11
11
  camel/agents/critic_agent.py,sha256=qFVlHlQo0CVgmPWfWYLT8_oP_KyzCLFsQw_nN_vu5Bs,7487
12
12
  camel/agents/deductive_reasoner_agent.py,sha256=6BZGaq1hR6hKJuQtOfoYQnk_AkZpw_Mr7mUy2MspQgs,13540
13
13
  camel/agents/embodied_agent.py,sha256=XBxBu5ZMmSJ4B2U3Z7SMwvLlgp6yNpaBe8HNQmY9CZA,7536
14
14
  camel/agents/knowledge_graph_agent.py,sha256=7Tchhyvm1s8tQ3at7iGKZt70xWZllRXu2vwUFR37p10,9681
15
+ camel/agents/mcp_agent.py,sha256=W8-om91DjGbcWyjuvns6st8h6T2HGf06tLg7OLzAUf0,7838
15
16
  camel/agents/multi_hop_generator_agent.py,sha256=aYsZNsEFHxIq8_wDN8lZRkvRbfhlOYGBKezWr87y8Bs,4325
16
17
  camel/agents/programmed_agent_instruction.py,sha256=99fLe41che3X6wPpNPJXRwl4If6EoQqQVWIoT3DKE1s,7124
17
18
  camel/agents/repo_agent.py,sha256=ZzZ9zvh0vgdJv1KNY3GEaEPDdDxxXrjUZxjjHjVEWtE,22187
@@ -101,15 +102,16 @@ camel/datasets/few_shot_generator.py,sha256=HCXaJ7b5-W72deC662TKiNUtzzHKJ60dFyZ9
101
102
  camel/datasets/models.py,sha256=0RDZfGT-x2MGaJg6qMufiY5cO-V7Lg0ckDSMYjCUQpo,2230
102
103
  camel/datasets/self_instruct_generator.py,sha256=9FK-S7N7e-PR5rABj59BCNmUZCd8fS72La612FK0AEM,15837
103
104
  camel/datasets/static_dataset.py,sha256=jPFwR0Kk6LmPFGKFm8SGhZvdee9293gGJBoqucCHdE0,14272
104
- camel/embeddings/__init__.py,sha256=hBSLowaRL7HHMx5x3swq9DhdcAuKlJDJm6Y9HXeZw34,1404
105
+ camel/embeddings/__init__.py,sha256=nLFckLBkHXb6HolqPcIssQYO89di0KOeinT_t0S8V9g,1473
105
106
  camel/embeddings/azure_embedding.py,sha256=ClMu3ko1PnkNvWPSWILwCNUnxhzUL7UJHv2sB-OptuE,4233
106
107
  camel/embeddings/base.py,sha256=mxqFkWh2AfbxuVKPOqVx16fCznmuSh9QXGjaEeZHvoY,2190
108
+ camel/embeddings/gemini_embedding.py,sha256=5g8QvIPZuE1ZsLwr1VGRyQYYaiBmOpN3bHFq9TksDAo,4056
107
109
  camel/embeddings/jina_embedding.py,sha256=6aakojtsJ6KLp3nqYLhEOtoFm2shoXlRzxb1YYN_uwo,6623
108
110
  camel/embeddings/mistral_embedding.py,sha256=JaHjcHrc4U216QfGA4NxOSLrgYB9lM19VR2mIMAkuvk,3287
109
111
  camel/embeddings/openai_compatible_embedding.py,sha256=3hzMC-OiwP-xZnzKXTyYwkuuqgtWdiEfDaVNGf5FyKI,3471
110
- camel/embeddings/openai_embedding.py,sha256=9kJBKUWkjEyxtn50V4MDjuOT2syIwWEnZeEHkbqIocg,3936
112
+ camel/embeddings/openai_embedding.py,sha256=zix0O8KdbiVarol4hktKi-0I060epsnj8qAE4kwx3nc,3952
111
113
  camel/embeddings/sentence_transformers_embeddings.py,sha256=E7a8lN50CtDBsFO-NOFQ6qfCnbH41O0_kTTg7dG3sOo,2724
112
- camel/embeddings/together_embedding.py,sha256=tw0OOdBCn9oL6KZH-0hyuozrBJHZSEXVnhNu-QKWxj8,4765
114
+ camel/embeddings/together_embedding.py,sha256=Nl7uyk3pxyI4-l147LEkc1zj5O-H17RbJtb8pYb2K7Q,4765
113
115
  camel/embeddings/vlm_embedding.py,sha256=HZFdcz1YzkFPzMj45_jaCVmDQJyccoXN561aLWlrYmo,5497
114
116
  camel/environments/__init__.py,sha256=fwk74TJO5OaOhL5Pmiz6s6h77B_-DGav5m_HbfS1oUQ,1053
115
117
  camel/environments/models.py,sha256=jVcCyU7xObKoWPnkshmPqyyKi3AOiMVVtUZA-tWEYUU,4194
@@ -175,7 +177,7 @@ camel/models/internlm_model.py,sha256=l7WjJ7JISCCqkezhEXzmjj_Mvhqhxxhsg4NuenP7w9
175
177
  camel/models/litellm_model.py,sha256=rlSt3EnBAAYyoIxq0_XTuRmRnc4RWvD2Z14yIrI_7uw,5942
176
178
  camel/models/lmstudio_model.py,sha256=_Lnv0e2ichks_MrNJGNIawEtGtP7T_xX8v0bFNNeWes,3641
177
179
  camel/models/mistral_model.py,sha256=5FXI8wBIc_xU50NOJZh3gtn91ZNOlPVqKfGm-4aiRYQ,12179
178
- camel/models/model_factory.py,sha256=KkVU7x_Az6EXU_xKIbmmgEjnEg3U08qC_ted8YjL-YU,12373
180
+ camel/models/model_factory.py,sha256=dS5K44jAa1atbicYwKfNFeSVGlgR97rNTQ74Gm_GMOE,12700
179
181
  camel/models/model_manager.py,sha256=gfpL-WUxuTXgNeCkIVg8Y0zRvxMqRLX8JGt0XEAPQ8Y,9214
180
182
  camel/models/modelscope_model.py,sha256=aI7i50DSIE6MO2U_WvULan6Sk4b5d7iZoEHQaARo4FA,10487
181
183
  camel/models/moonshot_model.py,sha256=yeD2jrfQpFaWJHVe1s1KrI6aHQVzKRcBDt9C2Qo4nU8,4305
@@ -227,7 +229,7 @@ camel/prompts/task_prompt_template.py,sha256=clqOHGwd92nWEp1zNMucuJcftRO-p28l48n
227
229
  camel/prompts/translation.py,sha256=xvQHiCv-50G92oIb_rv-xZSzX7OnhAZR2cwbWuQDKZc,1896
228
230
  camel/prompts/video_description_prompt.py,sha256=t-5B_VlTMEjEoRgziixcZLfxcZR2xu7ttZR4kCtTifk,1554
229
231
  camel/responses/__init__.py,sha256=8QQ0T0NH16825WYk6S3dCSWsz8hqLEfdPtVHxwNsCRk,789
230
- camel/responses/agent_responses.py,sha256=a9c2YeZ21AhZtFYezI-Mn-ILJkNpdgA9elKek-GceuM,1765
232
+ camel/responses/agent_responses.py,sha256=bDK6if8u-CNBk91yAIHKFcppdFYkihRyJXgXVdg2UcA,1645
231
233
  camel/retrievers/__init__.py,sha256=MkuWD18uPLg78KPugd8ER8FOE4w0GC6UuHyFaqGhu6Y,1140
232
234
  camel/retrievers/auto_retriever.py,sha256=AkPooLvYlWQQaLfMj4W21FIHdVWK7lbYcm2CeX--ZPg,10439
233
235
  camel/retrievers/base.py,sha256=Sx66VHuNOJE31u59DX5XBwota4XqubeVm0feqLV7i28,2640
@@ -235,10 +237,11 @@ camel/retrievers/bm25_retriever.py,sha256=feQgn3dwnbQG8H7KSbFzjaFAw3KtKObfoyA6gm
235
237
  camel/retrievers/cohere_rerank_retriever.py,sha256=tzMS3HG4wD3gbIAVcHsC5fTbFxuiNrT4qJ10oJMJ0BA,4032
236
238
  camel/retrievers/hybrid_retrival.py,sha256=2ySeXnLunoBHarqssijjxn7bAQGypAXX6QdzxYstreM,9466
237
239
  camel/retrievers/vector_retriever.py,sha256=Fp6k7FkoeUXLiUokqsMIO74Dh2mJcmJP2TrCP-6Ekcc,11051
238
- camel/runtime/__init__.py,sha256=aMUmX2qBmO4wCVJp4pIjx2Zed88HcrUzimfJvnz9ZZg,1207
240
+ camel/runtime/__init__.py,sha256=bFbqDIST69V6LC_Oe5YBz-8qlUaJt4zWGFFT0ctiMLI,1273
239
241
  camel/runtime/api.py,sha256=JfkHqQ_Xs3ZNl4TXC_obV3Ymi21ltP1LAkXzBA3H_Lo,3227
240
242
  camel/runtime/base.py,sha256=KKBLO6PwWEWBXbYaVtO9JXqBT8110iYpMhgNSIxQvYQ,1512
241
243
  camel/runtime/configs.py,sha256=7swJ6shD5CAnQj16D_j1BWJjRDHLue8_BJcQ1-YiKJI,2431
244
+ camel/runtime/daytona_runtime.py,sha256=bhQyn1ZRNcDg-gDWOzjGszMl1keL90xnvLZ-EH--DaU,9165
242
245
  camel/runtime/docker_runtime.py,sha256=Q1eN4rWxDB4PF_G7nq64Rk7xhRZgAhNqmlxsu6YMdCg,13578
243
246
  camel/runtime/llm_guard_runtime.py,sha256=n8MImZsYLXCfr6LG6BFvlC75Al16GMJMvGp4vFsob6E,8101
244
247
  camel/runtime/remote_http_runtime.py,sha256=Emgz2xz4vbwCvErDk6Ni25aDA3EBXoPOQ7U70AgVg0w,6669
@@ -252,7 +255,7 @@ camel/schemas/openai_converter.py,sha256=SEnYsYcboZgVmjcC1YP5xke3c0MYPESPRmYQWsD
252
255
  camel/schemas/outlines_converter.py,sha256=OYKPR1fNyrYs9eh5RiXEAccMbnRc9WTwSVJYbh9HkKE,8738
253
256
  camel/societies/__init__.py,sha256=NOHjtlsY-gV9UCF2xXgcbG-xXyuigmbwbpLpNsDgEJ4,826
254
257
  camel/societies/babyagi_playing.py,sha256=KbTdpHfZ2V8AripVck0bNTOyF-RSaMPCRARz3DvzWfQ,11855
255
- camel/societies/role_playing.py,sha256=6BUsXyjq3l_Oxo9k4P8IEERNEs3maQjkkLsyRlz26sc,28893
258
+ camel/societies/role_playing.py,sha256=e4c-mRj---VmdNMD1M9GDBCtAe_w2HWYFYR8aeIXws4,29553
256
259
  camel/societies/workforce/__init__.py,sha256=bkTI-PE-MSK9AQ2V2gR6cR2WY-R7Jqy_NmXRtAoqo8o,920
257
260
  camel/societies/workforce/base.py,sha256=4uSTmBQsWk_UX1xUrEbjo0X7OuYRbGWoroTV71Tvg8U,1947
258
261
  camel/societies/workforce/prompts.py,sha256=4OGp-1-XFYIZ8ZERubSsG-hwXti8fhjtwc3n5-WEgsA,7821
@@ -292,7 +295,8 @@ camel/terminators/__init__.py,sha256=t8uqrkUnXEOYMXQDgaBkMFJ0EXFKI0kmx4cUimli3Ls
292
295
  camel/terminators/base.py,sha256=xmJzERX7GdSXcxZjAHHODa0rOxRChMSRboDCNHWSscs,1511
293
296
  camel/terminators/response_terminator.py,sha256=n3G5KP6Oj7-7WlRN0yFcrtLpqAJKaKS0bmhrWlFfCgQ,4982
294
297
  camel/terminators/token_limit_terminator.py,sha256=YWv6ZR8R9yI2Qnf_3xES5bEE_O5bb2CxQ0EUXfMh34c,2118
295
- camel/toolkits/__init__.py,sha256=AQqFlCEzz9lb_eSgSNow0G9BXZyh5hD4vPaDJEz9w5I,4366
298
+ camel/toolkits/__init__.py,sha256=Vv5yd6_14j6lMhb8XF9R5GBieeLyheM683uVemJaIH4,4483
299
+ camel/toolkits/aci_toolkit.py,sha256=jhXMQggG22hd3dXdT3iJm7qWTH3KJC-TUVk1txoNWrM,16079
296
300
  camel/toolkits/arxiv_toolkit.py,sha256=Bs2-K1yfmqhEhHoQ0j00KoI8LpOd8M3ApXcvI_-ApVw,6303
297
301
  camel/toolkits/ask_news_toolkit.py,sha256=WfWaqwEo1Apbil3-Rb5y65Ws43NU4rAFWZu5VHe4los,23448
298
302
  camel/toolkits/audio_analysis_toolkit.py,sha256=dnDtQJbztVBwBpamSyCfigPw2GBnDAfi3fOPgql4Y50,8941
@@ -304,7 +308,7 @@ camel/toolkits/dappier_toolkit.py,sha256=ewhXeeUj7e4DiTzuWDA-gHGhrLdyoZ4l9pbijvF
304
308
  camel/toolkits/data_commons_toolkit.py,sha256=aHZUSL1ACpnYGaf1rE2csVKTmXTmN8lMGRUBYhZ_YEk,14168
305
309
  camel/toolkits/excel_toolkit.py,sha256=SpmgLJWVFHaR8puDg4eTllGDc6SXzRt4U3QYgFTrLCM,6354
306
310
  camel/toolkits/file_write_toolkit.py,sha256=UiN5G7hX3dqSkktqvpMq0WhQQJW_fKbiPiOhUeuSWYU,14351
307
- camel/toolkits/function_tool.py,sha256=9I-7HHGf5TzdQDJce9xyz1tfrGZr5Os5iAopMK4p0XA,30325
311
+ camel/toolkits/function_tool.py,sha256=yyNNn6c0Pd-7n2MVlJvl09Cc1zSCt-QPHVstauyZBZY,30349
308
312
  camel/toolkits/github_toolkit.py,sha256=x9QBsnZbLqAng4eGmnJrGxMSScrGzIA9yri9zAqfuwQ,12242
309
313
  camel/toolkits/google_calendar_toolkit.py,sha256=E-sdgdbtNBs_CXbhht9t1dsVr4DsTr5NguHkx4fvSmc,15410
310
314
  camel/toolkits/google_maps_toolkit.py,sha256=WTnkURpGri9KcY5OwV7AJJHOzmpu5RNmYE1QCVqvwWM,12023
@@ -312,9 +316,10 @@ camel/toolkits/google_scholar_toolkit.py,sha256=WQ9a0HQr0vro1Uo1m--alCUXvMmaHVKe
312
316
  camel/toolkits/human_toolkit.py,sha256=ZbhXPA0G3mQkcNW_jPwywReAft2pIJG0WkVXOG48s1w,2328
313
317
  camel/toolkits/image_analysis_toolkit.py,sha256=gnbX2by7_pxPpjUEY8bOj1tV-hGC3mwqEvQRMXyZ9TM,7535
314
318
  camel/toolkits/jina_reranker_toolkit.py,sha256=U-V9qZ7SKP3SPTh_0CsE7ZKNqS9jNkmKYsIN1Mk-vFY,8118
319
+ camel/toolkits/klavis_toolkit.py,sha256=L-OiGwgaIue8QiIijNlvGbgtwjGUszLqs9bVRW5md7c,8244
315
320
  camel/toolkits/linkedin_toolkit.py,sha256=wn4eXwYYlVA7doTna7k7WYhUqTBF83W79S-UJs_IQr0,8065
316
321
  camel/toolkits/math_toolkit.py,sha256=KdI8AJ9Dbq5cfWboAYJUYgSkmADMCO5eZ6yqYkWuiIQ,3686
317
- camel/toolkits/mcp_toolkit.py,sha256=4eweKFF3M9WOGroJCdsNBdyp8KUZJfaXLPGVYFu9kUQ,18275
322
+ camel/toolkits/mcp_toolkit.py,sha256=yBpF6L3mzIs4Ecr3VAyex61CerENOR7ekU0oqAG9WNQ,20449
318
323
  camel/toolkits/memory_toolkit.py,sha256=TeKYd5UMwgjVpuS2orb-ocFL13eUNKujvrFOruDCpm8,4436
319
324
  camel/toolkits/meshy_toolkit.py,sha256=NbgdOBD3FYLtZf-AfonIv6-Q8-8DW129jsaP1PqI2rs,7126
320
325
  camel/toolkits/mineru_toolkit.py,sha256=vRX9LholLNkpbJ6axfEN4pTG85aWb0PDmlVy3rAAXhg,6868
@@ -367,19 +372,19 @@ camel/toolkits/open_api_specs/web_scraper/ai-plugin.json,sha256=jjHvbj0DQ4AYcL9J
367
372
  camel/toolkits/open_api_specs/web_scraper/openapi.yaml,sha256=u_WalQ01e8W1D27VnZviOylpGmJ-zssYrfAgkzqdoyk,2191
368
373
  camel/toolkits/open_api_specs/web_scraper/paths/__init__.py,sha256=OKCZrQCDwaWtXIN_2rA9FSqEvgpQRieRoHh7Ek6N16A,702
369
374
  camel/toolkits/open_api_specs/web_scraper/paths/scraper.py,sha256=aWy1_ppV4NVVEZfnbN3tu9XA9yAPAC9bRStJ5JuXMRU,1117
370
- camel/types/__init__.py,sha256=VLWhAt857IFct3XepY5BNOIhyhDhfmODTezr9jhO_TI,2251
371
- camel/types/enums.py,sha256=zisVc5hTqrbrwtH3lijzalP9zMI2pMW62-SIDizn8EQ,56786
375
+ camel/types/__init__.py,sha256=Xdkjh7TQDAQUQ7pFnt7i_rLjjOhsJJnhzusARcFc94Q,2311
376
+ camel/types/enums.py,sha256=4X3QusgMsmJhvAAoWj5r3PcUg7HyiQwRii4pVE7QLr8,57696
372
377
  camel/types/openai_types.py,sha256=8ZFzLe-zGmKNPfuVZFzxlxAX98lGf18gtrPhOgMmzus,2104
373
378
  camel/types/unified_model_type.py,sha256=TpiUmJ3IuX8LNLtTUeUcVM7U82r4ClSq3ZQlNX3ODKs,5351
374
379
  camel/types/agents/__init__.py,sha256=cbvVkogPoZgcwZrgxLH6EtpGXk0kavF79nOic0Dc1vg,786
375
380
  camel/types/agents/tool_calling_record.py,sha256=qa-vLyKvYzWprRkFFl1928xaw9CnfacIebHaqM-oY3s,1814
376
381
  camel/utils/__init__.py,sha256=0rN9DFjUh7Gv6HIJBhm9edmLKecK-89j9q0TC4ABsZY,2737
377
382
  camel/utils/async_func.py,sha256=KqoktGSWjZBuAMQ2CV0X6FRgHGlzCKLfeaWvp-f1Qz8,1568
378
- camel/utils/commons.py,sha256=WnLInwlT3Cn-M2qhqI_GRX33A0uZaRnnRWvJ248JrrI,33587
383
+ camel/utils/commons.py,sha256=dzZ1zR2RIb6MCCSw_jfil36BGcVe0q4Jy2t2y2T2Vwg,33693
379
384
  camel/utils/constants.py,sha256=cqnxmpUeOwrtsR-tRO4bbOc6ZP19TLj7avjm3FONMJs,1410
380
385
  camel/utils/deduplication.py,sha256=UHikAtOW1TTDunf2t_wa2kFbmkrXWf7HfOKwLvwCxzo,8958
381
386
  camel/utils/filename.py,sha256=HYNc1wbSCgNR1CN21cwHxdAhpnsf5ySJ6jUDfeqOK20,2532
382
- camel/utils/mcp.py,sha256=C4nbP_JSs6GUYk9_0qd4dayYdFk2fwceP08abI9rQBo,2886
387
+ camel/utils/mcp.py,sha256=iuthL8VuUXIRU34Nvx8guq7frfglpZoxewUKuAg3e1s,5077
383
388
  camel/utils/response_format.py,sha256=9KrbwtOM9cA3LSjTgLiK7oKy-53_uMh1cvpyNwwJpng,2419
384
389
  camel/utils/token_counting.py,sha256=apkERzNoVc4sgvJvWVosvepX3KH8pVypVjrL4AA7RB4,17521
385
390
  camel/utils/chunker/__init__.py,sha256=6iN6HL6sblIjDuJTILk-9qKcHBZ97t8b6tZCWPZ0OYI,899
@@ -392,7 +397,7 @@ camel/verifiers/math_verifier.py,sha256=tA1D4S0sm8nsWISevxSN0hvSVtIUpqmJhzqfbuMo
392
397
  camel/verifiers/models.py,sha256=GdxYPr7UxNrR1577yW4kyroRcLGfd-H1GXgv8potDWU,2471
393
398
  camel/verifiers/physics_verifier.py,sha256=c1grrRddcrVN7szkxhv2QirwY9viIRSITWeWFF5HmLs,30187
394
399
  camel/verifiers/python_verifier.py,sha256=ogTz77wODfEcDN4tMVtiSkRQyoiZbHPY2fKybn59lHw,20558
395
- camel_ai-0.2.51.dist-info/METADATA,sha256=tNrtEy6IYsOqhsk1vRLD7EdiTzh9iv0TwcZogRSq-ss,43892
396
- camel_ai-0.2.51.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
397
- camel_ai-0.2.51.dist-info/licenses/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
398
- camel_ai-0.2.51.dist-info/RECORD,,
400
+ camel_ai-0.2.53.dist-info/METADATA,sha256=9t7wCT07mRk-zV4sAs1we5jrhhzp7NFw4UF1bI3jbdw,44254
401
+ camel_ai-0.2.53.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
402
+ camel_ai-0.2.53.dist-info/licenses/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
403
+ camel_ai-0.2.53.dist-info/RECORD,,