camel-ai 0.2.19__py3-none-any.whl → 0.2.20__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 (40) hide show
  1. camel/__init__.py +1 -1
  2. camel/agents/chat_agent.py +29 -30
  3. camel/agents/knowledge_graph_agent.py +1 -5
  4. camel/benchmarks/apibench.py +1 -5
  5. camel/benchmarks/nexus.py +1 -5
  6. camel/benchmarks/ragbench.py +2 -2
  7. camel/bots/telegram_bot.py +1 -5
  8. camel/configs/__init__.py +9 -0
  9. camel/configs/aiml_config.py +80 -0
  10. camel/configs/moonshot_config.py +63 -0
  11. camel/configs/siliconflow_config.py +91 -0
  12. camel/datagen/__init__.py +3 -1
  13. camel/datagen/self_improving_cot.py +821 -0
  14. camel/datahubs/huggingface.py +3 -3
  15. camel/embeddings/jina_embedding.py +6 -1
  16. camel/models/__init__.py +4 -0
  17. camel/models/aiml_model.py +147 -0
  18. camel/models/model_factory.py +9 -0
  19. camel/models/moonshot_model.py +138 -0
  20. camel/models/siliconflow_model.py +142 -0
  21. camel/societies/workforce/role_playing_worker.py +2 -4
  22. camel/societies/workforce/single_agent_worker.py +1 -6
  23. camel/societies/workforce/workforce.py +3 -9
  24. camel/toolkits/__init__.py +4 -0
  25. camel/toolkits/reddit_toolkit.py +8 -38
  26. camel/toolkits/search_toolkit.py +12 -0
  27. camel/toolkits/semantic_scholar_toolkit.py +308 -0
  28. camel/toolkits/sympy_toolkit.py +778 -0
  29. camel/toolkits/whatsapp_toolkit.py +11 -32
  30. camel/types/enums.py +137 -6
  31. camel/types/unified_model_type.py +5 -0
  32. camel/utils/__init__.py +7 -2
  33. camel/utils/commons.py +198 -21
  34. camel/utils/deduplication.py +199 -0
  35. camel/utils/token_counting.py +0 -38
  36. {camel_ai-0.2.19.dist-info → camel_ai-0.2.20.dist-info}/METADATA +13 -11
  37. {camel_ai-0.2.19.dist-info → camel_ai-0.2.20.dist-info}/RECORD +40 -30
  38. /camel/datagen/{cotdatagen.py → cot_datagen.py} +0 -0
  39. {camel_ai-0.2.19.dist-info → camel_ai-0.2.20.dist-info}/LICENSE +0 -0
  40. {camel_ai-0.2.19.dist-info → camel_ai-0.2.20.dist-info}/WHEEL +0 -0
