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

camel/verifiers/base.py CHANGED
@@ -19,11 +19,7 @@ from typing import List, Optional
19
19
  from camel.logger import get_logger
20
20
  from camel.utils import BatchProcessor
21
21
 
22
- from .models import (
23
- VerificationOutcome,
24
- VerificationResult,
25
- VerifierInput,
26
- )
22
+ from .models import VerificationOutcome, VerificationResult
27
23
 
28
24
  logger = get_logger(__name__)
29
25
 
@@ -157,26 +153,33 @@ class BaseVerifier(ABC):
157
153
  r"""Implement verifier-specific cleanup logic."""
158
154
  pass
159
155
 
160
- async def verify(self, result: VerifierInput) -> VerificationResult:
156
+ async def verify(
157
+ self, solution: str, ground_truth: Optional[str]
158
+ ) -> VerificationResult:
161
159
  r"""Perform verification with full error handling.
162
160
 
163
- Verifies correctness, expected output, reasoning, and symbolic
164
- consistency.
161
+ This method verifies the correctness of a generated solution by
162
+ comparing it against the provided ground truth. It handles
163
+ execution errors, timeouts, and retry attempts to ensure robust
164
+ validation.
165
165
 
166
166
  Args:
167
- result: The response to verify.
167
+ solution (str): The generated response that needs verification.
168
+ ground_truth (Optional[str]): The expected correct answer to
169
+ compare against.
168
170
 
169
171
  Returns:
170
- VerificationResult: Structured result containing:
171
- - status: SUCCESS/FAILURE/ERROR/TIMEOUT
172
- - result: Verification outcome description
173
- - duration: Time taken for verification
174
- - metadata: Additional details
175
- - error_message: Error description if applicable
172
+ VerificationResult: A structured object containing:
173
+ - status (SUCCESS/FAILURE/ERROR/TIMEOUT)
174
+ - result (str): The verification outcome or processed output.
175
+ - duration (float): Time taken for verification.
176
+ - metadata (dict): Additional details such as retry attempts.
177
+ - error_message (Optional[str]): Error description,
178
+ if applicable.
176
179
 
177
180
  Raises:
178
181
  RuntimeError: If verification fails unexpectedly.
179
- asyncio.TimeoutError: If verification times out.
182
+ asyncio.TimeoutError: If verification exceeds the time limit.
180
183
  """
181
184
  if not self._is_setup:
