camel-ai 0.2.59__py3-none-any.whl → 0.2.61__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 (55) hide show
  1. camel/__init__.py +1 -1
  2. camel/agents/chat_agent.py +158 -7
  3. camel/configs/anthropic_config.py +6 -5
  4. camel/configs/cohere_config.py +1 -1
  5. camel/configs/mistral_config.py +1 -1
  6. camel/configs/openai_config.py +3 -0
  7. camel/configs/reka_config.py +1 -1
  8. camel/configs/samba_config.py +2 -2
  9. camel/datagen/cot_datagen.py +29 -34
  10. camel/datagen/evol_instruct/scorer.py +22 -23
  11. camel/datagen/evol_instruct/templates.py +46 -46
  12. camel/datasets/static_dataset.py +144 -0
  13. camel/embeddings/jina_embedding.py +8 -1
  14. camel/embeddings/sentence_transformers_embeddings.py +2 -2
  15. camel/embeddings/vlm_embedding.py +9 -2
  16. camel/loaders/__init__.py +5 -2
  17. camel/loaders/chunkr_reader.py +117 -91
  18. camel/loaders/mistral_reader.py +148 -0
  19. camel/memories/blocks/chat_history_block.py +1 -2
  20. camel/memories/records.py +3 -0
  21. camel/messages/base.py +15 -3
  22. camel/models/azure_openai_model.py +1 -0
  23. camel/models/model_factory.py +2 -2
  24. camel/models/model_manager.py +7 -3
  25. camel/retrievers/bm25_retriever.py +1 -2
  26. camel/retrievers/hybrid_retrival.py +2 -2
  27. camel/societies/workforce/workforce.py +65 -24
  28. camel/storages/__init__.py +2 -0
  29. camel/storages/vectordb_storages/__init__.py +2 -0
  30. camel/storages/vectordb_storages/faiss.py +712 -0
  31. camel/storages/vectordb_storages/oceanbase.py +1 -2
  32. camel/toolkits/__init__.py +2 -0
  33. camel/toolkits/async_browser_toolkit.py +80 -524
  34. camel/toolkits/bohrium_toolkit.py +318 -0
  35. camel/toolkits/browser_toolkit.py +221 -541
  36. camel/toolkits/browser_toolkit_commons.py +568 -0
  37. camel/toolkits/dalle_toolkit.py +4 -0
  38. camel/toolkits/excel_toolkit.py +8 -2
  39. camel/toolkits/file_write_toolkit.py +76 -29
  40. camel/toolkits/github_toolkit.py +43 -25
  41. camel/toolkits/image_analysis_toolkit.py +3 -0
  42. camel/toolkits/jina_reranker_toolkit.py +194 -77
  43. camel/toolkits/mcp_toolkit.py +134 -16
  44. camel/toolkits/page_script.js +40 -28
  45. camel/toolkits/twitter_toolkit.py +6 -1
  46. camel/toolkits/video_analysis_toolkit.py +3 -0
  47. camel/toolkits/video_download_toolkit.py +3 -0
  48. camel/toolkits/wolfram_alpha_toolkit.py +51 -23
  49. camel/types/enums.py +27 -6
  50. camel/utils/__init__.py +2 -0
  51. camel/utils/commons.py +27 -0
  52. {camel_ai-0.2.59.dist-info → camel_ai-0.2.61.dist-info}/METADATA +17 -9
  53. {camel_ai-0.2.59.dist-info → camel_ai-0.2.61.dist-info}/RECORD +55 -51
  54. {camel_ai-0.2.59.dist-info → camel_ai-0.2.61.dist-info}/WHEEL +0 -0
  55. {camel_ai-0.2.59.dist-info → camel_ai-0.2.61.dist-info}/licenses/LICENSE +0 -0