@@ -0,0 +1,199 @@
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
+
15
+
16
+ from typing import Dict, List, Literal, Optional
17
+
18
+ import numpy as np
19
+ from pydantic import BaseModel
20
+ from sklearn.metrics.pairwise import cosine_similarity
21
+
22
+ from camel.embeddings.base import BaseEmbedding
23
+
24
+
25
+ class DeduplicationResult(BaseModel):
26
+ """
27
+ The result of deduplication.
28
+
29
+ Attributes:
30
+ original_texts (List[str]): The original texts.
31
+ unique_ids (List[int]): A list of ids that are unique (not duplicates).
32
+ unique_embeddings_dict (Dict[int, List[float]]):
33
+ A mapping from the index of each unique text to its embedding.
34
+ duplicate_to_target_map (Dict[int, int]):
35
+ A mapping from the index of the duplicate text to the index
36
+ of the text it is considered a duplicate of.
37
+ """
38
+
39
+ original_texts: List[str]
40
+ unique_ids: List[int]
41
+ unique_embeddings_dict: Dict[int, List[float]]
42
+ duplicate_to_target_map: Dict[int, int]
43
+
44
+
45
+ def deduplicate_internally(
46
+ texts: List[str],
47
+ threshold: float = 0.65,
48
+ embedding_instance: Optional[BaseEmbedding[str]] = None,
49
+ embeddings: Optional[List[List[float]]] = None,
50
+ strategy: Literal["top1", "llm-supervise"] = "top1",
51
+ ) -> DeduplicationResult:
52
+ """
53
+ Deduplicate a list of strings based on their cosine similarity.
54
+
55
+ You can either:
56
+ 1) Provide a Camel `BaseEmbedding` instance via `embedding_instance` to let
57
+ this function handle the embedding internally, OR
58
+ 2) Directly pass a list of pre-computed embeddings to `embeddings`.
59
+
60
+ If both `embedding_instance` and `embeddings` are provided, the function
61
+ will raise a ValueError to avoid ambiguous usage.
62
+
63
+ strategy is used to specify different strategies, where 'top1' selects the
64
+ one with highest similarity, and 'llm-supervise' uses LLM to determine if
65
+ texts are duplicates (not yet implemented).
66
+
67
+ Args:
68
+ texts (List[str]): The list of texts to be deduplicated.
69
+ threshold (float, optional): The similarity threshold for considering
70
+ two texts as duplicates. Default is 0.65.
71
+ embedding_instance (Optional[BaseEmbedding[str]], optional):
72
+ A Camel embedding instance for automatic embedding. Defaults to
73
+ None.
74
+ embeddings (Optional[List[List[float]]], optional):
75
+ Pre-computed embeddings of `texts`. Each element in the list
76
+ corresponds to the embedding of the text in the same index of
77
+ `texts`. Defaults to None.
78
+ strategy (Literal["top1", "llm-supervise"], optional):
79
+ The strategy to use for deduplication. Defaults to "top1".
80
+
81
+ Returns:
82
+ DeduplicationResult: An object that contains:
83
+ - `original_texts`: The original texts.
84
+ - `unique_ids`: The unique ids after deduplication.
85
+ - `unique_embeddings_dict`: A dict mapping from (unique) text id
86
+ to its embedding.
87
+ - `duplicate_to_target_map`: A dict mapping from the id of a
88
+ duplicate text to the id of the text it is considered a duplicate
89
+ of.
90
+
91
+ Raises:
92
+ NotImplementedError: If the strategy is not "top1".
93
+ ValueError: If neither embeddings nor embedding_instance is provided,
94
+ or if both are provided at the same time.
95
+ ValueError: If the length of `embeddings` does not match the length of
96
+ `texts`.
97
+
98
+ Example:
99
+ >>> from camel.embeddings.openai_embedding import OpenAIEmbedding
100
+ >>> # Suppose we have 5 texts, some of which may be duplicates
101
+ >>> texts = [
102
+ ... "What is AI?",
103
+ ... "Artificial Intelligence is about machines",
104
+ ... "What is AI?",
105
+ ... "Deep Learning is a subset of AI",
106
+ ... "What is artificial intelligence?"
107
+ ... ]
108
+ >>> # or any other BaseEmbedding instance
109
+ >>> embedding_model = OpenAIEmbedding()
110
+ >>> result = deduplicate_internally(
111
+ ... texts=texts,
112
+ ... threshold=0.7,
113
+ ... embedding_instance=embedding_model
114
+ ... )
115
+ >>> print("Unique ids:")
116
+ >>> for uid in result.unique_ids:
117
+ ... print(texts[uid])
118
+ Unique ids:
119
+ What is AI?
120
+ Artificial Intelligence is about machines
121
+ Deep Learning is a subset of AI
122
+ What is artificial intelligence?
123
+
124
+ >>> print("Duplicate map:")
125
+ >>> print(result.duplicate_to_target_map)
126
+ {2: 0}
127
+ # This indicates the text at index 2 is considered
128
+ # a duplicate of index 0.
129
+ """
130
+ if strategy == "llm-supervise":
131
+ # TODO: Implement LLM-supervise deduplication.
132
+ raise NotImplementedError(
133
+ "LLM-supervise deduplication is not yet implemented."
134
+ )
135
+
136
+ # Check if the parameters are valid.
137
+ if embedding_instance is None and embeddings is None:
138
+ raise ValueError(
139
+ "Either 'embedding_instance' or 'embeddings' must be provided."
140
+ )
141
+ if embedding_instance is not None and embeddings is not None:
142
+ raise ValueError(
143
+ "Cannot provide both 'embedding_instance' and 'embeddings'. "
144
+ "Please choose only one way to supply embeddings."
145
+ )
146
+
147
+ if embedding_instance is not None:
148
+ # Use Camel's embedding_instance to vectorize.
149
+ embeddings = embedding_instance.embed_list(texts)
150
+ else:
151
+ # Use pre-supplied embeddings.
152
+ if embeddings and len(embeddings) != len(texts):
153
+ raise ValueError(
154
+ "The length of 'embeddings' does not match the length "
155
+ "of 'texts'."
156
+ )
157
+
158
+ # Calculate cosine similarity.
159
+ similarity_matrix = cosine_similarity(embeddings)
160
+ n = len(texts)
161
+
162
+ # Use the lower triangle to avoid redundant comparisons
163
+ # (or self-comparisons).
164
+ tril_mask = np.tril(np.ones((n, n)), k=-1)
165
+ similarity_matrix = similarity_matrix * tril_mask
166
+
167
+ # For each row, find the column with the highest similarity
168
+ # that exceeds the threshold. If no similarity exceeds the threshold,
169
+ # set the column index to -1.
170
+ masked_similarities = np.where(
171
+ similarity_matrix > threshold, similarity_matrix, -1
172
+ )
173
+ max_indices = masked_similarities.argmax(axis=1)
174
+
175
+ duplicate_to_target_map: Dict[int, int] = {}
176
+ above_threshold = similarity_matrix[np.arange(n), max_indices] > threshold
177
+
178
+ # Construct the "duplicate->target" mapping.
179
+ for i in range(n):
180
+ if above_threshold[i]:
181
+ duplicate_to_target_map[i] = max_indices[i]
182
+
183
+ # Get the actual unique ids and embeddings.
184
+ unique_ids = []
185
+ unique_embeddings_dict = {}
186
+
187
+ assert embeddings, "embeddings must be valid"
188
+
189
+ for i, (_, emb) in enumerate(zip(texts, embeddings)):
190
+ if i not in duplicate_to_target_map:
191
+ unique_ids.append(i)
192
+ unique_embeddings_dict[i] = emb
193
+
194
+ return DeduplicationResult(
195
+ original_texts=texts,
196
+ unique_ids=unique_ids,
197
+ unique_embeddings_dict=unique_embeddings_dict,
198
+ duplicate_to_target_map=duplicate_to_target_map,
199
+ )
@@ -267,44 +267,6 @@ class AnthropicTokenCounter(BaseTokenCounter):
267
267
  ).input_tokens
268
268
 
269
269
 
270
- class GeminiTokenCounter(BaseTokenCounter):
271
- def __init__(self, model_type: UnifiedModelType):
272
- r"""Constructor for the token counter for Gemini models.
273
-
274
- Args:
275
- model_type (UnifiedModelType): Model type for which tokens will be
276
- counted.
277
- """
278
- import google.generativeai as genai
279
-
280
- self._client = genai.GenerativeModel(model_type)
281
-
282
- def count_tokens_from_messages(self, messages: List[OpenAIMessage]) -> int:
283
- r"""Count number of tokens in the provided message list using
284
- loaded tokenizer specific for this type of model.
285
-
286
- Args:
287
- messages (List[OpenAIMessage]): Message list with the chat history
288
- in OpenAI API format.
289
-
290
- Returns:
291
- int: Number of tokens in the messages.
292
- """
293
- converted_messages = []
294
- for message in messages:
295
- role = message.get('role')
296
- if role == 'assistant':
297
- role_to_gemini = 'model'
298
- else:
299
- role_to_gemini = 'user'
300
- converted_message = {
301
- "role": role_to_gemini,
302
- "parts": message.get("content"),
303
- }
304
- converted_messages.append(converted_message)
305
- return self._client.count_tokens(converted_messages).total_tokens
306
-
307
-
308
270
  class LiteLLMTokenCounter(BaseTokenCounter):
309
271
  def __init__(self, model_type: UnifiedModelType):