182
185
  logger.warning(
@@ -191,11 +194,13 @@ class BaseVerifier(ABC):
191
194
  try:
192
195
  verification_result = (
193
196
  await asyncio.wait_for(
194
- self._verify_implementation(result),
197
+ self._verify_implementation(solution, ground_truth),
195
198
  timeout=self._timeout,
196
199
  )
197
200
  if self._timeout
198
- else await self._verify_implementation(result)
201
+ else await self._verify_implementation(
202
+ solution, ground_truth
203
+ )
199
204
  )
200
205
 
201
206
  verification_result.duration = time.time() - start_time
@@ -240,101 +245,133 @@ class BaseVerifier(ABC):
240
245
 
241
246
  @abstractmethod
242
247
  async def _verify_implementation(
243
- self, result: VerifierInput
248
+ self, solution: str, ground_truth: Optional[str]
244
249
  ) -> VerificationResult:
245
- r"""Implement the actual verification logic.
250
+ r"""Abstract method for verification logic.
251
+
252
+ Subclasses must implement this method to define how the solution
253
+ should be processed, evaluated, and compared to the ground truth.
246
254
 
247
255
  Args:
248
- result: The response to verify.
256
+ solution (str): The generated response requiring verification.
257
+ ground_truth (Optional[str]): The expected reference output.
249
258
 
250
259
  Returns:
251
- VerificationResult: Containing the verification outcome.
260
+ VerificationResult: Contains verification status and details.
252
261
 
253
262
  Raises:
254
- NotImplementedError: Must be implemented in subclasses.
263
+ NotImplementedError: If the method is not implemented
264
+ in a subclass.
255
265
  """
256
266
  raise NotImplementedError(
257
267
  "Subclasses must implement _verify_implementation()"
258
268
  )
259
269
 
270
+ async def verify_batch(
271
+ self,
272
+ solutions: List[str],
273
+ ground_truths: List[Optional[str]],
274
+ raise_on_error: bool = False,
275
+ ) -> List[VerificationResult]:
276
+ r"""Verify multiple solutions in parallel with controlled concurrency.
260
277
 
261
- async def verify_batch(
262
- self, results: List[VerifierInput], raise_on_error: bool = False
263
- ) -> List[VerificationResult]:
264
- r"""Verify multiple results in parallel with controlled concurrency.
278
+ This method verifies multiple generated solutions against their
279
+ respective ground truths using parallel execution. It handles
280
+ timeouts, execution errors, and batch processing optimizations.
265
281
 
266
- Args:
267
- results: List of responses to verify.
268
- raise_on_error: Whether to raise an exception if any verification
269
- fails. (default: :obj:`False`)
282
+ Args:
283
+ solutions (List[str]): A list of generated solutions to be
284
+ verified.
285
+ ground_truths (List[Optional[str]]): A list of expected outputs for
286
+ comparison. Each element corresponds to a solution.
287
+ raise_on_error (bool, optional): If True, raises an exception if
288
+ any verification fails. (default: :obj:`False`)
270
289
 
271
- Returns:
272
- List[VerificationResult]: One for each input response.
290
+ Returns:
291
+ List[VerificationResult]: A list of verification results, one per
292
+ input solution.
273
293
 
274
- Raises:
275
- RuntimeError: If any verification fails and raise_on_error is True.
276
- asyncio.TimeoutError: If verifications time out and max retries
277
- exceeded.
278
- """
279
- if not self._is_setup:
280
- logger.warning(
281
- f"{self.__class__.__name__} not set up, calling setup()"
282
- )
283
- await self.setup()
284
-
285
- # Get current batch parameters from processor with defaults if not
286
- # present
287
- max_workers = getattr(
288
- self._batch_processor, 'max_workers', self._max_parallel or 1
289
- )
290
- batch_size = getattr(
291
- self._batch_processor, 'batch_size', self._initial_batch_size or 10
292
- )
293
- semaphore = asyncio.Semaphore(max(1, max_workers))
294
-
295
- async def _verify_with_semaphore(
296
- response: VerifierInput,
297
- ) -> VerificationResult:
298
- start_time = time.time()
299
- try:
300
- async with semaphore:
301
- verification_result = await self.verify(response)
302
- processing_time = time.time() - start_time
303
- success = verification_result.status == VerificationOutcome.SUCCESS
304
- self._batch_processor.adjust_batch_size(success, processing_time)
305
- return verification_result
306
- except Exception as e:
307
- processing_time = time.time() - start_time
308
- self._batch_processor.adjust_batch_size(False, processing_time)
309
- logger.error(f"Verification failed: {e!s}", exc_info=True)
310
- return VerificationResult(
311
- status=VerificationOutcome.ERROR,
312
- result="",
313
- error_message=str(e),
314
- metadata={"error_type": type(e).__name__},
294
+ Raises:
295
+ RuntimeError: If any verification fails and `raise_on_error` is
296
+ True.
297
+ asyncio.TimeoutError: If verifications time out after maximum
298
+ retries.
299
+ """
300
+
301
+ if not self._is_setup:
302
+ logger.warning(
303
+ f"{self.__class__.__name__} not set up, calling setup()"
315
304
  )
305
+ await self.setup()
316
306
 
317
- # Process in batches
318
- all_results: List[VerificationResult] = []
319
- for i in range(0, len(results), batch_size):
320
- batch = results[i : i + batch_size]
321
- verification_tasks = [
322
- _verify_with_semaphore(result) for result in batch
323
- ]
324
- try:
325
- batch_results = await asyncio.gather(*verification_tasks)
326
- all_results.extend(batch_results)
327
- except Exception as e:
328
- logger.error(f"Batch verification failed: {e!s}", exc_info=True)
329
- if raise_on_error:
330
- raise RuntimeError(f"Batch verification failed: {e!s}") from e
307
+ # Retrieve batch processing settings
308
+ max_workers = getattr(
309
+ self._batch_processor, 'max_workers', self._max_parallel or 1
310
+ )
311
+ batch_size = getattr(
312
+ self._batch_processor, 'batch_size', self._initial_batch_size or 10
313
+ )
314
+ semaphore = asyncio.Semaphore(max(1, max_workers))
331
315
 
332
- if raise_on_error and any(
333
- r.status in {VerificationOutcome.ERROR, VerificationOutcome.TIMEOUT}
334
- for r in all_results
335
- ):
336
- error_msg = "One or more verifications failed"
337
- logger.error(error_msg)
338
- raise RuntimeError(error_msg)
316
+ async def _verify_with_semaphore(
317
+ solution: str, ground_truth: Optional[str]
318
+ ) -> VerificationResult:
319
+ start_time = time.time()
320
+ try:
321
+ async with semaphore:
322
+ verification_result = await self.verify(
323
+ solution, ground_truth
324
+ )
325
+ processing_time = time.time() - start_time
326
+ success = (
327
+ verification_result.status == VerificationOutcome.SUCCESS
328
+ )
329
+ self._batch_processor.adjust_batch_size(
330
+ success, processing_time
331
+ )
332
+ return verification_result
333
+ except Exception as e:
334
+ processing_time = time.time() - start_time
335
+ self._batch_processor.adjust_batch_size(False, processing_time)
336
+ logger.error(f"Verification failed: {e!s}", exc_info=True)
337
+ return VerificationResult(
338
+ status=VerificationOutcome.ERROR,
339
+ result="",
340
+ error_message=str(e),
341
+ metadata={"error_type": type(e).__name__},
342
+ )
343
+
344
+ # Process in batches
345
+ all_results: List[VerificationResult] = []
346
+ for i in range(0, len(solutions), batch_size):
347
+ batch_solutions = solutions[i : i + batch_size]
348
+ batch_ground_truths = ground_truths[i : i + batch_size]
339
349
 
340
- return all_results
350
+ verification_tasks = [
351
+ _verify_with_semaphore(solution, ground_truth)
352
+ for solution, ground_truth in zip(
353
+ batch_solutions, batch_ground_truths
354
+ )
355
+ ]
356
+ try:
357
+ batch_results = await asyncio.gather(*verification_tasks)
358
+ all_results.extend(batch_results)
359
+ except Exception as e:
360
+ logger.error(
361
+ f"Batch verification failed: {e!s}", exc_info=True
362
+ )
363
+ if raise_on_error:
364
+ raise RuntimeError(
365
+ f"Batch verification failed: {e!s}"
366
+ ) from e
367
+
368
+ if raise_on_error and any(
369
+ r.status
370
+ in {VerificationOutcome.ERROR, VerificationOutcome.TIMEOUT}
371
+ for r in all_results
372
+ ):
373
+ error_msg = "One or more verifications failed"
374
+ logger.error(error_msg)
375
+ raise RuntimeError(error_msg)
376
+
377
+ return all_results
camel/verifiers/models.py CHANGED
@@ -18,18 +18,6 @@ from typing import Any, Dict, Optional
18
18
  from pydantic import BaseModel, Field
19
19
 
20
20
 
21
- class VerifierInput(BaseModel):
22
- r"""Structured input to the verifier"""
23
-
24
- llm_response: str = Field(
25
- description="The LLM response to be verified."
26
- "Needs to be in a format that the verifier can handle."
27
- )
28
- ground_truth: Optional[str] = Field(
29
- None, description="The ground truth data, if available."
30
- )
31
-
32
-
33
21
  class VerificationOutcome(Enum):
34
22
  r"""Enum representing the status of a verification."""
35
23
 
@@ -20,10 +20,11 @@ import tempfile
20
20
  import venv
21
21
  from typing import List, Optional
22
22
 
23
+ from camel.extractors import BaseExtractor
23
24
  from camel.logger import get_logger
24
25
  from camel.verifiers import BaseVerifier
25
26
 
26
- from .models import VerificationOutcome, VerificationResult, VerifierInput
27
+ from .models import VerificationOutcome, VerificationResult
27
28
 
28
29
  logger = get_logger(__name__)
29
30
 
@@ -47,6 +48,7 @@ class PythonVerifier(BaseVerifier):
47
48
  self,
48
49
  timeout: Optional[float] = 30.0,
49
50
  required_packages: Optional[List[str]] = None,
51
+ extractor: Optional[BaseExtractor] = None,
50
52
  ):
51
53
  r"""Initializes the PythonVerifier.
52
54
 
@@ -102,24 +104,33 @@ class PythonVerifier(BaseVerifier):
102
104
  self.venv_path = None
103
105
 
104
106
  async def _verify_implementation(
105
- self, result: VerifierInput
107
+ self, solution: str, ground_truth: Optional[str]
106
108
  ) -> VerificationResult:
107
- r"""Executes the LLM-generated response in a Python virtual
108
- environment.
109
+ r"""Executes and verifies the LLM-generated Python solution in an
110
+ isolated virtual environment.
111
+
112
+ This method runs the given Python solution inside a controlled virtual
113
+ environment, captures its execution output, and optionally compares it
114
+ against a provided ground truth. Handles timeouts and execution errors.
109
115
 
110
116
  Args:
111
- result (VerifierInput): Contains the LLM-generated Python code to
112
- execute and optional ground truth for comparison.
117
+ solution (str): The Python code to execute and verify.
118
+ ground_truth (Optional[str]): The expected output for comparison.
119
+ If None, verification is based only on execution success.
113
120
 
114
121
  Returns:
115
- VerificationResult: Contains verification status (SUCCESS/FAILURE/
116
- ERROR), execution output, error messages if any, and execution
117
- duration.
122
+ VerificationResult: A structured object containing:
123
+ - status (VerificationOutcome): SUCCESS, FAILURE, ERROR,
124
+ or TIMEOUT.
125
+ - result (str): The execution output of the solution.
126
+ - error_message (Optional[str]): Captured error message,
127
+ if any.
128
+ - duration (float, optional): Execution time (set externally).
118
129
 
119
130
  Raises:
120
131
  asyncio.TimeoutError: If execution exceeds the configured timeout.
121
- Exception: Any unexpected errors during execution are caught and
122
- converted to an ERROR verification result.
132
+ Exception: Any unexpected errors are caught and converted to an
133
+ ERROR verification result.
123
134
  """
124
135
  if not self.venv_path:
125
136
  return VerificationResult(
@@ -128,7 +139,7 @@ class PythonVerifier(BaseVerifier):
128
139
  error_message="Virtual environment is not set up.",
129
140
  )
130
141
 
131
- script = result.llm_response.strip()
142
+ script = solution.strip()
132
143
  venv_python = os.path.join(self.venv_path, self.bin_dir, "python")
133
144
 
134
145
  if not os.path.exists(venv_python):
@@ -156,11 +167,11 @@ class PythonVerifier(BaseVerifier):
156
167
 
157
168
  if process.returncode == 0:
158
169
  # If ground truth is provided, compare it with the result
159
- if result.ground_truth is not None:
170
+ if ground_truth is not None:
160
171
  # Normalize both strings by removing extra whitespace
161
172
  normalized_output = ' '.join(output_result.strip().split())
162
173
  normalized_truth = ' '.join(
163
- str(result.ground_truth).strip().split()
174
+ str(ground_truth).strip().split()
164
175
  )
165
176
 
166
177
  if normalized_output == normalized_truth:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.35
3
+ Version: 0.2.36
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
@@ -58,6 +58,7 @@ Requires-Dist: jupyter-client<9,>=8.6.2; extra == 'all'
58
58
  Requires-Dist: linkup-sdk<0.3,>=0.2.1; extra == 'all'
59
59
  Requires-Dist: litellm<2,>=1.38.1; extra == 'all'
60
60
  Requires-Dist: mcp>=1.3.0; extra == 'all'
61
+ Requires-Dist: mem0ai>=0.1.67; extra == 'all'
61
62
  Requires-Dist: mistralai<2,>=1.1.0; extra == 'all'
62
63
  Requires-Dist: mock<6,>=5; extra == 'all'
63
64
  Requires-Dist: mypy<2,>=1.5.1; extra == 'all'
@@ -225,6 +226,7 @@ Provides-Extra: storage
225
226
  Requires-Dist: azure-storage-blob<13,>=12.21.0; extra == 'storage'
226
227
  Requires-Dist: botocore<2,>=1.35.3; extra == 'storage'
227
228
  Requires-Dist: google-cloud-storage<3,>=2.18.0; extra == 'storage'
229
+ Requires-Dist: mem0ai>=0.1.73; extra == 'storage'
228
230
  Requires-Dist: nebula3-python==3.8.2; extra == 'storage'
229
231
  Requires-Dist: neo4j<6,>=5.18.0; extra == 'storage'
230
232
  Requires-Dist: pymilvus<3,>=2.4.0; extra == 'storage'
@@ -1,4 +1,4 @@
1
- camel/__init__.py,sha256=fXLBdBhuuwQtpOonflAcAvGbr8VA5JDKtM_T7EkZwPo,912
1
+ camel/__init__.py,sha256=mQ2yVqHODVkMIalVy9qE6Puk0KJ9oiXrN2tO01MDzPM,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
@@ -36,7 +36,7 @@ camel/bots/discord/discord_store.py,sha256=eGBMYG8gm28PmmhcJ-JOVk2UKTBobEzvb6-pC
36
36
  camel/bots/slack/__init__.py,sha256=iqySoYftEb7SI4pabhMvvTp1YYS09BvjwGXPEbcP1Hc,1055
37
37
  camel/bots/slack/models.py,sha256=xMz3RO-88yrxPRrbBDjiabpbZIlpEHCvU-1CvASKARc,5143
38
38
  camel/bots/slack/slack_app.py,sha256=SoSRZZnuTJ0aiLUBZqdG8cUFJzYpfpZh7304t0a_7Dg,9944
39
- camel/configs/__init__.py,sha256=IWfwy2Q8O3uHi9q4NKcYaDwRV0npx3DqJdg050LDvjc,3242
39
+ camel/configs/__init__.py,sha256=QNN7fA4VfPEPuUtxaMJ5Ynt8P-8RrWH4MJMD1rbjbhE,3366
40
40
  camel/configs/aiml_config.py,sha256=jMgNTvPM9mJ_blm-fM8jmnnI7Os_1vQTE6DPlkwR3ps,4197
41
41
  camel/configs/anthropic_config.py,sha256=qrGCVRhpGxUZeM3tLDlP-JDDI4aOsxMmUUl3Z56-iYg,4955
42
42
  camel/configs/base_config.py,sha256=2nEIRQoY6tIMeBIcxcBtCadmpsd8bSQj9rzewQsgfXo,3188
@@ -51,6 +51,7 @@ camel/configs/moonshot_config.py,sha256=IIGeGEAXd4y7FaZ7uNTAAYOYuaBy4YFMusJjuFvf
51
51
  camel/configs/nvidia_config.py,sha256=1Oc3tulHOqAfx1mkrEywrxKIV1SBNzPm0CNrWgj9HXo,3226
52
52
  camel/configs/ollama_config.py,sha256=oEYSgieliXFyvZWs-de-ZsSZVzhoDUC_oyCx1GW3HYY,4403
53
53
  camel/configs/openai_config.py,sha256=Y0oo7vkMzFMmaps8RXPXwjGzcrtf0ZbzfmgZTHWsBfQ,7242
54
+ camel/configs/openrouter_config.py,sha256=Is_j3ysuQFXt_se61Zy_R75mtzlXqhhhiJTP2UCXwqM,5903
54
55
  camel/configs/qwen_config.py,sha256=qvNGqTuT00aDB2n0MI-YL6GgzbMiH-i6wDy-7lWHHFE,4610
55
56
  camel/configs/reka_config.py,sha256=QhTa4hUKz_TF3txTJRNlLSJ391uphEqZOG0zev6bI7w,3498
56
57
  camel/configs/samba_config.py,sha256=2__Xj0HIsFWN38rsbZl9a-lXwOO5XHXoo_j7VwiUDpA,8825
@@ -84,7 +85,7 @@ camel/datahubs/huggingface.py,sha256=LgRruML4XnwHrm_jMB-aB-Ha-M9ErRrA7YmiL6saGis
84
85
  camel/datahubs/models.py,sha256=tGb9OP_aomIhnwc0VapJjTg9PmyV_QCp5to9sABXF0Y,978
85
86
  camel/datasets/__init__.py,sha256=KnAYddFU8Yoi9mLusyn7p9yIbkv7gAxZ_o-q9U1DDb4,963
86
87
  camel/datasets/base_generator.py,sha256=N5qKOr1PUsObhuPWgr7qG_9qXi2_nfMfFzAsm2jqByQ,10135
87
- camel/datasets/few_shot_generator.py,sha256=KpV5ZPHuXxtB2xb0IwHw0hZgAs4-choxx5oyHhdXpmM,9837
88
+ camel/datasets/few_shot_generator.py,sha256=CFhh0Ybpym7fVfOwXWk96K2rTbmlDo80CkSqRk8o6bs,9711
88
89
  camel/datasets/models.py,sha256=H0ksOfkwiPFjVr9xHMYbVoj8YTTWaLI2GYiWqesmiVs,2228
89
90
  camel/datasets/static_dataset.py,sha256=GrszkO6-gKZV8ljIN4k5Y4A1TT8_lB7hJ7SbEEi4zkw,14243
90
91
  camel/embeddings/__init__.py,sha256=YKCFO_YVY-x4A4uWmRuoIEtltrilBmC17DkCcK4zSj8,1263
@@ -98,7 +99,7 @@ camel/embeddings/vlm_embedding.py,sha256=HZFdcz1YzkFPzMj45_jaCVmDQJyccoXN561aLWl
98
99
  camel/environments/__init__.py,sha256=nWFEYK-QcRX0WskLVsXn4iP_pK2liL-iHKG7DSO0zTU,969
99
100
  camel/environments/models.py,sha256=yrrnJd-e6vYjfXMkYMdh0ABn25SSzLY_7XgSniOWOOE,3839
100
101
  camel/environments/multi_step.py,sha256=rEEMMHip5ZVEWpNj7miws5wALlujtUbFZkWDsy7ofHM,8360
101
- camel/environments/single_step.py,sha256=aKQmqWLaQrxwzZ-VAyByF609XhiNSYFCejFuPOkGo1U,9519
102
+ camel/environments/single_step.py,sha256=Z-CzdISVIgYUVd92w5jlymcpnaDBWlvFfXjleoiae9I,9395
102
103
  camel/extractors/__init__.py,sha256=nrEI35-70NGHk-Y7jvyc4i0f1NlpJArVBqAmcfpaBng,811
103
104
  camel/extractors/base.py,sha256=3jvuZpq27nlADDCX3GfubOpeb_zt-E9rzxF3x4lYm8s,10404
104
105
  camel/extractors/python_strategies.py,sha256=k8q4BIAhPZnCSN2LqPaZVrhF56y3Y4cZ6ddn79jcIXE,7825
@@ -121,11 +122,11 @@ camel/loaders/mineru_extractor.py,sha256=nKa5n7f3ergv1TURcbXZJP5mQpnSCIFdlWrxWn4
121
122
  camel/loaders/panda_reader.py,sha256=7z9mA869LTEI48VhPQc0t2fnIUZc4MGngIXCh6lff18,11361
122
123
  camel/loaders/unstructured_io.py,sha256=Dh-MB02nrhVXFyQCUrYt4DATd12zi5bNWE47cPC5yBs,17429
123
124
  camel/memories/__init__.py,sha256=JQbs-_7VkcVTjE8y9J0DWI3btDyMRZilTZNVuy_RxZM,1358
124
- camel/memories/agent_memories.py,sha256=ImalwrT6gVd1rsUl-xvxK7qprYq_ZaEyUxrlrmNxKp0,9257
125
+ camel/memories/agent_memories.py,sha256=HysjYAB6srRdb3uE_IXmC94YPZBfGcAUdTlbcbzzLZE,9330
125
126
  camel/memories/base.py,sha256=3BGuExfwwkbkVpxw1uYms8O37F-PD8ArcmYnFKYUcI4,5652
126
127
  camel/memories/records.py,sha256=ySZewkQ4uqBtx3MlqX7xyQyKfL_wudxZSAOqIHzf0vA,4319
127
128
  camel/memories/blocks/__init__.py,sha256=ci7_WU11222cNd1Zkv-a0z5E2ux95NMjAYm_cDzF0pE,854
128
- camel/memories/blocks/chat_history_block.py,sha256=1UqZQwqTYv-dxt_T3v7S9U8MDbhjDHifNvQthMeGY2Y,4965
129
+ camel/memories/blocks/chat_history_block.py,sha256=5QcyWtLtUDzG62_uYlhoVOoo0ztcWnvv_t5LhbNbqDI,5044
129
130
  camel/memories/blocks/vectordb_block.py,sha256=lf0ipY4cJMB--tQDvpInqsmHZCn7sD1pkmjC70vTtn4,3941
130
131
  camel/memories/context_creators/__init__.py,sha256=pqzkBM2ro5JZD7RhWg05TjinphhCq0QTIqBJlIL1sJ0,800
131
132
  camel/memories/context_creators/score_based.py,sha256=wNPino1fMS4UwebMGc3lgCa5mdVLIXfN3WMxB8xL-x8,5999
@@ -139,7 +140,7 @@ camel/messages/conversion/sharegpt/__init__.py,sha256=oWUuHV5w85kxqhz_hoElLmCfzL
139
140
  camel/messages/conversion/sharegpt/function_call_formatter.py,sha256=cn7e7CfmxEVFlfOqhjhNuA8nuWvWD6hXYn-3okXNxxQ,1832
140
141
  camel/messages/conversion/sharegpt/hermes/__init__.py,sha256=mxuMSm-neaTgInIjYXuIVdC310E6jKJzM3IdtaJ4qY4,812
141
142
  camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py,sha256=-9TT8iOQ-ieKSKR_PmJSA5Bi0uBx-qR7WQ6vxuFkorM,4639
142
- camel/models/__init__.py,sha256=iNZ1LcesJ3YaAbNRxHTA-sUaxfjn6gUQ-EQArll21KQ,2769
143
+ camel/models/__init__.py,sha256=_GIkcZ_xwLBuQnIm6f0l4Ww8cBOs-PfarMT70omRCWE,2838
143
144
  camel/models/_utils.py,sha256=hob1ehnS5xZitMCdYToHVgaTB55JnaP4_DSWnTEfVsg,2045
144
145
  camel/models/aiml_model.py,sha256=4FW66DxmVMPWAJckh4UjMM6eD1QNyrAPAPtrpmWxzjc,6524
145
146
  camel/models/anthropic_model.py,sha256=8XAj9sVaN1X0hvrL9a-qsmkAFWoGe1Ozj5XZsXYe1UI,5894
@@ -149,12 +150,12 @@ camel/models/base_model.py,sha256=RolL8fRwVpfz8g9lpb_71h0mYTNl-U63f8KBy6hc3E0,10
149
150
  camel/models/cohere_model.py,sha256=i1GHWp1l9oqbhzCjyaG9njrqLF1__q38OrTWOgChofw,13421
150
151
  camel/models/deepseek_model.py,sha256=HjFEGhxOuEGYOzE8dbkdJRjtrDIbyUZ9XRPKAgm4UFo,9621
151
152
  camel/models/fish_audio_model.py,sha256=RCwORRIdCbjZXWWjjctpksPI2DnS0b68JjxunHBQ1xk,5981
152
- camel/models/gemini_model.py,sha256=MUIQfZmSiqABPRjwjA8C-oIpRCgJmkRssM14BBApMWA,9779
153
- camel/models/groq_model.py,sha256=FgXOHmIKAxGFASUmmk5tK49bPcXsr7diB3zRFGg9XDA,7353
153
+ camel/models/gemini_model.py,sha256=ax7byBfrJbknZ0yjepbbuFyBfU9D2J1lREp7-mjJnZc,11671
154
+ camel/models/groq_model.py,sha256=HfhYt58GtKVcpUSZS_AhqKbSm9ZctPQzwPxNHS7QNi4,7461
154
155
  camel/models/internlm_model.py,sha256=4nr5LXhxBfOjm-0i65pXyaS0_sT5oAXKXaUfkijAGmQ,5612
155
156
  camel/models/litellm_model.py,sha256=xi4kDd0FKuznKtox8ArsB39u40ueOhcb-CpWv4bcbXw,5544
156
157
  camel/models/mistral_model.py,sha256=OB948fRVnXikVIDO3PqxV0zb_qpwwta0DIW1bbX3SYI,11666
157
- camel/models/model_factory.py,sha256=GdjGCxslqe04oWvpfiOdPl0ZGzuGooeA9M8ppby6hFo,6863
158
+ camel/models/model_factory.py,sha256=fgBD5P242PWd7CyhbB1Y7VXY01fIGD_d-8CEJ5f1hes,7035
158
159
  camel/models/model_manager.py,sha256=gfpL-WUxuTXgNeCkIVg8Y0zRvxMqRLX8JGt0XEAPQ8Y,9214
159
160
  camel/models/moonshot_model.py,sha256=DNZzDYz0AWU1q6pIvbPALqesejoawwuKzeP0_ZbjDSg,6149
160
161
  camel/models/nemotron_model.py,sha256=jJrW8tpTlEJDT1FjflB9krhgEQhD5KBeLmyUIcZvWPk,3886
@@ -163,6 +164,7 @@ camel/models/ollama_model.py,sha256=byJ0YbMlilEFRKJZIot-MPUcojwMHLIaBES0a1SURtg,
163
164
  camel/models/openai_audio_models.py,sha256=fYpxFvxT8p93KVb5BYODTuI5wdNXV9pu_bvxfARgVYk,13193
164
165
  camel/models/openai_compatible_model.py,sha256=fy9OSvkCM4YQhsFBBZ6D8lIiaHmCKu8_i26VlIdWwW0,8134
165
166
  camel/models/openai_model.py,sha256=CbfD9yVtAltyqdFpjnLXncFnmaGPDZq8JhJDaSfG0pc,10186
167
+ camel/models/openrouter_model.py,sha256=6tbCyY_lpyFwQzObKvtUskMCUdBLcOiz0l6_6PgpsXg,7557
166
168
  camel/models/qwen_model.py,sha256=_LeeB0yrXRMI-gZOEEOHg0bWNOJpuQHf2G7u40--3r8,7064
167
169
  camel/models/reka_model.py,sha256=15DscZf3lbqsIzm6kzjzDrhblBt1_0xlphT4isuQMu0,10146
168
170
  camel/models/samba_model.py,sha256=t8b9TA1iVlOUizYSn5NDw4RZWjURqsyd4mkisDXef_s,22558
@@ -234,16 +236,17 @@ camel/societies/workforce/task_channel.py,sha256=9t5hoinfGYnbRavX4kx34Jk1FOy05Sn
234
236
  camel/societies/workforce/utils.py,sha256=yPbcLx8lNZStl15C4UXRBl5qsTrGA-hiIGynnGi53WQ,2384
235
237
  camel/societies/workforce/worker.py,sha256=Do6FDpEraICQVptBH-LiG5KDYYQzD83sLoYO9J8NAbc,3933
236
238
  camel/societies/workforce/workforce.py,sha256=lflBJO4vBPg_uY7U-O8STxo90c8iwLN9r-rTwHm118g,18104
237
- camel/storages/__init__.py,sha256=jXff0PfC9VzAlSAgwlPv3uzZQlhuc82Did_OPNLJJuY,1617
239
+ camel/storages/__init__.py,sha256=ef2s6bdLJ1OJbcCKKTl9aGuXqsaczBXgbVS_yUtPzjw,1691
238
240
  camel/storages/graph_storages/__init__.py,sha256=G29BNn651C0WTOpjCl4QnVM-4B9tcNh8DdmsCiONH8Y,948
239
241
  camel/storages/graph_storages/base.py,sha256=uSe9jWuLudfm5jtfo6E-L_kNzITwK1_Ef-6L4HWw-JM,2852
240
242
  camel/storages/graph_storages/graph_element.py,sha256=X_2orbQOMaQd00xxzAoJLfEcrVNE1mgCqMJv0orMAKA,2733
241
243
  camel/storages/graph_storages/nebula_graph.py,sha256=iLcHrIgd5U59GXlcLtLBAI8vNFpqHHLHHFmHTceVVLc,22816
242
244
  camel/storages/graph_storages/neo4j_graph.py,sha256=Ng7fLCUrWhdFAd4d6UEpuAB6B6QgxbHmv8d8XDNOVJc,30773
243
- camel/storages/key_value_storages/__init__.py,sha256=P5TpG0Ecwk12bmUjmSOsLGV0uUkpiLNYXJ7cvOdG1ow,1004
245
+ camel/storages/key_value_storages/__init__.py,sha256=qBNx5QwKGa2wydavFYpM5MLVPkqNn4ODjqjzszFxKb8,1059
244
246
  camel/storages/key_value_storages/base.py,sha256=FSfxeLuG7SPvn-Mg-OQxtRKPtQBnRkB7lYeDaFOefpk,2177
245
247
  camel/storages/key_value_storages/in_memory.py,sha256=k04Nx53lYxD5MoqDtBEgZrQYkAQ-zIuU6tqnoNqiHws,1949
246
248
  camel/storages/key_value_storages/json.py,sha256=Jn7-fh2MjSMaVSCCMF_Hu-mAIj6JJ86iwKaSgI-5Uf0,3483
249
+ camel/storages/key_value_storages/mem0_cloud.py,sha256=py8-n3in65K9cFnUJTxXKhzE4J0H1BSUWFDD4DT3rPg,8254
247
250
  camel/storages/key_value_storages/redis.py,sha256=Suo7wxxBXFc0fkJ8qSX2xQ26Ik_YhoKWfTOVQKUl5vA,5720
248
251
  camel/storages/object_storages/__init__.py,sha256=26yATVTD9yVH-p9KueD30JakstTGiDh89GcFtUNNe4U,915
249
252
  camel/storages/object_storages/amazon_s3.py,sha256=9Yvyyyb1LGHxr8REEza7oGopbVtLEfOyXWJc18ZwgqA,7418
@@ -253,7 +256,7 @@ camel/storages/object_storages/google_cloud.py,sha256=59AvGar_GDoGYHhzUi5KBtInv2
253
256
  camel/storages/vectordb_storages/__init__.py,sha256=NCXSLGFE5BuGWDYrsXuiJIsOJObwGnyAzpWuzMoxeWU,1070
254
257
  camel/storages/vectordb_storages/base.py,sha256=9pFxeGvQp6wH3VDhJH_uTSDs6s1Tgi--BH2Bomg3qVQ,6738
255
258
  camel/storages/vectordb_storages/milvus.py,sha256=XGKSQQflvqvTCo92rrgmbwYtsJKY9JxphdEQqGXf_kA,13483
256
- camel/storages/vectordb_storages/qdrant.py,sha256=pDkhX3iu1rFCbiMz6F47EhgENCCVDx3ejh-zt988NtU,18011
259
+ camel/storages/vectordb_storages/qdrant.py,sha256=3x1ApU3OJld7fIpO8VFL5EeNMtR5H8u49xXGoKEXww0,18017
257
260
  camel/tasks/__init__.py,sha256=MuHwkw5GRQc8NOCzj8tjtBrr2Xg9KrcKp-ed_-2ZGIM,906
258
261
  camel/tasks/task.py,sha256=FpYYbxWrAvqFJ4KvbjIn-EnTGpe9u_emSWUpdIuCAZo,13178
259
262
  camel/tasks/task_prompt.py,sha256=3KZmKYKUPcTKe8EAZOZBN3G05JHRVt7oHY9ORzLVu1g,2150
@@ -266,8 +269,8 @@ camel/toolkits/arxiv_toolkit.py,sha256=d0Zn8LQGENhtlZ0BHlDr1pUV8xHOc6TOenAaKgbel
266
269
  camel/toolkits/ask_news_toolkit.py,sha256=PAxio8I2eTau9TgOu1jyFC9fsHhvGb-aLIkroWPtwx4,23268
267
270
  camel/toolkits/audio_analysis_toolkit.py,sha256=LC0C6SEIwko8HqkT-C3ub6Ila2PfuIbKLBOEjrrF6BE,8552
268
271
  camel/toolkits/base.py,sha256=7WRovKrz380b25lYdwT-2FCXzS3dkllOjT53hmmCg_I,1999
269
- camel/toolkits/browser_toolkit.py,sha256=c0zPhQmyV7I37LiwQSpb4WMN8lMS_aTILgPJS8eJfqc,53078
270
- camel/toolkits/code_execution.py,sha256=seqTtjulBZXH4qd5m2YAXQaxyL2_n2ekmqsYB-wBxvw,4547
272
+ camel/toolkits/browser_toolkit.py,sha256=OuiwMwTWMGi0qtDjEH4pDlszr274UgtnttkynwjDWoM,54584
273
+ camel/toolkits/code_execution.py,sha256=UlkMu6Le38WVJ1IPU8cu9QzXNHBsUBL59tJuCsQJgnk,4578
271
274
  camel/toolkits/dalle_toolkit.py,sha256=Usmw3JiJErLQgWSB1qKq_bOACNwbUTQPFc_EsVzTrGo,5115
272
275
  camel/toolkits/dappier_toolkit.py,sha256=_69IAmXE2QSbwGxnSEycaV2XrrkiM5wKI6heM7-4MfU,8175
273
276
  camel/toolkits/data_commons_toolkit.py,sha256=VmDipqHabDdYVCzhuoaPE832i76yXt-uom7p5ObH1w0,14121
@@ -281,7 +284,7 @@ camel/toolkits/human_toolkit.py,sha256=9CjB1flGXIx7mzkIliDjcwXATUvZNdrRCKWyEgR9E
281
284
  camel/toolkits/image_analysis_toolkit.py,sha256=dpvT8n49s8B8AhJ8aFdy4OONb8E8r_Cwxpx-ByFruy8,7209
282
285
  camel/toolkits/linkedin_toolkit.py,sha256=5ZSMG01RXjibJ2CtB1vLlQ4B-rv4sqf_2cUZC78WTE8,8041
283
286
  camel/toolkits/math_toolkit.py,sha256=5yVF0bKuwkZIV01uICd3TOfktXlTERjKt4DrFyz_oaE,3639
284
- camel/toolkits/mcp_toolkit.py,sha256=j4twcLhZiEQCAEH0N3eQ_RLqDd59ObH93gyZMes3c84,17787
287
+ camel/toolkits/mcp_toolkit.py,sha256=4XJHoAQIg6mqGw19crsTYulZtYIDxmuESrZRnF14zlQ,18725
285
288
  camel/toolkits/memory_toolkit.py,sha256=TeKYd5UMwgjVpuS2orb-ocFL13eUNKujvrFOruDCpm8,4436
286
289
  camel/toolkits/meshy_toolkit.py,sha256=Fd6sQV2JtduxyvHxCBA0_zl2OCgJRAlvDEe58hX8gRg,6463
287
290
  camel/toolkits/mineru_toolkit.py,sha256=vRX9LholLNkpbJ6axfEN4pTG85aWb0PDmlVy3rAAXhg,6868
@@ -331,9 +334,9 @@ camel/toolkits/open_api_specs/web_scraper/openapi.yaml,sha256=u_WalQ01e8W1D27VnZ
331
334
  camel/toolkits/open_api_specs/web_scraper/paths/__init__.py,sha256=OKCZrQCDwaWtXIN_2rA9FSqEvgpQRieRoHh7Ek6N16A,702
332
335
  camel/toolkits/open_api_specs/web_scraper/paths/scraper.py,sha256=aWy1_ppV4NVVEZfnbN3tu9XA9yAPAC9bRStJ5JuXMRU,1117
333
336
  camel/types/__init__.py,sha256=VLWhAt857IFct3XepY5BNOIhyhDhfmODTezr9jhO_TI,2251
334
- camel/types/enums.py,sha256=ZZjClKeJB-ggpAmyyus713mks1C6aSxgx9hLwbULQ_8,35045
337
+ camel/types/enums.py,sha256=17txpxtpmvfTN5yKklSKZxjWz3yXhV1zhEH2m526C5M,35954
335
338
  camel/types/openai_types.py,sha256=8ZFzLe-zGmKNPfuVZFzxlxAX98lGf18gtrPhOgMmzus,2104
336
- camel/types/unified_model_type.py,sha256=GP5GYtA3RfvLsqnk1c4UcOaRKMFhjDgZrLr0ln6JFw8,4253
339
+ camel/types/unified_model_type.py,sha256=z1ze1YD3iI6Agn0vnHQHknJjE-eveVwhe4agGXJKIwE,4396
337
340
  camel/types/agents/__init__.py,sha256=cbvVkogPoZgcwZrgxLH6EtpGXk0kavF79nOic0Dc1vg,786
338
341
  camel/types/agents/tool_calling_record.py,sha256=qa-vLyKvYzWprRkFFl1928xaw9CnfacIebHaqM-oY3s,1814
339
342
  camel/utils/__init__.py,sha256=tLftKYfEu1QbMgiyT479_5htxlfFcfYxDHhjEYRFups,2628
@@ -347,11 +350,11 @@ camel/utils/chunker/__init__.py,sha256=6iN6HL6sblIjDuJTILk-9qKcHBZ97t8b6tZCWPZ0O
347
350
  camel/utils/chunker/base.py,sha256=9CuqymFCRncyAdEST-IcRonB732YAPhusznqH-RES3E,960
348
351
  camel/utils/chunker/code_chunker.py,sha256=sPpM4_ZA3JDq6dAc0_YWX4C-TU_zaDHMxZiygs3TY3s,7072
349
352
  camel/utils/chunker/uio_chunker.py,sha256=BYkA2oKePhTcby6fCMz4yDlOyLJ5lO161kVCqDvjYq4,2621
350
- camel/verifiers/__init__.py,sha256=p6UEyvaOlwUQaFACGB4C07fL1xSnpTouElt19YRuneQ,937
351
- camel/verifiers/base.py,sha256=efWZV9g58IHzJ24U4zr109y34CaAi8tV9WZPMCzP3YI,12017
352
- camel/verifiers/models.py,sha256=hC6m_YxEX-mqi_tkCNZHZWLBWf04ZTyv5vfKR-BEyU4,2818
353
- camel/verifiers/python_verifier.py,sha256=bj-UGxeJTZzxVVa3a8IEQ1lNOpSaaW3JdGnUEoPeQD0,7519
354
- camel_ai-0.2.35.dist-info/METADATA,sha256=xHboWfvVZoHZ7V7GOphIyKnsXvO9D5ySSyjHqFno6HU,37943
355
- camel_ai-0.2.35.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
356
- camel_ai-0.2.35.dist-info/licenses/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
357
- camel_ai-0.2.35.dist-info/RECORD,,
353
+ camel/verifiers/__init__.py,sha256=eU4NJYaGltUYorClvxOCgWwHGQTA3gyP9hUthMdOHHo,901
354
+ camel/verifiers/base.py,sha256=D6hvavoTlKvFZzNVNpo7gc-AN7iqFRBNRaSHNc7GCUM,14025
355
+ camel/verifiers/models.py,sha256=GdxYPr7UxNrR1577yW4kyroRcLGfd-H1GXgv8potDWU,2471
356
+ camel/verifiers/python_verifier.py,sha256=8wrgBCay_Qjt63mo8oBVdXi0Wqe8RWOEe2aXduZyg54,8141
357
+ camel_ai-0.2.36.dist-info/METADATA,sha256=PrfSRJhPsV6rk2wKgUr82aZb0r5raMQMQQhWkj44tDM,38039
358
+ camel_ai-0.2.36.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
359
+ camel_ai-0.2.36.dist-info/licenses/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
360
+ camel_ai-0.2.36.dist-info/RECORD,,