@@ -191,35 +191,47 @@ var MultimodalWebSurfer = MultimodalWebSurfer || (function() {
191
191
  labelElements(getInteractiveElements());
192
192
  let elements = document.querySelectorAll("[__elementId]");
193
193
  let results = {};
194
- for (let i=0; i<elements.length; i++) {
195
- let key = elements[i].getAttribute("__elementId");
196
- let rects = elements[i].getClientRects();
197
- let ariaRole = getApproximateAriaRole(elements[i]);
198
- let ariaName = getApproximateAriaName(elements[i]);
199
- let vScrollable = elements[i].scrollHeight - elements[i].clientHeight >= 1;
200
-
201
- let record = {
202
- "tag_name": ariaRole[1],
203
- "role": ariaRole[0],
204
- "aria-name": ariaName,
205
- "v-scrollable": vScrollable,
206
- "rects": []
207
- };
208
-
209
- for (const rect of rects) {
210
- let x = rect.left + rect.width/2;
211
- let y = rect.top + rect.height/2;
212
- if (isTopmost(elements[i], x, y)) {
213
- record["rects"].push(JSON.parse(JSON.stringify(rect)));
214
- }
215
- }
216
-
217
- if (record["rects"].length > 0) {
218
- results[key] = record;
219
- }
194
+ let scale = window.devicePixelRatio || 1;
195
+
196
+ for (let i = 0; i < elements.length; i++) {
197
+ let key = elements[i].getAttribute("__elementId");
198
+ let rects = elements[i].getClientRects();
199
+ let ariaRole = getApproximateAriaRole(elements[i]);
200
+ let ariaName = getApproximateAriaName(elements[i]);
201
+ let vScrollable = elements[i].scrollHeight - elements[i].clientHeight >= 1;
202
+
203
+ let record = {
204
+ "tag_name": ariaRole[1],
205
+ "role": ariaRole[0],
206
+ "aria-name": ariaName,
207
+ "v-scrollable": vScrollable,
208
+ "rects": []
209
+ };
210
+
211
+ for (const rect of rects) {
212
+ let x = rect.left + rect.width / 2;
213
+ let y = rect.top + rect.height / 2;
214
+ if (isTopmost(elements[i], x, y)) {
215
+ record["rects"].push({
216
+ x: rect.x * scale,
217
+ y: rect.y * scale,
218
+ width: rect.width * scale,
219
+ height: rect.height * scale,
220
+ top: rect.top * scale,
221
+ left: rect.left * scale,
222
+ right: rect.right * scale,
223
+ bottom: rect.bottom * scale
224
+ });
225
+ }
226
+ }
227
+
228
+ if (record["rects"].length > 0) {
229
+ results[key] = record;
230
+ }
220
231
  }
232
+
221
233
  return results;
222
- };
234
+ };
223
235
 
224
236
  let getVisualViewport = function() {
225
237
  let vv = window.visualViewport;
@@ -373,4 +385,4 @@ var MultimodalWebSurfer = MultimodalWebSurfer || (function() {
373
385
  getFocusedElementId: getFocusedElementId,
374
386
  getPageMetadata: getPageMetadata,
375
387
  };
376
- })();
388
+ })();
@@ -18,7 +18,6 @@ from http.client import responses
18
18
  from typing import Any, Dict, List, Optional, Union
19
19
 
20
20
  import requests
21
- from requests_oauthlib import OAuth1
22
21
 
23
22
  from camel.logger import get_logger
24
23
  from camel.toolkits import FunctionTool