310
272
  r"""Constructor for the token counter for LiteLLM models.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: camel-ai
3
- Version: 0.2.19
3
+ Version: 0.2.20
4
4
  Summary: Communicative Agents for AI Society Study
5
5
  License: Apache-2.0
6
6
  Keywords: communicative-ai,ai-societies,artificial-intelligence,deep-learning,multi-agent-systems,cooperative-ai,natural-language-processing,large-language-models
@@ -37,7 +37,7 @@ Requires-Dist: azure-storage-blob (>=12.21.0,<13.0.0) ; extra == "storage" or ex
37
37
  Requires-Dist: beautifulsoup4 (>=4,<5) ; extra == "document-tools" or extra == "all"
38
38
  Requires-Dist: botocore (>=1.35.3,<2.0.0) ; extra == "storage" or extra == "all"
39
39
  Requires-Dist: cohere (>=5.11.0,<6.0.0) ; extra == "rag" or extra == "model-platforms" or extra == "all"
40
- Requires-Dist: colorama (>=0,<1)
40
+ Requires-Dist: colorama (>=0.4.6,<0.5.0)
41
41
  Requires-Dist: curl_cffi (==0.6.2)
42
42
  Requires-Dist: dappier (>=0.3.3,<0.4.0) ; extra == "web-tools" or extra == "all"
43
43
  Requires-Dist: datacommons (>=1.4.3,<2.0.0) ; extra == "data-tools" or extra == "all"
@@ -55,7 +55,6 @@ Requires-Dist: ffmpeg-python (>=0.2.0,<0.3.0) ; extra == "media-tools" or extra
55
55
  Requires-Dist: firecrawl-py (>=1.0.0,<2.0.0) ; extra == "web-tools" or extra == "all"
56
56
  Requires-Dist: fish-audio-sdk (>=2024.12.5,<2025.0.0) ; extra == "model-platforms" or extra == "all"
57
57
  Requires-Dist: google-cloud-storage (>=2.18.0,<3.0.0) ; extra == "storage" or extra == "all"
58
- Requires-Dist: google-generativeai (>=0.6.0,<0.7.0) ; extra == "model-platforms" or extra == "all"
59
58
  Requires-Dist: googlemaps (>=4.10.0,<5.0.0) ; extra == "web-tools" or extra == "all"
60
59
  Requires-Dist: httpx (>=0.23.0,<0.27.3)
61
60
  Requires-Dist: imageio[pyav] (>=2.34.2,<3.0.0) ; extra == "media-tools" or extra == "all"
@@ -70,7 +69,7 @@ Requires-Dist: nebula3-python (==3.8.2) ; extra == "rag" or extra == "storage" o
70
69
  Requires-Dist: neo4j (>=5.18.0,<6.0.0) ; extra == "rag" or extra == "storage" or extra == "all"
71
70
  Requires-Dist: newspaper3k (>=0.2.8,<0.3.0) ; extra == "web-tools" or extra == "all"
72
71
  Requires-Dist: notion-client (>=2.2.1,<3.0.0) ; extra == "communication-tools" or extra == "all"
73
- Requires-Dist: numpy (>=1,<2)
72
+ Requires-Dist: numpy (>=1.26,<2.0)
74
73
  Requires-Dist: openai (>=1.59.7,<2.0.0)
75
74
  Requires-Dist: openapi-spec-validator (>=0.7.1,<0.8.0) ; extra == "document-tools" or extra == "all"
76
75
  Requires-Dist: openbb (>=4.3.5,<5.0.0) ; extra == "data-tools" or extra == "all"
@@ -78,13 +77,13 @@ Requires-Dist: opencv-python (>=4,<5) ; extra == "huggingface" or extra == "all"
78
77
  Requires-Dist: outlines (>=0.1.7,<0.2.0) ; extra == "all"
79
78
  Requires-Dist: pandas (>=1.5.3,<2.0.0) ; extra == "data-tools" or extra == "all"
80
79
  Requires-Dist: pandasai (>=2.3.0,<3.0.0) ; extra == "rag" or extra == "document-tools" or extra == "all"
81
- Requires-Dist: pandoc
82
- Requires-Dist: pathlib (>=1.0.1,<2.0.0)
80
+ Requires-Dist: pandoc (>=2.4,<3.0)
83
81
  Requires-Dist: pdfplumber (>=0.11.0,<0.12.0) ; extra == "document-tools" or extra == "all"
84
82
  Requires-Dist: pillow (>=10.1.0,<11.0.0) ; extra == "media-tools" or extra == "all"
85
83
  Requires-Dist: prance (>=23.6.21.0,<24.0.0.0) ; extra == "document-tools" or extra == "all"
86
84
  Requires-Dist: praw (>=7.7.1,<8.0.0) ; extra == "communication-tools" or extra == "all"
87
- Requires-Dist: protobuf (>=4,<5)
85
+ Requires-Dist: protobuf (>=5,<6)
86
+ Requires-Dist: psutil (>=5.9.8,<6.0.0)
88
87
  Requires-Dist: pyTelegramBotAPI (>=4.18.0,<5.0.0) ; extra == "communication-tools" or extra == "all"
89
88
  Requires-Dist: pydantic (>=1.9,<2.10)
90
89
  Requires-Dist: pydub (>=0.25.1,<0.26.0) ; extra == "media-tools" or extra == "all"
@@ -95,7 +94,6 @@ Requires-Dist: pytest (>=7,<8) ; extra == "test"
95
94
  Requires-Dist: pytest-asyncio (>=0.23.0,<0.24.0) ; extra == "test"
96
95
  Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
97
96
  Requires-Dist: qdrant-client (>=1.9.0,<2.0.0) ; extra == "rag" or extra == "storage" or extra == "all"
98
- Requires-Dist: ragas (<=0.1.6) ; extra == "all"
99
97
  Requires-Dist: rank-bm25 (>=0.2.2,<0.3.0) ; extra == "rag" or extra == "all"
100
98
  Requires-Dist: redis (>=5.0.6,<6.0.0) ; extra == "storage" or extra == "all"
101
99
  Requires-Dist: reka-api (>=3.0.8,<4.0.0) ; extra == "model-platforms" or extra == "all"
@@ -103,12 +101,13 @@ Requires-Dist: requests_oauthlib (>=1.3.1,<2.0.0) ; extra == "web-tools" or extr
103
101
  Requires-Dist: rouge (>=1.0.1,<2.0.0) ; extra == "data-tools" or extra == "all"
104
102
  Requires-Dist: scholarly[tor] (==1.7.11) ; extra == "research-tools" or extra == "all"
105
103
  Requires-Dist: sentence-transformers (>=3.0.1,<4.0.0) ; extra == "rag" or extra == "all"
106
- Requires-Dist: sentencepiece (>=0,<1) ; extra == "huggingface" or extra == "all"
104
+ Requires-Dist: sentencepiece (>=0.2,<0.3) ; extra == "huggingface" or extra == "all"
107
105
  Requires-Dist: sglang (>=0.4.0,<0.5.0) ; extra == "model-platforms" or extra == "all"
108
106
  Requires-Dist: slack-bolt (>=1.20.1,<2.0.0) ; extra == "communication-tools" or extra == "all"
109
107
  Requires-Dist: slack-sdk (>=3.27.2,<4.0.0) ; extra == "communication-tools" or extra == "all"
110
- Requires-Dist: soundfile (>=0,<1) ; extra == "huggingface" or extra == "all"
108
+ Requires-Dist: soundfile (>=0.13,<0.14) ; extra == "huggingface" or extra == "all"
111
109
  Requires-Dist: stripe (>=11.3.0,<12.0.0) ; extra == "data-tools" or extra == "all"
110
+ Requires-Dist: sympy (>=1.13.3,<2.0.0) ; extra == "web-tools" or extra == "all"
112
111
  Requires-Dist: tavily-python (>=0.5.0,<0.6.0) ; extra == "web-tools" or extra == "all"
113
112
  Requires-Dist: textblob (>=0.17.1,<0.18.0) ; extra == "data-tools" or extra == "all"
114
113
  Requires-Dist: tiktoken (>=0.7.0,<0.8.0)
@@ -408,7 +407,8 @@ Practical guides and tutorials for implementing specific functionalities in CAME
408
407
  | **[CoT Data Generation and SFT Qwen with Unsolth](https://docs.camel-ai.org/cookbooks/data_generation/cot_data_gen_sft_qwen_unsolth_upload_huggingface.html)** | Discover how to generate CoT data using CAMEL and SFT Qwen with Unsolth, and seamlessly upload your data and model to Huggingface. |
409
408
  | **[Agentic Data Generation, Evaluation & Filtering with Reward Models](https://docs.camel-ai.org/cookbooks/data_generation/synthetic_dataevaluation&filter_with_reward_model.html)** | Discover methods for generating, evaluating, and filtering agentic data using reward models to enhance the quality and efficiency of your synthetic data pipelines. |
410
409
  | **[Data Model Generation and Structured Output with Qwen Model](https://docs.camel-ai.org/cookbooks/data_generation/data_model_generation_and_structured_output_with_qwen.html)** |Learn how to generate data models and structured outputs using the Qwen Model for improved data representation.|
411
-
410
+ | **[Distill Math Reasoning Data from DeepSeek R1](https://docs.camel-ai.org/cookbooks/data_generation/distill_math_reasoning_data_from_deepseek_r1.html)** |Learn how to set up and leverage CAMEL's data distillation pipline for distilling high-quality maths reasoning data with thought process (Long CoT data)from deepseek R1, and uploading the results to Hugging Face.|
411
+ | **[Self-Improving Math Reasoning Data Distillation from DeepSeek R1](https://docs.camel-ai.org/cookbooks/data_generation/self_improving_math_reasoning_data_distillation_from_deepSeek_r1.html)** |Learn how to set up and leverage CAMEL's data distillation pipline for self-improving math reasoning data distillation from deepseek R1, and uploading the results to Hugging Face.|
412
412
 
413
413
  ### Multi-Agent Systems & Applications
414
414
  | Cookbook | Description |
@@ -459,6 +459,8 @@ We implemented amazing research ideas from other works for you to build, compare
459
459
 
460
460
  - `Source2Synth` from *Alisia Lupidi et al.*: [Source2Synth: Synthetic Data Generation and Curation Grounded in Real Data Sources](https://arxiv.org/abs/2409.08239). [[Example](https://github.com/camel-ai/camel/blob/master/examples/datagen/source2synth.py)]
461
461
 
462
+ - `STaR` from *Eric Zelikman et al.*: [STaR: Bootstrapping Reasoning With Reasoning](https://arxiv.org/abs/2203.14465). [[Example](https://github.com/camel-ai/camel/blob/master/examples/datagen/star)]
463
+
462
464
  ## Other Research Works Based on Camel
463
465
  - [Agent Trust](http://agent-trust.camel-ai.org/): Can Large Language Model Agents Simulate Human Trust Behavior?
464
466
 
@@ -1,11 +1,11 @@
1
- camel/__init__.py,sha256=DgGR3wSLBU3YxNfaiM5B0l2iOual_VnNMGeDb0_BDro,912
1
+ camel/__init__.py,sha256=5ufH2wwwiY1IqRiM7PZhy3sFHQsboGm6eColckLgHZc,912
2
2
  camel/agents/__init__.py,sha256=LcS4m8s97-yADfznvcaAdUe9W0E9h3m6zrSc9H6m9so,1545
3
3
  camel/agents/base.py,sha256=c4bJYL3G3Z41SaFdMPMn8ZjLdFiFaVOFO6EQIfuCVR8,1124
4
- camel/agents/chat_agent.py,sha256=KJM7FbcuOYcTF-PT9IYKtONjjpa-ZhsPFlrlCKf8zW0,56657
4
+ camel/agents/chat_agent.py,sha256=mnJNJbklukwGVsDPpPwzd1z8gMeKv3_TG55rbS28NPo,56492
5
5
  camel/agents/critic_agent.py,sha256=qFVlHlQo0CVgmPWfWYLT8_oP_KyzCLFsQw_nN_vu5Bs,7487
6
6
  camel/agents/deductive_reasoner_agent.py,sha256=6BZGaq1hR6hKJuQtOfoYQnk_AkZpw_Mr7mUy2MspQgs,13540
7
7
  camel/agents/embodied_agent.py,sha256=XBxBu5ZMmSJ4B2U3Z7SMwvLlgp6yNpaBe8HNQmY9CZA,7536
8
- camel/agents/knowledge_graph_agent.py,sha256=MxG40XL8rs9sxcK8BKDLKurZz-Jui-oJOpYJaR5ZjMo,8962
8
+ camel/agents/knowledge_graph_agent.py,sha256=W2wMVe1ib8z6As6iJqtn0UCaouvRRv_o2dpGzvOiI6A,8806
9
9
  camel/agents/multi_hop_generator_agent.py,sha256=aRfvDv0GXCsP49An7F-9l87jh9osSxWD565MmGrKH78,4324
10
10
  camel/agents/programmed_agent_instruction.py,sha256=99fLe41che3X6wPpNPJXRwl4If6EoQqQVWIoT3DKE1s,7124
11
11
  camel/agents/role_assignment_agent.py,sha256=8bkTc14XToFHkP-ZOef5KP0P4hTlCDv0eNsDZPYuukA,5088
@@ -16,11 +16,11 @@ camel/agents/tool_agents/base.py,sha256=T6G5OaAJd4L_yHSFoWcrtqkMEyhge42ppVjx7lYD
16
16
  camel/agents/tool_agents/hugging_face_tool_agent.py,sha256=nNySkdBRYaD05rLyPxzmq8W7D9WPcNHCY9h1jD6S0Hk,8717
17
17
  camel/benchmarks/__init__.py,sha256=QGZK03uHvXbblVap8lOVUrXlE6VprEDaNev9tiQAWF8,1122
18
18
  camel/benchmarks/apibank.py,sha256=mvI8irOfm0GxGafblT_4cpZmZKQO1XNfTDA_qioG9gY,21193
19
- camel/benchmarks/apibench.py,sha256=zuR-is5xnH1nJWOXuBf73FRGvdtDxW2d0KUBtn_x4i8,19133
19
+ camel/benchmarks/apibench.py,sha256=F9hvVOpX2NnYDB1BiwN2Tbga1mkHGHsmiLCwhva-Fi0,18973
20
20
  camel/benchmarks/base.py,sha256=GHbcE0KAenEiYb3x8orLgyGPp40KTdLHwahVFhI-cgE,4594
21
21
  camel/benchmarks/gaia.py,sha256=ZMGzoQ2bdyCmVOdipj2lN3J-Ym1gySuZaYtSTvpUI9I,16774
22
- camel/benchmarks/nexus.py,sha256=6e5KQ8Oy1pbdnKBfVcJWCC_nyMEWJxeRhEix4VDkEzc,18273
23
- camel/benchmarks/ragbench.py,sha256=yYJ8Rlt57tSdzrWiFk3fH2weiVlWv86yW-F-Gjfch1U,11063
22
+ camel/benchmarks/nexus.py,sha256=Yi41HLoP7JsvRd-uieQInlw0jnIf4TfeCPhLJMHjXHo,18113
23
+ camel/benchmarks/ragbench.py,sha256=XlBV6YK_eZSH0yscNMX10BFHsVOXDfLqj4b8QHgsjlk,11079
24
24
  camel/bots/__init__.py,sha256=6JRnSmUdnoZra20BJMqqrUrVfYSEbW9NyUksYmu6nwY,1174
25
25
  camel/bots/discord/__init__.py,sha256=4ycOm2pMrQ7vQdjB80a5hz7TyiJGnSeHifoxkl8lyyQ,1027
26
26
  camel/bots/discord/discord_app.py,sha256=h6FrTiwsw7TqImG62SvzUyNpmVHekwy0GWLmpM9P9s0,14222
@@ -29,8 +29,9 @@ camel/bots/discord/discord_store.py,sha256=eGBMYG8gm28PmmhcJ-JOVk2UKTBobEzvb6-pC
29
29
  camel/bots/slack/__init__.py,sha256=iqySoYftEb7SI4pabhMvvTp1YYS09BvjwGXPEbcP1Hc,1055
30
30
  camel/bots/slack/models.py,sha256=xMz3RO-88yrxPRrbBDjiabpbZIlpEHCvU-1CvASKARc,5143
31
31
  camel/bots/slack/slack_app.py,sha256=SoSRZZnuTJ0aiLUBZqdG8cUFJzYpfpZh7304t0a_7Dg,9944
32
- camel/bots/telegram_bot.py,sha256=gnyxToSHkjRpNDoCWBNv59WcdxeocVJHU2S4jexzM2E,2741
33
- camel/configs/__init__.py,sha256=4Q9kpo_hs7wKrpMMTCMXNtjMXdWsQ1GcUj2wB4dEODk,2905
32
+ camel/bots/telegram_bot.py,sha256=z0B2O14-GTKGVX5e6-Q85zMp3eISE_hH-KqxlGOFJtM,2595
33
+ camel/configs/__init__.py,sha256=IWfwy2Q8O3uHi9q4NKcYaDwRV0npx3DqJdg050LDvjc,3242
34
+ camel/configs/aiml_config.py,sha256=jMgNTvPM9mJ_blm-fM8jmnnI7Os_1vQTE6DPlkwR3ps,4197
34
35
  camel/configs/anthropic_config.py,sha256=WIIyPYx7z70jiJoCc1Rz_58jrXRirpyJMlr0FrIii2I,3435
35
36
  camel/configs/base_config.py,sha256=RrlOwwTUXeTjsDChZXUZIBK1uCojyavEbX21bGVLuog,3286
36
37
  camel/configs/cohere_config.py,sha256=joF4GHqoTIRuEDlyTmxW5Ud23psE0xP1VCcEvKychko,3997
@@ -40,6 +41,7 @@ camel/configs/groq_config.py,sha256=Xe82_EbEYfacNXQApIHZiXw-NscufZxnLau72YEy_iA,
40
41
  camel/configs/internlm_config.py,sha256=I1Hcyj5r3Sq7WUu0ypEUroqtOGbI2dXawUS6GVGhW6U,2979
41
42
  camel/configs/litellm_config.py,sha256=oa6b67M0UotlvN7NuXrSUXLrskdpm3RMcew0rBfSsBc,4686
42
43
  camel/configs/mistral_config.py,sha256=ul7AAeG3172PtodEEruAZky0OURwgp6YeNq8ma-4os4,3463
44
+ camel/configs/moonshot_config.py,sha256=IIGeGEAXd4y7FaZ7uNTAAYOYuaBy4YFMusJjuFvfO4w,2779
43
45
  camel/configs/nvidia_config.py,sha256=1Oc3tulHOqAfx1mkrEywrxKIV1SBNzPm0CNrWgj9HXo,3226
44
46
  camel/configs/ollama_config.py,sha256=oEYSgieliXFyvZWs-de-ZsSZVzhoDUC_oyCx1GW3HYY,4403
45
47
  camel/configs/openai_config.py,sha256=CRqM00fA4mXsaADuhwbwwceW3t4o0ae9_7CiKjJg1gI,7448
@@ -47,6 +49,7 @@ camel/configs/qwen_config.py,sha256=wLzkv0G3qzcqRN31oHv-6OXKcB1-ILlROj4xgdFSmPM,
47
49
  camel/configs/reka_config.py,sha256=QhTa4hUKz_TF3txTJRNlLSJ391uphEqZOG0zev6bI7w,3498
48
50
  camel/configs/samba_config.py,sha256=2__Xj0HIsFWN38rsbZl9a-lXwOO5XHXoo_j7VwiUDpA,8825
49
51
  camel/configs/sglang_config.py,sha256=EFr5TE8kXiZbx2lKm4r3Y5noDHGTIOPL6IlQHDum6kQ,3796
52
+ camel/configs/siliconflow_config.py,sha256=9SyBKMR_a1Usj6jRkbvk-wXAwllMdKnKNoPEwTaFTU4,4018
50
53
  camel/configs/togetherai_config.py,sha256=bzFlDPR78NwvGCIPAhplITiy8WsGrdK4IDBbfQ7xGSw,5655
51
54
  camel/configs/vllm_config.py,sha256=9F81FtJGbO8T3aGFggDOVUL5qequPmg882ZSXjIeFW0,6110
52
55
  camel/configs/yi_config.py,sha256=ZvrOroEdYgdyBWcYxn3CHyOA64P5I16XBVbgfusxaPQ,2745
@@ -55,8 +58,9 @@ camel/data_collector/__init__.py,sha256=UWZya21xeJ6DvyLcf54XlYPg7ShOsNJmNR88kfRL
55
58
  camel/data_collector/alpaca_collector.py,sha256=fqS_kws1EU9mDWlVxPXcoD1GhJ7lEzC28muGIMxiUpg,4683
56
59
  camel/data_collector/base.py,sha256=Rn0aJBBvpMZYYTLT1yNjIalIvDuVVwOx6iawKlzocZQ,6708
57
60
  camel/data_collector/sharegpt_collector.py,sha256=E06pf1CuqBAr2i0AQAlr6FtAEz7mwmKSq0RdFfX48PE,7255
58
- camel/datagen/__init__.py,sha256=ZE9ObIQ_IKiElmt0pk-gX1aydfuvzugYSzCHfOlRJY8,859
59
- camel/datagen/cotdatagen.py,sha256=WMw4NhUJVgpWOTvsMaQ1Fk1BYSXLtUlP-00wYPSuK7A,17650
61
+ camel/datagen/__init__.py,sha256=EPF-eZ4rg7qbeSVZhfQ0iME0WDRSqRwBGbW-s0ZJ2EA,949
62
+ camel/datagen/cot_datagen.py,sha256=WMw4NhUJVgpWOTvsMaQ1Fk1BYSXLtUlP-00wYPSuK7A,17650
63
+ camel/datagen/self_improving_cot.py,sha256=VB4n-DXU13lJI7CK2_NJ8l-qpGnx4CxNrZEL_tF2XXM,31006
60
64
  camel/datagen/self_instruct/__init__.py,sha256=kRLWyCF-tGR9KEzpYImpupYvL15LcRfZCHndNu6AvV0,1179
61
65
  camel/datagen/self_instruct/filter/__init__.py,sha256=UiGBfDRYO-3Z3dhaxAFVh4F8PF52jo6W6qu7VyHhG_Q,1163
62
66
  camel/datagen/self_instruct/filter/filter_function.py,sha256=-voPwP83c_bkZrSAhwludBCtfsKDFG_jlDHcNUOLV7o,6691
@@ -70,11 +74,11 @@ camel/datagen/source2synth/models.py,sha256=gTdiKoGeHrZBPPOts6mKU9ZeUKh21uDcrCls
70
74
  camel/datagen/source2synth/user_data_processor_config.py,sha256=WpIePsxzFbpv3wFl0Wpe6kl0fJmR2AajiBH2OOJvFC0,2409
71
75
  camel/datahubs/__init__.py,sha256=1a8fRuzgirO2pHtPnuisZ76iF_AN9GxMFq9gwFKWE5I,906
72
76
  camel/datahubs/base.py,sha256=4QKWiJaeL5ReQpyTAbOtzHs-2CzAYbVyoMngYwdpZGU,4357
73
- camel/datahubs/huggingface.py,sha256=OrrFUAQ9p92T4P2M_jq_ykR_Z6lfjd52CZszefm8Ls0,14883
77
+ camel/datahubs/huggingface.py,sha256=m1LDBv9ESNQINfiZdBpuVD5Zr1_iZqo-5LBYHXHhXw8,14853
74
78
  camel/datahubs/models.py,sha256=tGb9OP_aomIhnwc0VapJjTg9PmyV_QCp5to9sABXF0Y,978
75
79
  camel/embeddings/__init__.py,sha256=YKCFO_YVY-x4A4uWmRuoIEtltrilBmC17DkCcK4zSj8,1263
76
80
  camel/embeddings/base.py,sha256=mxqFkWh2AfbxuVKPOqVx16fCznmuSh9QXGjaEeZHvoY,2190
77
- camel/embeddings/jina_embedding.py,sha256=N8rISoLi3-tztj0-lCMLC4HAxrNu0wUUBFCEJvYkmCE,6233
81
+ camel/embeddings/jina_embedding.py,sha256=6aakojtsJ6KLp3nqYLhEOtoFm2shoXlRzxb1YYN_uwo,6623
78
82
  camel/embeddings/mistral_embedding.py,sha256=JaHjcHrc4U216QfGA4NxOSLrgYB9lM19VR2mIMAkuvk,3287
79
83
  camel/embeddings/openai_compatible_embedding.py,sha256=48T1fNUkgifoPiVHPJ7HJERekP1sENy3t07S1ENiwWk,3158
80
84
  camel/embeddings/openai_embedding.py,sha256=DZh5OuXzBo1fMXifgyStUMm_BFaK1vQYrKdFtXqLKdg,3655
@@ -118,7 +122,8 @@ camel/messages/conversion/sharegpt/function_call_formatter.py,sha256=cn7e7CfmxEV
118
122
  camel/messages/conversion/sharegpt/hermes/__init__.py,sha256=mxuMSm-neaTgInIjYXuIVdC310E6jKJzM3IdtaJ4qY4,812
119
123
  camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py,sha256=-9TT8iOQ-ieKSKR_PmJSA5Bi0uBx-qR7WQ6vxuFkorM,4639
120
124
  camel/messages/func_message.py,sha256=EjsUor40oUUKrHwolRpCH0sJECcqnp2mm4072tNWTPg,5939
121
- camel/models/__init__.py,sha256=CWSHG0qbIT64pQ6m3_NdXr9iydGF_8-5x-MJfcGtT0M,2456
125
+ camel/models/__init__.py,sha256=np8pj6JClpO5HzL_EQb_tkX5-SFTwozy2QUmMQuO7lU,2570
126
+ camel/models/aiml_model.py,sha256=ItiTNq3IhvnGclT9Lwm_3NFzK-yIK2wIhevLfyn5oeU,5222
122
127
  camel/models/anthropic_model.py,sha256=BOj4vEtYVWbgy3DmBBlFh6LPXHbi1-LCPWzIxFuw9u4,5829
123
128
  camel/models/azure_openai_model.py,sha256=ptL4YK8KkAbOA6XDxIhcEqxPOVGrYmzXqBzdsZAyHss,6083
124
129
  camel/models/base_model.py,sha256=rxRZc31cKone4OGuvXi14FI_O9TC1aBvIy8WFSlVeSI,5727
@@ -130,8 +135,9 @@ camel/models/groq_model.py,sha256=gDLv1_gOIioNmTh7I_efM5FMEsELqeQGAtY7ipd85TU,49
130
135
  camel/models/internlm_model.py,sha256=khWd570OU3OZJpjGhmq81tJ_OsZM1m3zcyNDmdTmgqo,5114
131
136
  camel/models/litellm_model.py,sha256=-9DcJlVBL25vsZOdA0UkEWt5G5PP8QaXXhcE2PRiwRw,5296
132
137
  camel/models/mistral_model.py,sha256=7OUTdTKzYPGYdi0n_hBAawlplYVR6XyvfzANHki660c,10182
133
- camel/models/model_factory.py,sha256=cuBvdg8hCLXKlIRU9BxRAzsOGKfHmcj1lqzonnnj9ic,6304
138
+ camel/models/model_factory.py,sha256=1PgJdifxYYqQ9VnZRrEER7nKjz2X07uHwPMxg454Alk,6732
134
139
  camel/models/model_manager.py,sha256=ji1d1S-2lwk6uDggSyTnXbalu2F5lHaZnfPBBCJwBxU,7159
140
+ camel/models/moonshot_model.py,sha256=m4OFqTZfw8n1RCjsC4-WP5Gih1aMI3sUaX3oo7OpSQU,5023
135
141
  camel/models/nemotron_model.py,sha256=f663rRrybuAQgBCzaYW-myLp8nZM7S0N14MmOblfB3w,2958
136
142
  camel/models/nvidia_model.py,sha256=7THp2MECXYBUpJWTZkkgGQqgsLfjXPMVb1aGWFA1vdg,5247
137
143
  camel/models/ollama_model.py,sha256=uiIgXmz6EqRsi3mBh8RAWopOom6rM77H4fP_Hp8cj3U,6057
@@ -147,6 +153,7 @@ camel/models/reward/nemotron_model.py,sha256=EICDP2SyQpARupxsGWFKJHNADsVknT_t6tC
147
153
  camel/models/reward/skywork_model.py,sha256=KxHVDuwja2kZBCoCX8_sLBbXUGRSFsTPjgwsy1uyoyU,3246
148
154
  camel/models/samba_model.py,sha256=5i3JgjLMFAFspdEwNIzWKMobM4xrDtO4aFXMHhEfJyU,14532
149
155
  camel/models/sglang_model.py,sha256=dXOPSdskfF-gK2XUkzPkbTzY1lBVyjMEV6XWl-rEN7U,8147
156
+ camel/models/siliconflow_model.py,sha256=DH3iaFEswa0X1I3EKz0kT5k2xMjPakt6_qd7EZKeJZ0,5136
150
157
  camel/models/stub_model.py,sha256=TKTTryatEqCfjQ8NTco9ipj29CbLLtmWEcF_VcaWvQI,3703
151
158
  camel/models/togetherai_model.py,sha256=hgeSgV4xCpBUvYqAYILNcRBiHlExoA1nR1tu0CgG-sw,5298
152
159
  camel/models/vllm_model.py,sha256=e57qjaHsZ-RTCsMVdMoyM-gseJwjtxiG2ePBKO5dnOQ,5640
@@ -200,12 +207,12 @@ camel/societies/role_playing.py,sha256=BhM42niGOaQctdOsOHtr6-ZA6oYvhf12eriSDj9Mh
200
207
  camel/societies/workforce/__init__.py,sha256=bkTI-PE-MSK9AQ2V2gR6cR2WY-R7Jqy_NmXRtAoqo8o,920
201
208
  camel/societies/workforce/base.py,sha256=4uSTmBQsWk_UX1xUrEbjo0X7OuYRbGWoroTV71Tvg8U,1947
202
209
  camel/societies/workforce/prompts.py,sha256=KBiBWDXhclpJLvdUmk2anX2J9eeUDD7xHYwSeZJD_Hc,6178
203
- camel/societies/workforce/role_playing_worker.py,sha256=GhU2yKHYxU_etbTXn6xz8pq4ywtQRbP-UKdPSX6uIbA,7128
204
- camel/societies/workforce/single_agent_worker.py,sha256=RgZveQhinTLJA9XPRb_ph_mGY4h7goeYrG20ydtwVjA,3582
210
+ camel/societies/workforce/role_playing_worker.py,sha256=nfn-hjtFPzhML82mKh16Nig1NRB7WHwgJfdCjM9sDnw,7040
211
+ camel/societies/workforce/single_agent_worker.py,sha256=M2I8U10QVFkUjpdeWVZ6mIuvJ387nM3gQZ60oU0xY5U,3428
205
212
  camel/societies/workforce/task_channel.py,sha256=9t5hoinfGYnbRavX4kx34Jk1FOy05SnJZYbNzb5M-CQ,7140
206
213
  camel/societies/workforce/utils.py,sha256=yPbcLx8lNZStl15C4UXRBl5qsTrGA-hiIGynnGi53WQ,2384
207
214
  camel/societies/workforce/worker.py,sha256=Do6FDpEraICQVptBH-LiG5KDYYQzD83sLoYO9J8NAbc,3933
208
- camel/societies/workforce/workforce.py,sha256=kO5t5RaEsz4SZ6l3Lb8JxvyeOtePW2y0NrRV94KHBao,18302
215
+ camel/societies/workforce/workforce.py,sha256=lflBJO4vBPg_uY7U-O8STxo90c8iwLN9r-rTwHm118g,18104
209
216
  camel/storages/__init__.py,sha256=jXff0PfC9VzAlSAgwlPv3uzZQlhuc82Did_OPNLJJuY,1617
210
217
  camel/storages/graph_storages/__init__.py,sha256=G29BNn651C0WTOpjCl4QnVM-4B9tcNh8DdmsCiONH8Y,948
211
218
  camel/storages/graph_storages/base.py,sha256=uSe9jWuLudfm5jtfo6E-L_kNzITwK1_Ef-6L4HWw-JM,2852
@@ -233,7 +240,7 @@ camel/terminators/__init__.py,sha256=t8uqrkUnXEOYMXQDgaBkMFJ0EXFKI0kmx4cUimli3Ls
233
240
  camel/terminators/base.py,sha256=xmJzERX7GdSXcxZjAHHODa0rOxRChMSRboDCNHWSscs,1511
234
241
  camel/terminators/response_terminator.py,sha256=n3G5KP6Oj7-7WlRN0yFcrtLpqAJKaKS0bmhrWlFfCgQ,4982
235
242
  camel/terminators/token_limit_terminator.py,sha256=YWv6ZR8R9yI2Qnf_3xES5bEE_O5bb2CxQ0EUXfMh34c,2118
236
- camel/toolkits/__init__.py,sha256=9koE7Yf-VV0GsznaG1tWEHb_c59VcwkLjir1juQjh5E,2703
243
+ camel/toolkits/__init__.py,sha256=QXU7wR4wpveIP_t2AcaWvOS-ANMygUGCfQXGl59aAyg,2854
237
244
  camel/toolkits/arxiv_toolkit.py,sha256=I9WEUturZhbL5gQIgX_8bKttuJUlMKHcvUfhcidFVhs,6204
238
245
  camel/toolkits/ask_news_toolkit.py,sha256=PIFGGVHpSOXs2lg-zA6qhlHF17f1CyCjGbpud90yG8I,23158
239
246
  camel/toolkits/base.py,sha256=XnERVclg201dG7BrawwbuSeSlkz1ngIfatES1ingpkA,1264
@@ -277,26 +284,29 @@ camel/toolkits/open_api_specs/web_scraper/paths/__init__.py,sha256=OKCZrQCDwaWtX
277
284
  camel/toolkits/open_api_specs/web_scraper/paths/scraper.py,sha256=aWy1_ppV4NVVEZfnbN3tu9XA9yAPAC9bRStJ5JuXMRU,1117
278
285
  camel/toolkits/open_api_toolkit.py,sha256=Venfq8JwTMQfzRzzB7AYmYUMEX35hW0BjIv_ozFMiNk,23316
279
286
  camel/toolkits/openbb_toolkit.py,sha256=tq4ER2utf9y4nsibU7g7jnRefA3UHw4DdXQlSrFhvJk,28802
280
- camel/toolkits/reddit_toolkit.py,sha256=tb0qwgtawgWe-PPotKVsKqMqkSiACP6k9MzKHuMbkXU,8886
287
+ camel/toolkits/reddit_toolkit.py,sha256=j4AiNlKlQFvpFoJVr79Pj41427fpPphBCWKxSvLYqcw,7780
281
288
  camel/toolkits/retrieval_toolkit.py,sha256=gMHk-Y-KDROGd-yX9ykfpwAf6ViO678j9Q9Ju3sfBGo,3695
282
- camel/toolkits/search_toolkit.py,sha256=_QgoLeLeQIwev2o7MDXrPyihr5b4XWasrcN8qBK_izg,29327
289
+ camel/toolkits/search_toolkit.py,sha256=4yTYkook3E3Yb-EOaio2O6FBcvzIXlVVC4WOvNSaYcw,29881
290
+ camel/toolkits/semantic_scholar_toolkit.py,sha256=z7xF3lPtBVXbpYMBDX9eVeHKpTZAg5rKiDnB1bCkhvU,11472
283
291
  camel/toolkits/slack_toolkit.py,sha256=n8cn3kZIc27B-2KMTRK6Nsdan37SwMqBiBi1PMtuUvQ,10744
284
292
  camel/toolkits/stripe_toolkit.py,sha256=cQJlzu7qXSiClazgr-D3xRAcI_PK_csTT-xcwaTrHYc,9623
293
+ camel/toolkits/sympy_toolkit.py,sha256=1z9nSkEKVHZUJ2CTSnWRQ-8qeXVusaG6nVHsP9J5P0M,31237
285
294
  camel/toolkits/twitter_toolkit.py,sha256=a2OLSJSW2wY7pOwOApb1qchZPXzH22Rbgm9Yd7-7vrA,15826
286
295
  camel/toolkits/video_toolkit.py,sha256=n1P7F_cjdnC2jfUQQiJnhueRYA83GIjUF7HWIrES5xs,7089
287
296
  camel/toolkits/weather_toolkit.py,sha256=qHAMD56zqd5GWnEWiaA_0aBDwvgacdx0pAHScinY4GY,6965
288
- camel/toolkits/whatsapp_toolkit.py,sha256=H_83AFCIoBMvZUcfUvfRTIAjfR2DR79xP2J-rfQKtNo,6326
297
+ camel/toolkits/whatsapp_toolkit.py,sha256=iviyCanhaKIGUyyRwLv_eCGKwGgW_TNV6HumpM4ktFc,5651
289
298
  camel/types/__init__.py,sha256=_NYwmy412tubPYJon26fS9itGnylP48NLFKgwyMiJNs,2251
290
- camel/types/enums.py,sha256=0N21PetU0A-EwO5eiAF8Q4QXibsFYcjGElnWBXNNn8E,28856
299
+ camel/types/enums.py,sha256=wGDxFA92hXdWKjjlLlPa-CfFMirKzFbBTWptuBlft48,33875
291
300
  camel/types/openai_types.py,sha256=7Vlci1uRbpSS81B958Z8ADnkzVyqxV7O5H8hv0i-tdo,2328
292
- camel/types/unified_model_type.py,sha256=FT-abBHFTRN6qMRSVa_Lqljoc7JmyyMs8PeJfQUOSag,4119
293
- camel/utils/__init__.py,sha256=0K8HKzUlOStBjo9Mt3tgFbv6YINMIiF0b7MSWRyZ-NA,2471
301
+ camel/types/unified_model_type.py,sha256=GP5GYtA3RfvLsqnk1c4UcOaRKMFhjDgZrLr0ln6JFw8,4253
302
+ camel/utils/__init__.py,sha256=NdTkomQikNGn_ImwT-I__IwGmDEFjn1wGojFq5cqLlQ,2633
294
303
  camel/utils/async_func.py,sha256=4esRhhGrvfm-iJRloUbU-sYWyHp_mt0bBBXpwyCv6vc,1556
295
- camel/utils/commons.py,sha256=Ph5O_vihyH85BfQ-A4Z2kc0uO45QXtwQr0qbfpbK6Rg,21934
304
+ camel/utils/commons.py,sha256=eX14Wj8zmVqEXuWXydv9-FXkzAli_F2PQWi96tE7oEY,28279
296
305
  camel/utils/constants.py,sha256=MQD3bgLIq_NATp0D1iFkrwfkCwVX-PAOSXheTkkEdkY,1410
306
+ camel/utils/deduplication.py,sha256=hCc8KVC-oThCjDzzwy1f_kYF5UvQExV1t5IY1ZgpunE,7755
297
307
  camel/utils/response_format.py,sha256=9KrbwtOM9cA3LSjTgLiK7oKy-53_uMh1cvpyNwwJpng,2419
298
- camel/utils/token_counting.py,sha256=jJSK_kJKovuDESP2WuYVGHWS7Q-xTMIQsLK0AMS_Nw8,15345
299
- camel_ai-0.2.19.dist-info/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
300
- camel_ai-0.2.19.dist-info/METADATA,sha256=xAY3OB9Ac86gQYQoqlAsOTXKpRyNzl0myIOMpTv3iSE,35632
301
- camel_ai-0.2.19.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
302
- camel_ai-0.2.19.dist-info/RECORD,,
308
+ camel/utils/token_counting.py,sha256=n5JsWuG6fiuMUgpsKUPMF1NKQJLle9ad1I88_aS4cMM,14018
309
+ camel_ai-0.2.20.dist-info/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
310
+ camel_ai-0.2.20.dist-info/METADATA,sha256=4PNWDrX5VXM3WcMPzezM8jAKxPtaxEqcMhC-4wnnnu4,36551
311
+ camel_ai-0.2.20.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
312
+ camel_ai-0.2.20.dist-info/RECORD,,
File without changes