@@ -76,6 +75,8 @@ def create_tweet(
76
75
  Reference:
77
76
  https://developer.x.com/en/docs/x-api/tweets/manage-tweets/api-reference/post-tweets
78
77
  """
78
+ from requests_oauthlib import OAuth1
79
+
79
80
  auth = OAuth1(
80
81
  os.getenv("TWITTER_CONSUMER_KEY"),
81
82
  os.getenv("TWITTER_CONSUMER_SECRET"),
@@ -160,6 +161,8 @@ def delete_tweet(tweet_id: str) -> str:
160
161
  Reference:
161
162
  https://developer.x.com/en/docs/x-api/tweets/manage-tweets/api-reference/delete-tweets-id
162
163
  """
164
+ from requests_oauthlib import OAuth1
165
+
163
166
  auth = OAuth1(
164
167
  os.getenv("TWITTER_CONSUMER_KEY"),
165
168
  os.getenv("TWITTER_CONSUMER_SECRET"),
@@ -263,6 +266,8 @@ def _get_user_info(username: Optional[str] = None) -> str:
263
266
  Returns:
264
267
  str: A formatted report of the user's Twitter profile information.
265
268
  """
269
+ from requests_oauthlib import OAuth1
270
+
266
271
  oauth = OAuth1(
267
272
  os.getenv("TWITTER_CONSUMER_KEY"),
268
273
  os.getenv("TWITTER_CONSUMER_SECRET"),
@@ -12,6 +12,9 @@
12
12
  # limitations under the License.
13
13
  # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
 
15
+ # Enables postponed evaluation of annotations (for string-based type hints)
16
+ from __future__ import annotations
17
+
15
18
  import io
16
19
  import os
17
20
  import tempfile
@@ -12,6 +12,9 @@
12
12
  # limitations under the License.
13
13
  # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
 
15
+ # Enables postponed evaluation of annotations (for string-based type hints)
16
+ from __future__ import annotations
17
+
15
18
  import io
16
19
  import tempfile
17
20
  from pathlib import Path
@@ -13,7 +13,7 @@
13
13
  # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import os
15
15
  import xml.etree.ElementTree as ET
16
- from typing import Any, Dict, List, Union
16
+ from typing import Any, Dict, List
17
17
 
18
18
  import requests
19
19
 
@@ -37,21 +37,14 @@ class WolframAlphaToolkit(BaseToolkit):
37
37
  ]
38
38
  )
39
39
  @dependencies_required("wolframalpha")
40
- def query_wolfram_alpha(
41
- self, query: str, is_detailed: bool = False
42
- ) -> Union[str, Dict[str, Any]]:
43
- r"""Queries Wolfram|Alpha and returns the result.
40
+ def query_wolfram_alpha(self, query: str) -> str:
41
+ r"""Queries Wolfram|Alpha and returns the result as a simple answer.
44
42
 
45
43
  Args:
46
44
  query (str): The query to send to Wolfram Alpha.
47
- is_detailed (bool): Whether to include additional details
48
- including step by step information in the result.
49
- (default: :obj:`False`)
50
45
 
51
46
  Returns:
52
- Union[str, Dict[str, Any]]: The result from Wolfram Alpha.
53
- Returns a string if `is_detailed` is False, otherwise returns
54
- a dictionary with detailed information.
47
+ str: The result from Wolfram Alpha as a simple answer.
55
48
  """
56
49
  import wolframalpha
57
50
 
@@ -64,24 +57,54 @@ class WolframAlphaToolkit(BaseToolkit):
64
57
  except Exception as e:
65
58
  return f"Wolfram Alpha wasn't able to answer it. Error: {e}"
66
59
 
67
- pased_result = self._parse_wolfram_result(res)
60
+ parsed_result = self._parse_wolfram_result(res)
61
+ return parsed_result["final_answer"]
68
62
 
69
- if is_detailed:
70
- step_info = self._get_wolframalpha_step_by_step_solution(
71
- WOLFRAMALPHA_APP_ID, query
72
- )
73
- pased_result["steps"] = step_info
74
- return pased_result
63
+ @api_keys_required(
64
+ [
65
+ (None, "WOLFRAMALPHA_APP_ID"),
66
+ ]
67
+ )
68
+ @dependencies_required("wolframalpha")
69
+ def query_wolfram_alpha_step_by_step(self, query: str) -> Dict[str, Any]:
70
+ r"""Queries Wolfram|Alpha and returns detailed results with
71
+ step-by-step solution.
75
72
 
76
- return pased_result["final_answer"]
73
+ Args:
74
+ query (str): The query to send to Wolfram Alpha.
75
+
76
+ Returns:
77
+ Dict[str, Any]: A dictionary with detailed information including
78
+ step-by-step solution.
79
+ """
80
+ import wolframalpha
81
+
82
+ WOLFRAMALPHA_APP_ID = os.environ.get("WOLFRAMALPHA_APP_ID", "")
83
+
84
+ try:
85
+ client = wolframalpha.Client(WOLFRAMALPHA_APP_ID)
86
+ res = client.query(query)
87
+
88
+ except Exception as e:
89
+ return {
90
+ "error": f"Wolfram Alpha wasn't able to answer it. Error: {e}"
91
+ }
92
+
93
+ parsed_result = self._parse_wolfram_result(res)
94
+ step_info = self._get_wolframalpha_step_by_step_solution(
95
+ WOLFRAMALPHA_APP_ID, query
96
+ )
97
+ parsed_result["steps"] = step_info
98
+ return parsed_result
77
99
 
78
100
  @api_keys_required(
79
101
  [
80
102
  (None, "WOLFRAMALPHA_APP_ID"),
81
103
  ]
82
104
  )
83
- def query_wolfram_llm(self, query: str) -> str:
84
- r"""Queries Wolfram|Alpha LLM API and returns the result.
105
+ def query_wolfram_alpha_llm(self, query: str) -> str:
106
+ r"""Sends a query to the Wolfram|Alpha API optimized for language
107
+ model usage.
85
108
 
86
109
  Args:
87
110
  query (str): The query to send to Wolfram Alpha LLM.
@@ -94,7 +117,11 @@ class WolframAlphaToolkit(BaseToolkit):
94
117
 
95
118
  try:
96
119
  url = "https://www.wolframalpha.com/api/v1/llm-api"
97
- params = {"input": query, "appid": WOLFRAMALPHA_APP_ID}
120
+ params = {
121
+ "input": query,
122
+ "appid": WOLFRAMALPHA_APP_ID,
123
+ "format": "plaintext",
124
+ }
98
125
 
99
126
  response = requests.get(url, params=params)
100
127
  response.raise_for_status()
@@ -233,5 +260,6 @@ class WolframAlphaToolkit(BaseToolkit):
233
260
  """
234
261
  return [
235
262
  FunctionTool(self.query_wolfram_alpha),
236
- FunctionTool(self.query_wolfram_llm),
263
+ FunctionTool(self.query_wolfram_alpha_step_by_step),
264
+ FunctionTool(self.query_wolfram_alpha_llm),
237
265
  ]
camel/types/enums.py CHANGED
@@ -56,6 +56,8 @@ class ModelType(UnifiedModelType, Enum):
56
56
  AWS_LLAMA_3_3_70B_INSTRUCT = "us.meta.llama3-3-70b-instruct-v1:0"
57
57
  AWS_LLAMA_3_2_90B_INSTRUCT = "us.meta.llama3-2-90b-instruct-v1:0"
58
58
  AWS_LLAMA_3_2_11B_INSTRUCT = "us.meta.llama3-2-11b-instruct-v1:0"
59
+ AWS_CLAUDE_SONNET_4 = "anthropic.claude-sonnet-4-20250514-v1:0"
60
+ AWS_CLAUDE_OPUS_4 = "anthropic.claude-opus-4-20250514-v1:0"
59
61
 
60
62
  GLM_4 = "glm-4"
61
63
  GLM_4V = "glm-4v"
@@ -145,13 +147,15 @@ class ModelType(UnifiedModelType, Enum):
145
147
  CLAUDE_2_0 = "claude-2.0"
146
148
  CLAUDE_INSTANT_1_2 = "claude-instant-1.2"
147
149
 
148
- # Claude3 models
150
+ # Claude models
149
151
  CLAUDE_3_OPUS = "claude-3-opus-latest"
150
152
  CLAUDE_3_SONNET = "claude-3-sonnet-20240229"
151
153
  CLAUDE_3_HAIKU = "claude-3-haiku-20240307"
152
154
  CLAUDE_3_5_SONNET = "claude-3-5-sonnet-latest"
153
155
  CLAUDE_3_5_HAIKU = "claude-3-5-haiku-latest"
154
156
  CLAUDE_3_7_SONNET = "claude-3-7-sonnet-latest"
157
+ CLAUDE_SONNET_4 = "claude-sonnet-4-20250514"
158
+ CLAUDE_OPUS_4 = "claude-opus-4-20250514"
155
159
 
156
160
  # Netmind models
157
161
  NETMIND_LLAMA_4_MAVERICK_17B_128E_INSTRUCT = (
@@ -180,10 +184,13 @@ class ModelType(UnifiedModelType, Enum):
180
184
  NVIDIA_LLAMA3_3_70B_INSTRUCT = "meta/llama-3.3-70b-instruct"
181
185
 
182
186
  # Gemini models
187
+ GEMINI_2_5_FLASH_PREVIEW = "gemini-2.5-flash-preview-04-17"
183
188
  GEMINI_2_5_PRO_PREVIEW = "gemini-2.5-pro-preview-05-06"
184
- GEMINI_2_0_FLASH = "gemini-2.0-flash-exp"
189
+ GEMINI_2_0_FLASH = "gemini-2.0-flash"
190
+ GEMINI_2_0_FLASH_EXP = "gemini-2.0-flash-exp"
185
191
  GEMINI_2_0_FLASH_THINKING = "gemini-2.0-flash-thinking-exp"
186
192
  GEMINI_2_0_PRO_EXP = "gemini-2.0-pro-exp-02-05"
193
+ GEMINI_2_0_FLASH_LITE = "gemini-2.0-flash-lite"
187
194
  GEMINI_2_0_FLASH_LITE_PREVIEW = "gemini-2.0-flash-lite-preview-02-05"
188
195
  GEMINI_1_5_FLASH = "gemini-1.5-flash"
189
196
  GEMINI_1_5_PRO = "gemini-1.5-pro"
@@ -466,6 +473,8 @@ class ModelType(UnifiedModelType, Enum):
466
473
  ModelType.AWS_LLAMA_3_3_70B_INSTRUCT,
467
474
  ModelType.AWS_LLAMA_3_2_90B_INSTRUCT,
468
475
  ModelType.AWS_LLAMA_3_2_11B_INSTRUCT,
476
+ ModelType.AWS_CLAUDE_SONNET_4,
477
+ ModelType.AWS_CLAUDE_OPUS_4,
469
478
  }
470
479
 
471
480
  @property
@@ -527,6 +536,8 @@ class ModelType(UnifiedModelType, Enum):
527
536
  ModelType.CLAUDE_3_5_SONNET,
528
537
  ModelType.CLAUDE_3_5_HAIKU,
529
538
  ModelType.CLAUDE_3_7_SONNET,
539
+ ModelType.CLAUDE_SONNET_4,
540
+ ModelType.CLAUDE_OPUS_4,
530
541
  }
531
542
 
532
543
  @property
@@ -629,13 +640,16 @@ class ModelType(UnifiedModelType, Enum):
629
640
  bool: Whether this type of models is gemini.
630
641
  """
631
642
  return self in {
643
+ ModelType.GEMINI_2_5_FLASH_PREVIEW,
632
644
  ModelType.GEMINI_2_5_PRO_PREVIEW,
633
645
  ModelType.GEMINI_2_0_FLASH,
634
- ModelType.GEMINI_1_5_FLASH,
635
- ModelType.GEMINI_1_5_PRO,
646
+ ModelType.GEMINI_2_0_FLASH_EXP,
636
647
  ModelType.GEMINI_2_0_FLASH_THINKING,
637
648
  ModelType.GEMINI_2_0_PRO_EXP,
649
+ ModelType.GEMINI_2_0_FLASH_LITE,
638
650
  ModelType.GEMINI_2_0_FLASH_LITE_PREVIEW,
651
+ ModelType.GEMINI_1_5_FLASH,
652
+ ModelType.GEMINI_1_5_PRO,
639
653
  }
640
654
 
641
655
  @property
@@ -1156,11 +1170,15 @@ class ModelType(UnifiedModelType, Enum):
1156
1170
  ModelType.CLAUDE_3_5_SONNET,
1157
1171
  ModelType.CLAUDE_3_5_HAIKU,
1158
1172
  ModelType.CLAUDE_3_7_SONNET,
1173
+ ModelType.CLAUDE_SONNET_4,
1174
+ ModelType.CLAUDE_OPUS_4,
1159
1175
  ModelType.YI_MEDIUM_200K,
1160
1176
  ModelType.AWS_CLAUDE_3_5_SONNET,
1161
1177
  ModelType.AWS_CLAUDE_3_HAIKU,
1162
1178
  ModelType.AWS_CLAUDE_3_SONNET,
1163
1179
  ModelType.AWS_CLAUDE_3_7_SONNET,
1180
+ ModelType.AWS_CLAUDE_SONNET_4,
1181
+ ModelType.AWS_CLAUDE_OPUS_4,
1164
1182
  ModelType.O4_MINI,
1165
1183
  ModelType.O3,
1166
1184
  }:
@@ -1181,12 +1199,15 @@ class ModelType(UnifiedModelType, Enum):
1181
1199
  }:
1182
1200
  return 512_000
1183
1201
  elif self in {
1202
+ ModelType.GEMINI_2_5_FLASH_PREVIEW,
1184
1203
  ModelType.GEMINI_2_5_PRO_PREVIEW,
1185
1204
  ModelType.GEMINI_2_0_FLASH,
1186
- ModelType.GEMINI_1_5_FLASH,
1187
- ModelType.GEMINI_1_5_PRO,
1205
+ ModelType.GEMINI_2_0_FLASH_EXP,
1188
1206
  ModelType.GEMINI_2_0_FLASH_THINKING,
1207
+ ModelType.GEMINI_2_0_FLASH_LITE,
1189
1208
  ModelType.GEMINI_2_0_FLASH_LITE_PREVIEW,
1209
+ ModelType.GEMINI_1_5_FLASH,
1210
+ ModelType.GEMINI_1_5_PRO,
1190
1211
  ModelType.GEMINI_2_0_PRO_EXP, # Not given in doc, assume the same
1191
1212
  ModelType.GLM_4_LONG,
1192
1213
  ModelType.TOGETHER_LLAMA_4_MAVERICK,
camel/utils/__init__.py CHANGED
@@ -35,6 +35,7 @@ from .commons import (
35
35
  json_to_function_code,
36
36
  print_text_animated,
37
37
  retry_on_error,
38
+ run_async,
38
39
  text_extract_from_web,
39
40
  to_pascal,
40
41
  track_agent,
@@ -95,4 +96,5 @@ __all__ = [
95
96
  "model_from_json_schema",
96
97
  "sanitize_filename",
97
98
  "browser_toolkit_save_auth_cookie",
99
+ "run_async",
98
100
  ]
camel/utils/commons.py CHANGED
@@ -1103,3 +1103,30 @@ def browser_toolkit_save_auth_cookie(
1103
1103
  context.storage_state(path=cookie_json_path)
1104
1104
 
1105
1105
  browser.close() # Close the browser when finished
1106
+
1107
+
1108
+ def run_async(func: Callable[..., Any]) -> Callable[..., Any]:
1109
+ r"""Helper function to run async functions in synchronous context.
1110
+
1111
+ Args:
1112
+ func (Callable[..., Any]): The async function to wrap.
1113
+
1114
+ Returns:
1115
+ Callable[..., Any]: A synchronous wrapper for the async function.
1116
+ """
1117
+
1118
+ @wraps(func)
1119
+ def wrapper(*args: Any, **kwargs: Any) -> Any:
1120
+ try:
1121
+ loop = asyncio.get_event_loop()
1122
+ except RuntimeError:
1123
+ loop = asyncio.new_event_loop()
1124
+ asyncio.set_event_loop(loop)
1125
+
1126
+ if loop.is_closed():
1127
+ loop = asyncio.new_event_loop()
1128
+ asyncio.set_event_loop(loop)
1129
+
1130
+ return loop.run_until_complete(func(*args, **kwargs))
1131
+
1132
+ return wrapper
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.59
3
+ Version: 0.2.61
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
@@ -16,6 +16,7 @@ Requires-Dist: httpx<1.0.0dev,>=0.28.0
16
16
  Requires-Dist: jsonschema<5,>=4
17
17
  Requires-Dist: mcp>=1.3.0
18
18
  Requires-Dist: openai<2,>=1.68.0
19
+ Requires-Dist: pillow<11.0.0,>=10.1.0
19
20
  Requires-Dist: psutil<6,>=5.9.8
20
21
  Requires-Dist: pydantic>=2.10.6
21
22
  Requires-Dist: tiktoken<0.8,>=0.7.0
@@ -31,6 +32,7 @@ Requires-Dist: arxiv<3,>=2.1.3; extra == 'all'
31
32
  Requires-Dist: azure-storage-blob<13,>=12.21.0; extra == 'all'
32
33
  Requires-Dist: beautifulsoup4<5,>=4; extra == 'all'
33
34
  Requires-Dist: botocore<2,>=1.35.3; extra == 'all'
35
+ Requires-Dist: chunkr-ai>=0.0.50; extra == 'all'
34
36
  Requires-Dist: cohere<6,>=5.11.0; extra == 'all'
35
37
  Requires-Dist: crawl4ai>=0.3.745; extra == 'all'
36
38
  Requires-Dist: dappier<0.4,>=0.3.3; extra == 'all'
@@ -46,6 +48,7 @@ Requires-Dist: docx>=0.2.4; extra == 'all'
46
48
  Requires-Dist: duckduckgo-search<7,>=6.3.5; extra == 'all'
47
49
  Requires-Dist: e2b-code-interpreter<2,>=1.0.3; extra == 'all'
48
50
  Requires-Dist: exa-py<2,>=1.10.0; extra == 'all'
51
+ Requires-Dist: faiss-cpu<2,>=1.7.2; extra == 'all'
49
52
  Requires-Dist: fastapi>=0.115.11; extra == 'all'
50
53
  Requires-Dist: ffmpeg-python<0.3,>=0.2.0; extra == 'all'
51
54
  Requires-Dist: firecrawl-py<2,>=1.0.0; extra == 'all'
@@ -77,14 +80,13 @@ Requires-Dist: neo4j<6,>=5.18.0; extra == 'all'
77
80
  Requires-Dist: networkx<4,>=3.4.2; extra == 'all'
78
81
  Requires-Dist: newspaper3k<0.3,>=0.2.8; extra == 'all'
79
82
  Requires-Dist: notion-client<3,>=2.2.1; extra == 'all'
80
- Requires-Dist: numpy~=1.26; extra == 'all'
83
+ Requires-Dist: numpy<=2.2,>=1.2; extra == 'all'
81
84
  Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == 'all'
82
85
  Requires-Dist: opencv-python<5,>=4; extra == 'all'
83
86
  Requires-Dist: openpyxl>=3.1.5; extra == 'all'
84
87
  Requires-Dist: outlines<0.2,>=0.1.7; extra == 'all'
85
88
  Requires-Dist: pandas<2,>=1.5.3; extra == 'all'
86
89
  Requires-Dist: pandasai<3,>=2.3.0; extra == 'all'
87
- Requires-Dist: pillow<11.0.0,>=10.1.0; extra == 'all'
88
90
  Requires-Dist: playwright>=1.50.0; extra == 'all'
89
91
  Requires-Dist: prance<24,>=23.6.21.0; extra == 'all'
90
92
  Requires-Dist: praw<8,>=7.7.1; extra == 'all'
@@ -92,6 +94,7 @@ Requires-Dist: pre-commit<4,>=3; extra == 'all'
92
94
  Requires-Dist: pyautogui<0.10,>=0.9.54; extra == 'all'
93
95
  Requires-Dist: pydub<0.26,>=0.25.1; extra == 'all'
94
96
  Requires-Dist: pygithub<3,>=2.6.0; extra == 'all'
97
+ Requires-Dist: pylatex>=1.4.2; extra == 'all'
95
98
  Requires-Dist: pymilvus<3,>=2.4.0; extra == 'all'
96
99
  Requires-Dist: pymupdf<2,>=1.22.5; extra == 'all'
97
100
  Requires-Dist: pyobvector>=0.1.18; extra == 'all'
@@ -150,7 +153,7 @@ Requires-Dist: datacommons-pandas<0.0.4,>=0.0.3; extra == 'data-tools'
150
153
  Requires-Dist: datacommons<2,>=1.4.3; extra == 'data-tools'
151
154
  Requires-Dist: math-verify<0.8,>=0.7.0; extra == 'data-tools'
152
155
  Requires-Dist: networkx<4,>=3.4.2; extra == 'data-tools'
153
- Requires-Dist: numpy~=1.26; extra == 'data-tools'
156
+ Requires-Dist: numpy<=2.2,>=1.2; extra == 'data-tools'
154
157
  Requires-Dist: pandas<2,>=1.5.3; extra == 'data-tools'
155
158
  Requires-Dist: rouge<2,>=1.0.1; extra == 'data-tools'
156
159
  Requires-Dist: stripe<12,>=11.3.0; extra == 'data-tools'
@@ -193,16 +196,18 @@ Requires-Dist: sphinx<8,>=7; extra == 'docs'
193
196
  Requires-Dist: sphinxext-rediraffe<0.3,>=0.2.7; extra == 'docs'
194
197
  Provides-Extra: document-tools
195
198
  Requires-Dist: beautifulsoup4<5,>=4; extra == 'document-tools'
199
+ Requires-Dist: chunkr-ai>=0.0.50; extra == 'document-tools'
196
200
  Requires-Dist: crawl4ai>=0.3.745; extra == 'document-tools'
197
201
  Requires-Dist: docx2txt<0.9,>=0.8; extra == 'document-tools'
198
202
  Requires-Dist: docx>=0.2.4; extra == 'document-tools'
199
203
  Requires-Dist: fpdf>=1.7.2; extra == 'document-tools'
200
204
  Requires-Dist: markitdown==0.1.1; extra == 'document-tools'
201
- Requires-Dist: numpy~=1.26; extra == 'document-tools'
205
+ Requires-Dist: numpy<=2.2,>=1.2; extra == 'document-tools'
202
206
  Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == 'document-tools'
203
207
  Requires-Dist: openpyxl>=3.1.5; extra == 'document-tools'
204
208
  Requires-Dist: pandasai<3,>=2.3.0; extra == 'document-tools'
205
209
  Requires-Dist: prance<24,>=23.6.21.0; extra == 'document-tools'
210
+ Requires-Dist: pylatex>=1.4.2; extra == 'document-tools'
206
211
  Requires-Dist: pymupdf<2,>=1.22.5; extra == 'document-tools'
207
212
  Requires-Dist: tabulate>=0.9.0; extra == 'document-tools'
208
213
  Requires-Dist: unstructured==0.16.20; extra == 'document-tools'
@@ -219,7 +224,6 @@ Requires-Dist: transformers<5,>=4; extra == 'huggingface'
219
224
  Provides-Extra: media-tools
220
225
  Requires-Dist: ffmpeg-python<0.3,>=0.2.0; extra == 'media-tools'
221
226
  Requires-Dist: imageio[pyav]<3,>=2.34.2; extra == 'media-tools'
222
- Requires-Dist: pillow<11.0.0,>=10.1.0; extra == 'media-tools'
223
227
  Requires-Dist: pydub<0.26,>=0.25.1; extra == 'media-tools'
224
228
  Requires-Dist: scenedetect>=0.6.5.2; extra == 'media-tools'
225
229
  Requires-Dist: yt-dlp<2025,>=2024.11.4; extra == 'media-tools'
@@ -236,6 +240,7 @@ Requires-Dist: aci-sdk>=1.0.0b1; extra == 'owl'
236
240
  Requires-Dist: anthropic<0.50.0,>=0.47.0; extra == 'owl'
237
241
  Requires-Dist: beautifulsoup4<5,>=4; extra == 'owl'
238
242
  Requires-Dist: chunkr-ai>=0.0.41; extra == 'owl'
243
+ Requires-Dist: chunkr-ai>=0.0.50; extra == 'owl'
239
244
  Requires-Dist: crawl4ai>=0.3.745; extra == 'owl'
240
245
  Requires-Dist: datasets<4,>=3; extra == 'owl'
241
246
  Requires-Dist: docx2txt<0.9,>=0.8; extra == 'owl'
@@ -249,18 +254,18 @@ Requires-Dist: imageio[pyav]<3,>=2.34.2; extra == 'owl'
249
254
  Requires-Dist: mcp-server-fetch==2025.1.17; extra == 'owl'
250
255
  Requires-Dist: mcp-simple-arxiv==0.2.2; extra == 'owl'
251
256
  Requires-Dist: newspaper3k<0.3,>=0.2.8; extra == 'owl'
252
- Requires-Dist: numpy~=1.26; extra == 'owl'
257
+ Requires-Dist: numpy<=2.2,>=1.2; extra == 'owl'
253
258
  Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == 'owl'
254
259
  Requires-Dist: opencv-python<5,>=4; extra == 'owl'
255
260
  Requires-Dist: openpyxl>=3.1.5; extra == 'owl'
256
261
  Requires-Dist: outlines<0.2,>=0.1.7; extra == 'owl'
257
262
  Requires-Dist: pandas<2,>=1.5.3; extra == 'owl'
258
263
  Requires-Dist: pandasai<3,>=2.3.0; extra == 'owl'
259
- Requires-Dist: pillow<11.0.0,>=10.1.0; extra == 'owl'
260
264
  Requires-Dist: playwright>=1.50.0; extra == 'owl'
261
265
  Requires-Dist: prance<24,>=23.6.21.0; extra == 'owl'
262
266
  Requires-Dist: pyautogui<0.10,>=0.9.54; extra == 'owl'
263
267
  Requires-Dist: pydub<0.26,>=0.25.1; extra == 'owl'
268
+ Requires-Dist: pylatex>=1.4.2; extra == 'owl'
264
269
  Requires-Dist: pymupdf<2,>=1.22.5; extra == 'owl'
265
270
  Requires-Dist: python-dotenv<2,>=1.0.0; extra == 'owl'
266
271
  Requires-Dist: requests-oauthlib<2,>=1.3.1; extra == 'owl'
@@ -279,12 +284,14 @@ Requires-Dist: wikipedia<2,>=1; extra == 'owl'
279
284
  Requires-Dist: xls2xlsx>=0.2.0; extra == 'owl'
280
285
  Requires-Dist: yt-dlp<2025,>=2024.11.4; extra == 'owl'
281
286
  Provides-Extra: rag
287
+ Requires-Dist: chunkr-ai>=0.0.50; extra == 'rag'
282
288
  Requires-Dist: cohere<6,>=5.11.0; extra == 'rag'
283
289
  Requires-Dist: crawl4ai>=0.3.745; extra == 'rag'
290
+ Requires-Dist: faiss-cpu<2,>=1.7.2; extra == 'rag'
284
291
  Requires-Dist: google-genai>=1.13.0; extra == 'rag'
285
292
  Requires-Dist: nebula3-python==3.8.2; extra == 'rag'
286
293
  Requires-Dist: neo4j<6,>=5.18.0; extra == 'rag'
287
- Requires-Dist: numpy~=1.26; extra == 'rag'
294
+ Requires-Dist: numpy<=2.2,>=1.2; extra == 'rag'
288
295
  Requires-Dist: pandasai<3,>=2.3.0; extra == 'rag'
289
296
  Requires-Dist: pymilvus<3,>=2.4.0; extra == 'rag'
290
297
  Requires-Dist: pyobvector>=0.1.18; extra == 'rag'
@@ -300,6 +307,7 @@ Requires-Dist: scholarly[tor]==1.7.11; extra == 'research-tools'
300
307
  Provides-Extra: storage
301
308
  Requires-Dist: azure-storage-blob<13,>=12.21.0; extra == 'storage'
302
309
  Requires-Dist: botocore<2,>=1.35.3; extra == 'storage'
310
+ Requires-Dist: faiss-cpu<2,>=1.7.2; extra == 'storage'
303
311
  Requires-Dist: google-cloud-storage<3,>=2.18.0; extra == 'storage'
304
312
  Requires-Dist: mem0ai>=0.1.73; extra == 'storage'
305
313
  Requires-Dist: nebula3-python==3.8.2; extra == 'storage'