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

@@ -32,6 +32,23 @@ class SearchToolkit(BaseToolkit):
32
32
  search engines like Google, DuckDuckGo, Wikipedia and Wolfram Alpha, Brave.
33
33
  """
34
34
 
35
+ def __init__(
36
+ self,
37
+ timeout: Optional[float] = None,
38
+ number_of_result_pages: int = 10,
39
+ ):
40
+ r"""Initializes the RedditToolkit with the specified number of retries
41
+ and delay.
42
+
43
+ Args:
44
+ timeout (float): Timeout for API requests in seconds.
45
+ (default: :obj:`None`)
46
+ number_of_result_pages (int): The number of result pages to
47
+ retrieve. (default: :obj:`10`)
48
+ """
49
+ super().__init__(timeout=timeout)
50
+ self.number_of_result_pages = number_of_result_pages
51
+
35
52
  @dependencies_required("wikipedia")
36
53
  def search_wiki(self, entity: str) -> str:
37
54
  r"""Search the entity in WikiPedia and return the summary of the
@@ -89,8 +106,8 @@ class SearchToolkit(BaseToolkit):
89
106
  depth (Literal["standard", "deep"]): The depth of the search.
90
107
  "standard" for a straightforward search, "deep" for a more
91
108
  comprehensive search.
92
- output_type (Literal["searchResults", "sourcedAnswer",
93
- "structured"]): The type of output:
109
+ output_type (Literal["searchResults", "sourcedAnswer", "structured"]):
110
+ The type of output:
94
111
  - "searchResults" for raw search results,
95
112
  - "sourcedAnswer" for an answer with supporting sources,
96
113
  - "structured" for output based on a provided schema.
@@ -144,7 +161,7 @@ class SearchToolkit(BaseToolkit):
144
161
 
145
162
  @dependencies_required("duckduckgo_search")
146
163
  def search_duckduckgo(
147
- self, query: str, source: str = "text", max_results: int = 5
164
+ self, query: str, source: str = "text"
148
165
  ) -> List[Dict[str, Any]]:
149
166
  r"""Use DuckDuckGo search engine to search information for
150
167
  the given query.
@@ -157,7 +174,6 @@ class SearchToolkit(BaseToolkit):
157
174
  query (str): The query to be searched.
158
175
  source (str): The type of information to query (e.g., "text",
159
176
  "images", "videos"). Defaults to "text".
160
- max_results (int): Max number of results, defaults to `5`.
161
177
 
162
178
  Returns:
163
179
  List[Dict[str, Any]]: A list of dictionaries where each dictionary
@@ -171,7 +187,9 @@ class SearchToolkit(BaseToolkit):
171
187
 
172
188
  if source == "text":
173
189
  try:
174
- results = ddgs.text(keywords=query, max_results=max_results)
190
+ results = ddgs.text(
191
+ keywords=query, max_results=self.number_of_result_pages
192
+ )
175
193
  except RequestException as e:
176
194
  # Handle specific exceptions or general request exceptions
177
195
  responses.append({"error": f"duckduckgo search failed.{e}"})
@@ -189,7 +207,9 @@ class SearchToolkit(BaseToolkit):
189
207
 
190
208
  elif source == "images":
191
209
  try:
192
- results = ddgs.images(keywords=query, max_results=max_results)
210
+ results = ddgs.images(
211
+ keywords=query, max_results=self.number_of_result_pages
212
+ )
193
213
  except RequestException as e:
194
214
  # Handle specific exceptions or general request exceptions
195
215
  responses.append({"error": f"duckduckgo search failed.{e}"})
@@ -208,7 +228,9 @@ class SearchToolkit(BaseToolkit):
208
228
 
209
229
  elif source == "videos":
210
230
  try:
211
- results = ddgs.videos(keywords=query, max_results=max_results)
231
+ results = ddgs.videos(
232
+ keywords=query, max_results=self.number_of_result_pages
233
+ )
212
234
  except RequestException as e:
213
235
  # Handle specific exceptions or general request exceptions
214
236
  responses.append({"error": f"duckduckgo search failed.{e}"})
@@ -241,7 +263,6 @@ class SearchToolkit(BaseToolkit):
241
263
  country: str = "US",
242
264
  search_lang: str = "en",
243
265
  ui_lang: str = "en-US",
244
- count: int = 20,
245
266
  offset: int = 0,
246
267
  safesearch: str = "moderate",
247
268
  freshness: Optional[str] = None,
@@ -265,17 +286,18 @@ class SearchToolkit(BaseToolkit):
265
286
  The country string is limited to 2 character country codes of
266
287
  supported countries. For a list of supported values, see
267
288
  Country Codes. (default: :obj:`US `)
268
- search_lang (str): The search language preference. The 2 or more
269
- character language code for which search results are provided.
270
- For a list of possible values, see Language Codes.
289
+ search_lang (str): The search language preference.
290
+ Use ONLY these exact values, NOT standard ISO codes:
291
+ 'ar', 'eu', 'bn', 'bg', 'ca', 'zh-hans', 'zh-hant', 'hr',
292
+ 'cs', 'da', 'nl', 'en', 'en-gb', 'et', 'fi', 'fr', 'gl', 'de',
293
+ 'gu', 'he', 'hi', 'hu', 'is', 'it', 'jp', 'kn', 'ko', 'lv',
294
+ 'lt', 'ms', 'ml', 'mr', 'nb', 'pl', 'pt-br', 'pt-pt', 'pa',
295
+ 'ro', 'ru', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'te', 'th',
296
+ 'tr', 'uk', 'vi'.
271
297
  ui_lang (str): User interface language preferred in response.
272
- Usually of the format '<language_code>-<country_code>'. For
273
- more, see RFC 9110. For a list of supported values, see UI
274
- Language Codes.
275
- count (int): The number of search results returned in response.
276
- The maximum is 20. The actual number delivered may be less than
277
- requested. Combine this parameter with offset to paginate
278
- search results.
298
+ Format: '<language_code>-<country_code>'. Common examples:
299
+ 'en-US', 'en-GB', 'jp-JP', 'zh-hans-CN', 'zh-hant-TW',
300
+ 'de-DE', 'fr-FR', 'es-ES', 'pt-BR', 'ru-RU', 'ko-KR'.
279
301
  offset (int): The zero based offset that indicates number of search
280
302
  results per page (count) to skip before returning the result.
281
303
  The maximum is 9. The actual number delivered may be less than
@@ -363,7 +385,7 @@ class SearchToolkit(BaseToolkit):
363
385
  "country": country,
364
386
  "search_lang": search_lang,
365
387
  "ui_lang": ui_lang,
366
- "count": count,
388
+ "count": self.number_of_result_pages,
367
389
  "offset": offset,
368
390
  "safesearch": safesearch,
369
391
  "freshness": freshness,
@@ -375,10 +397,36 @@ class SearchToolkit(BaseToolkit):
375
397
  "extra_snippets": extra_snippets,
376
398
  "summary": summary,
377
399
  }
400
+ params = {k: v for k, v in params.items() if v is not None}
378
401
 
379
402
  response = requests.get(url, headers=headers, params=params)
380
- data = response.json()["web"]
381
- return data
403
+ try:
404
+ response.raise_for_status()
405
+ except requests.HTTPError as e:
406
+ raise RuntimeError(
407
+ f"Brave API HTTP error: {e}, body={response.text!r}"
408
+ )
409
+
410
+ json_data = response.json()
411
+ # Check if response has search results
412
+ content_keys = [
413
+ 'web',
414
+ 'news',
415
+ 'videos',
416
+ 'images',
417
+ 'locations',
418
+ 'discussions',
419
+ 'faq',
420
+ 'infobox',
421
+ ]
422
+ has_results = any(key in json_data for key in content_keys)
423
+
424
+ if not has_results:
425
+ # Return empty results structure if no content found
426
+ json_data['web'] = {'results': []}
427
+ json_data['message'] = 'No search results found for the query'
428
+
429
+ return json_data
382
430
 
383
431
  @api_keys_required(
384
432
  [
@@ -386,14 +434,11 @@ class SearchToolkit(BaseToolkit):
386
434
  (None, 'SEARCH_ENGINE_ID'),
387
435
  ]
388
436
  )
389
- def search_google(
390
- self, query: str, num_result_pages: int = 5
391
- ) -> List[Dict[str, Any]]:
437
+ def search_google(self, query: str) -> List[Dict[str, Any]]:
392
438
  r"""Use Google search engine to search information for the given query.
393
439
 
394
440
  Args:
395
441
  query (str): The query to be searched.
396
- num_result_pages (int): The number of result pages to retrieve.
397
442
 
398
443
  Returns:
399
444
  List[Dict[str, Any]]: A list of dictionaries where each dictionary
@@ -430,14 +475,12 @@ class SearchToolkit(BaseToolkit):
430
475
  start_page_idx = 1
431
476
  # Different language may get different result
432
477
  search_language = "en"
433
- # How many pages to return
434
- num_result_pages = num_result_pages
435
478
  # Constructing the URL
436
479
  # Doc: https://developers.google.com/custom-search/v1/using_rest
437
480
  url = (
438
481
  f"https://www.googleapis.com/customsearch/v1?"
439
482
  f"key={GOOGLE_API_KEY}&cx={SEARCH_ENGINE_ID}&q={query}&start="
440
- f"{start_page_idx}&lr={search_language}&num={num_result_pages}"
483
+ f"{start_page_idx}&lr={search_language}&num={self.number_of_result_pages}"
441
484
  )
442
485
 
443
486
  responses = []
@@ -498,15 +541,11 @@ class SearchToolkit(BaseToolkit):
498
541
  responses.append({"error": f"google search failed: {e!s}"})
499
542
  return responses
500
543
 
501
- def tavily_search(
502
- self, query: str, num_results: int = 5, **kwargs
503
- ) -> List[Dict[str, Any]]:
544
+ def tavily_search(self, query: str, **kwargs) -> List[Dict[str, Any]]:
504
545
  r"""Use Tavily Search API to search information for the given query.
505
546
 
506
547
  Args:
507
548
  query (str): The query to be searched.
508
- num_results (int): The number of search results to retrieve
509
- (default is `5`).
510
549
  **kwargs: Additional optional parameters supported by Tavily's API:
511
550
  - search_depth (str): "basic" or "advanced" search depth.
512
551
  - topic (str): The search category, e.g., "general" or "news."
@@ -542,7 +581,9 @@ class SearchToolkit(BaseToolkit):
542
581
  client = TavilyClient(Tavily_API_KEY)
543
582
 
544
583
  try:
545
- results = client.search(query, max_results=num_results, **kwargs)
584
+ results = client.search(
585
+ query, max_results=self.number_of_result_pages, **kwargs
586
+ )
546
587
  return results
547
588
  except Exception as e:
548
589
  return [{"error": f"An unexpected error occurred: {e!s}"}]
@@ -553,7 +594,6 @@ class SearchToolkit(BaseToolkit):
553
594
  query: str,
554
595
  freshness: str = "noLimit",
555
596
  summary: bool = False,
556
- count: int = 10,
557
597
  page: int = 1,
558
598
  ) -> Dict[str, Any]:
559
599
  r"""Query the Bocha AI search API and return search results.
@@ -569,7 +609,6 @@ class SearchToolkit(BaseToolkit):
569
609
  - 'oneYear': past year.
570
610
  summary (bool): Whether to include text summaries in results.
571
611
  Default is False.
572
- count (int): Number of results to return (1-50). Default is 10.
573
612
  page (int): Page number of results. Default is 1.
574
613
 
575
614
  Returns:
@@ -592,7 +631,7 @@ class SearchToolkit(BaseToolkit):
592
631
  "query": query,
593
632
  "freshness": freshness,
594
633
  "summary": summary,
595
- "count": count,
634
+ "count": self.number_of_result_pages,
596
635
  "page": page,
597
636
  },
598
637
  ensure_ascii=False,
@@ -610,15 +649,13 @@ class SearchToolkit(BaseToolkit):
610
649
  except requests.exceptions.RequestException as e:
611
650
  return {"error": f"Bocha AI search failed: {e!s}"}
612
651
 
613
- def search_baidu(self, query: str, max_results: int = 5) -> Dict[str, Any]:
652
+ def search_baidu(self, query: str) -> Dict[str, Any]:
614
653
  r"""Search Baidu using web scraping to retrieve relevant search
615
654
  results. This method queries Baidu's search engine and extracts search
616
655
  results including titles, descriptions, and URLs.
617
656
 
618
657
  Args:
619
658
  query (str): Search query string to submit to Baidu.
620
- max_results (int): Maximum number of results to return.
621
- (default: :obj:`5`)
622
659
 
623
660
  Returns:
624
661
  Dict[str, Any]: A dictionary containing search results or error
@@ -636,7 +673,7 @@ class SearchToolkit(BaseToolkit):
636
673
  ),
637
674
  "Referer": "https://www.baidu.com",
638
675
  }
639
- params = {"wd": query, "rn": str(max_results)}
676
+ params = {"wd": query, "rn": str(self.number_of_result_pages)}
640
677
 
641
678
  response = requests.get(url, headers=headers, params=params)
642
679
  response.encoding = "utf-8"
@@ -665,7 +702,7 @@ class SearchToolkit(BaseToolkit):
665
702
  "url": link,
666
703
  }
667
704
  )
668
- if len(results) >= max_results:
705
+ if len(results) >= self.number_of_result_pages:
669
706
  break
670
707
 
671
708
  if not results:
@@ -679,7 +716,7 @@ class SearchToolkit(BaseToolkit):
679
716
  except Exception as e:
680
717
  return {"error": f"Baidu scraping error: {e!s}"}
681
718
 
682
- def search_bing(self, query: str, max_results: int = 5) -> Dict[str, Any]:
719
+ def search_bing(self, query: str) -> Dict[str, Any]:
683
720
  r"""Use Bing search engine to search information for the given query.
684
721
 
685
722
  This function queries the Chinese version of Bing search engine (cn.
@@ -691,8 +728,6 @@ class SearchToolkit(BaseToolkit):
691
728
  Args:
692
729
  query (str): The search query string to submit to Bing. Works best
693
730
  with Chinese queries or when Chinese results are preferred.
694
- max_results (int): Maximum number of results to return.
695
- (default: :obj:`5`)
696
731
 
697
732
  Returns:
698
733
  Dict ([str, Any]): A dictionary containing either:
@@ -742,7 +777,9 @@ class SearchToolkit(BaseToolkit):
742
777
  result_items = b_results_tag.find_all("li")
743
778
 
744
779
  results: List[Dict[str, Any]] = []
745
- for i in range(min(len(result_items), max_results)):
780
+ for i in range(
781
+ min(len(result_items), self.number_of_result_pages)
782
+ ):
746
783
  row = result_items[i]
747
784
  if not isinstance(row, Tag):
748
785
  continue
@@ -807,7 +844,6 @@ class SearchToolkit(BaseToolkit):
807
844
  "financial report",
808
845
  ]
809
846
  ] = None,
810
- num_results: int = 10,
811
847
  include_text: Optional[List[str]] = None,
812
848
  exclude_text: Optional[List[str]] = None,
813
849
  use_autoprompt: bool = True,
@@ -823,8 +859,6 @@ class SearchToolkit(BaseToolkit):
823
859
  and neural search. (default: :obj:`"auto"`)
824
860
  category (Optional[Literal]): Category to focus the search on, such
825
861
  as "research paper" or "news". (default: :obj:`None`)
826
- num_results (int): Number of results to return (max 100).
827
- (default: :obj:`10`)
828
862
  include_text (Optional[List[str]]): Strings that must be present in
829
863
  webpage text. Limited to 1 string of up to 5 words.
830
864
  (default: :obj:`None`)
@@ -853,7 +887,10 @@ class SearchToolkit(BaseToolkit):
853
887
  try:
854
888
  exa = Exa(EXA_API_KEY)
855
889
 
856
- if num_results is not None and not 0 < num_results <= 100:
890
+ if (
891
+ self.number_of_result_pages is not None
892
+ and not 0 < self.number_of_result_pages <= 100
893
+ ):
857
894
  raise ValueError("num_results must be between 1 and 100")
858
895
 
859
896
  if include_text is not None:
@@ -880,7 +917,7 @@ class SearchToolkit(BaseToolkit):
880
917
  query=query,
881
918
  type=search_type,
882
919
  category=category,
883
- num_results=num_results,
920
+ num_results=self.number_of_result_pages,
884
921
  include_text=include_text,
885
922
  exclude_text=exclude_text,
886
923
  use_autoprompt=use_autoprompt,
@@ -894,7 +931,7 @@ class SearchToolkit(BaseToolkit):
894
931
  query=query,
895
932
  type=search_type,
896
933
  category=category,
897
- num_results=num_results,
934
+ num_results=self.number_of_result_pages,
898
935
  include_text=include_text,
899
936
  exclude_text=exclude_text,
900
937
  use_autoprompt=use_autoprompt,
@@ -924,7 +961,6 @@ class SearchToolkit(BaseToolkit):
924
961
  "news_center",
925
962
  ]
926
963
  ] = None,
927
- page: int = 1,
928
964
  return_main_text: bool = False,
929
965
  return_markdown_text: bool = True,
930
966
  enable_rerank: bool = True,
@@ -941,17 +977,14 @@ class SearchToolkit(BaseToolkit):
941
977
 
942
978
  Args:
943
979
  query (str): The search query string (length >= 1 and <= 100).
944
- time_range (Literal["OneDay", "OneWeek", "OneMonth", "OneYear",
945
- "NoLimit"]): Time frame filter for search results.
980
+ time_range (Literal["OneDay", "OneWeek", "OneMonth", "OneYear", "NoLimit"]):
981
+ Time frame filter for search results.
946
982
  (default: :obj:`"NoLimit"`)
947
- industry (Optional[Literal["finance", "law", "medical",
948
- "internet", "tax", "news_province", "news_center"]]):
983
+ industry (Optional[Literal["finance", "law", "medical", "internet", "tax", "news_province", "news_center"]]):
949
984
  Industry-specific search filter. When specified, only returns
950
985
  results from sites in the specified industries. Multiple
951
986
  industries can be comma-separated.
952
987
  (default: :obj:`None`)
953
- page (int): Page number for results pagination.
954
- (default: :obj:`1`)
955
988
  return_main_text (bool): Whether to include the main text of the
956
989
  webpage in results. (default: :obj:`True`)
957
990
  return_markdown_text (bool): Whether to include markdown formatted
@@ -984,7 +1017,7 @@ class SearchToolkit(BaseToolkit):
984
1017
  params: Dict[str, Union[str, int]] = {
985
1018
  "query": query,
986
1019
  "timeRange": time_range,
987
- "page": page,
1020
+ "page": self.number_of_result_pages,
988
1021
  "returnMainText": str(return_main_text).lower(),
989
1022
  "returnMarkdownText": str(return_markdown_text).lower(),
990
1023
  "enableRerank": str(enable_rerank).lower(),
@@ -239,6 +239,7 @@ class SlackToolkit(BaseToolkit):
239
239
  self,
240
240
  message: str,
241
241
  channel_id: str,
242
+ file_path: Optional[str] = None,
242
243
  user: Optional[str] = None,
243
244
  ) -> str:
244
245
  r"""Send a message to a Slack channel.
@@ -246,6 +247,8 @@ class SlackToolkit(BaseToolkit):
246
247
  Args:
247
248
  message (str): The message to send.
248
249
  channel_id (str): The ID of the Slack channel to send message.
250
+ file_path (Optional[str]): The path of the file to send.
251
+ Defaults to `None`.
249
252
  user (Optional[str]): The user ID of the recipient.
250
253
  Defaults to `None`.
251
254
 
@@ -257,6 +260,13 @@ class SlackToolkit(BaseToolkit):
257
260
 
258
261
  try:
259
262
  slack_client = self._login_slack()
263
+ if file_path:
264
+ response = slack_client.files_upload_v2(
265
+ channel=channel_id,
266
+ file=file_path,
267
+ initial_comment=message,
268
+ )
269
+ return f"File sent successfully, got response: {response}"
260
270
  if user:
261
271
  response = slack_client.chat_postEphemeral(
262
272
  channel=channel_id, text=message, user=user
camel/types/enums.py CHANGED
@@ -270,6 +270,7 @@ class ModelType(UnifiedModelType, Enum):
270
270
  MOONSHOT_V1_8K = "moonshot-v1-8k"
271
271
  MOONSHOT_V1_32K = "moonshot-v1-32k"
272
272
  MOONSHOT_V1_128K = "moonshot-v1-128k"
273
+ MOONSHOT_KIMI_K2 = "kimi-k2-0711-preview"
273
274
 
274
275
  # SiliconFlow models support tool calling
275
276
  SILICONFLOW_DEEPSEEK_V2_5 = "deepseek-ai/DeepSeek-V2.5"
@@ -833,6 +834,7 @@ class ModelType(UnifiedModelType, Enum):
833
834
  ModelType.MOONSHOT_V1_8K,
834
835
  ModelType.MOONSHOT_V1_32K,
835
836
  ModelType.MOONSHOT_V1_128K,
837
+ ModelType.MOONSHOT_KIMI_K2,
836
838
  }
837
839
 
838
840
  @property
@@ -1205,6 +1207,7 @@ class ModelType(UnifiedModelType, Enum):
1205
1207
  ModelType.MISTRAL_MEDIUM_3,
1206
1208
  ModelType.ERNIE_4_5_TURBO_128K,
1207
1209
  ModelType.DEEPSEEK_V3,
1210
+ ModelType.MOONSHOT_KIMI_K2,
1208
1211
  }:
1209
1212
  return 128_000
1210
1213
  elif self in {
@@ -41,4 +41,4 @@ class ToolResult:
41
41
  def __repr__(self) -> str:
42
42
  r"""Return a detailed representation of the result."""
43
43
  img_count = len(self.images) if self.images else 0
44
- return f"ToolResult(text='{self.text[:50]}...', images={img_count})"
44
+ return f"ToolResult(text='{self.text}', images={img_count})"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.71a10
3
+ Version: 0.2.71a12
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
@@ -127,7 +127,7 @@ Requires-Dist: sympy<2,>=1.13.3; extra == 'all'
127
127
  Requires-Dist: tabulate>=0.9.0; extra == 'all'
128
128
  Requires-Dist: tavily-python<0.6,>=0.5.0; extra == 'all'
129
129
  Requires-Dist: textblob<0.18,>=0.17.1; extra == 'all'
130
- Requires-Dist: traceroot==0.0.3a2; extra == 'all'
130
+ Requires-Dist: traceroot==0.0.3; extra == 'all'
131
131
  Requires-Dist: transformers<5,>=4; extra == 'all'
132
132
  Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'all'
133
133
  Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'all'
@@ -191,7 +191,7 @@ Requires-Dist: ipykernel<7,>=6.0.0; extra == 'dev-tools'
191
191
  Requires-Dist: jupyter-client<9,>=8.6.2; extra == 'dev-tools'
192
192
  Requires-Dist: langfuse>=2.60.5; extra == 'dev-tools'
193
193
  Requires-Dist: mcp>=1.3.0; extra == 'dev-tools'
194
- Requires-Dist: traceroot==0.0.3a2; extra == 'dev-tools'
194
+ Requires-Dist: traceroot==0.0.3; extra == 'dev-tools'
195
195
  Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'dev-tools'
196
196
  Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'dev-tools'
197
197
  Requires-Dist: typer>=0.15.2; extra == 'dev-tools'
@@ -1,4 +1,4 @@
1
- camel/__init__.py,sha256=SVt5eoUz6dQCW5uOcU6k9K8XET0mIj6RAZBzc9ixhgI,902
1
+ camel/__init__.py,sha256=oUT4aFlY7oLE0uiLwy27soTCR0nroQM7pxRzeU3iGKQ,902
2
2
  camel/generators.py,sha256=JRqj9_m1PF4qT6UtybzTQ-KBT9MJQt18OAAYvQ_fr2o,13844
3
3
  camel/human.py,sha256=Xg8x1cS5KK4bQ1SDByiHZnzsRpvRP-KZViNvmu38xo4,5475
4
4
  camel/logger.py,sha256=WgEwael_eT6D-lVAKHpKIpwXSTjvLbny5jbV1Ab8lnA,5760
@@ -7,7 +7,7 @@ camel/agents/__init__.py,sha256=64weKqdvmpZcGWyVkO-OKASAmVUdrQjv60JApgPk_SA,1644
7
7
  camel/agents/_types.py,sha256=MeFZzay2kJA6evALQ-MbBTKW-0lu_0wBuKsxzH_4gWI,1552
8
8
  camel/agents/_utils.py,sha256=AR7Qqgbkmn4X2edYUQf1rdksGUyV5hm3iK1z-Dn0Mcg,6266
9
9
  camel/agents/base.py,sha256=c4bJYL3G3Z41SaFdMPMn8ZjLdFiFaVOFO6EQIfuCVR8,1124
10
- camel/agents/chat_agent.py,sha256=eJaYpiXeTukSZaymwQy2l1RzpjUtZjvpsYg8De4hJB8,159308
10
+ camel/agents/chat_agent.py,sha256=gF-Wq1YSL5C4_9pp9SN4jdfLrzF-d3xi51PnskQyi7k,159299
11
11
  camel/agents/critic_agent.py,sha256=L6cTbYjyZB0DCa51tQ6LZLA6my8kHLC4nktHySH78H4,10433
12
12
  camel/agents/deductive_reasoner_agent.py,sha256=6BZGaq1hR6hKJuQtOfoYQnk_AkZpw_Mr7mUy2MspQgs,13540
13
13
  camel/agents/embodied_agent.py,sha256=XBxBu5ZMmSJ4B2U3Z7SMwvLlgp6yNpaBe8HNQmY9CZA,7536
@@ -180,7 +180,7 @@ camel/models/aws_bedrock_model.py,sha256=bcQBiHVdVuJXyPEkSdymQlGx2zHIVj5d4ouFuF8
180
180
  camel/models/azure_openai_model.py,sha256=-hnzGlV8NJAzR9wVfhe-YDazbGU43ECtw6_uFICKnPU,18393
181
181
  camel/models/base_audio_model.py,sha256=_VUWh1L3rh8mldNvM5R6jBOKtvmTeBKJyRxAdPJmPlY,3324
182
182
  camel/models/base_model.py,sha256=NouoYjMPo2K6KmKCIeU7smyEFnDkqnLL71Dh9SyJoa4,19486
183
- camel/models/cohere_model.py,sha256=V1sL8JpaOAVYOi5hAIXWdEex0Mr36_kx4-BEACQfN5o,17237
183
+ camel/models/cohere_model.py,sha256=6KvYnYxoBZ8kLMmRp5wcJisY65KhCTl6kiG1W3xOkJQ,17292
184
184
  camel/models/crynux_model.py,sha256=leEiFz1RcRtVJLJvYt_Ydyg5jkSk3VEJphgmHFz67bw,4118
185
185
  camel/models/deepseek_model.py,sha256=MXOdmpFQFbxpgh5DiTETzx3qDFUkKiFjnEjTMDeWk2k,11015
186
186
  camel/models/fish_audio_model.py,sha256=RCwORRIdCbjZXWWjjctpksPI2DnS0b68JjxunHBQ1xk,5981
@@ -193,7 +193,7 @@ camel/models/mistral_model.py,sha256=ipOVPk2boGqyGAypgKeQ9syaP0znKFQQSOqeVtockjk
193
193
  camel/models/model_factory.py,sha256=8b-LEXovPnpmD3GFKOdbtcgjCwpa91IPCJxikPxhdMs,12114
194
194
  camel/models/model_manager.py,sha256=ln3bCV_QWM3V5BrwKwjmxIeRN8ojIvPEBMMHun0MliU,9942
195
195
  camel/models/modelscope_model.py,sha256=meO7KCAwZtHpUVgwtuKe0j4jYh0IWsxa8e3mwyhGLvg,10804
196
- camel/models/moonshot_model.py,sha256=ulZYikMe65wFZ-xyo6QMmn1q4vhsodyFjMBOmZu01Xw,4622
196
+ camel/models/moonshot_model.py,sha256=BNkKcEPMieMZwClRT4w-D4crZ5Ovs8tLdK5Kxm41hWg,6465
197
197
  camel/models/nemotron_model.py,sha256=PzRuQoAEmBRZ2wcotQ8-MRz5wYachKa_CUNenMQg-3U,3091
198
198
  camel/models/netmind_model.py,sha256=YKHfntqsKqBxfh6qryn4L7CzHOIAYtyPXwJNK6NxNi4,4276
199
199
  camel/models/novita_model.py,sha256=V-g0Wrf1Zh1il6oPKh1LVy_U0nveOwJq9YBVzGp4GOI,4238
@@ -273,14 +273,14 @@ camel/societies/babyagi_playing.py,sha256=KbTdpHfZ2V8AripVck0bNTOyF-RSaMPCRARz3D
273
273
  camel/societies/role_playing.py,sha256=0XScr3WfxX1QOC71RhBLmrcS5y2c7DMQB_mAFOHU34M,31421
274
274
  camel/societies/workforce/__init__.py,sha256=bkTI-PE-MSK9AQ2V2gR6cR2WY-R7Jqy_NmXRtAoqo8o,920
275
275
  camel/societies/workforce/base.py,sha256=z2DmbTP5LL5-aCAAqglznQqCLfPmnyM5zD3w6jjtsb8,2175
276
- camel/societies/workforce/prompts.py,sha256=46qAt4CZeCqLFMt2EZIeiOWXai4DT9PIpWjkI0VbwGk,15168
277
- camel/societies/workforce/role_playing_worker.py,sha256=z5-OcNiaNEaoC206_3HD7xeonuUkD-XTxYbD3AqoNC8,10319
276
+ camel/societies/workforce/prompts.py,sha256=CYTkUJOYr3lcQAVAUAeKa_R-oyQHl5aECOkriMcXmjM,16518
277
+ camel/societies/workforce/role_playing_worker.py,sha256=Zm89lZTlV0T3o9C-DJ0HAV68Iq2Kdg8QqJRWs1TV9_A,10320
278
278
  camel/societies/workforce/single_agent_worker.py,sha256=fXgAEkDMhvTd-nbwy5Gw3BOaRAiPsL8mf3AW1aaNqKU,19342
279
279
  camel/societies/workforce/structured_output_handler.py,sha256=xr8szFN86hg3jQ825aEkJTjkSFQnTlbinVg4j1vZJVI,17870
280
280
  camel/societies/workforce/task_channel.py,sha256=GWHaGQBpjTzdKbWoBYAQzzAiLKRKRXa6beqtc4cg-Is,7611
281
281
  camel/societies/workforce/utils.py,sha256=THgNHSeZsNVnjTzQTur3qCJhi72MrDS8X2gPET174cI,8434
282
- camel/societies/workforce/worker.py,sha256=wImTK95gXBfnfzEaInUKJyyRSPlHJUyV9dONjofbVu8,6233
283
- camel/societies/workforce/workforce.py,sha256=yiKEULgeNl5Red3LGhDZzY63tFZpcEkCKFivVKTfIKg,138300
282
+ camel/societies/workforce/worker.py,sha256=MtUqYkTC9V-PIIRwSkKiB9w_YSu92iOpoha2rktEiQ0,6248
283
+ camel/societies/workforce/workforce.py,sha256=bu6RAtDRM50C1mu5P6qeAPAsMmKI9bp8082NzYSC11s,139558
284
284
  camel/societies/workforce/workforce_logger.py,sha256=0YT__ys48Bgn0IICKIZBmSWhON-eA1KShebjCdn5ppE,24525
285
285
  camel/storages/__init__.py,sha256=RwpEyvxpMbJzVDZJJygeBg4AzyYMkTjjkfB53hTuqGo,2141
286
286
  camel/storages/graph_storages/__init__.py,sha256=G29BNn651C0WTOpjCl4QnVM-4B9tcNh8DdmsCiONH8Y,948
@@ -310,7 +310,7 @@ camel/storages/vectordb_storages/qdrant.py,sha256=a_cT0buSCHQ2CPZy852-mdvMDwy5zo
310
310
  camel/storages/vectordb_storages/tidb.py,sha256=w83bxgKgso43MtHqlpf2EMSpn1_Nz6ZZtY4fPw_-vgs,11192
311
311
  camel/storages/vectordb_storages/weaviate.py,sha256=wDUE4KvfmOl3DqHFU4uF0VKbHu-q9vKhZDe8FZ6QXsk,27888
312
312
  camel/tasks/__init__.py,sha256=MuHwkw5GRQc8NOCzj8tjtBrr2Xg9KrcKp-ed_-2ZGIM,906
313
- camel/tasks/task.py,sha256=GNkySKVtX8h6kCgSA9AIT5OQNlt4v87oxyNiYWmHebE,24118
313
+ camel/tasks/task.py,sha256=TZ0h9L_yKuJ3lxs8c8YUNVCZLWJChoy03Z8WXy1i6pc,24212
314
314
  camel/tasks/task_prompt.py,sha256=3KZmKYKUPcTKe8EAZOZBN3G05JHRVt7oHY9ORzLVu1g,2150
315
315
  camel/terminators/__init__.py,sha256=t8uqrkUnXEOYMXQDgaBkMFJ0EXFKI0kmx4cUimli3Ls,991
316
316
  camel/terminators/base.py,sha256=xmJzERX7GdSXcxZjAHHODa0rOxRChMSRboDCNHWSscs,1511
@@ -333,7 +333,7 @@ camel/toolkits/data_commons_toolkit.py,sha256=aHZUSL1ACpnYGaf1rE2csVKTmXTmN8lMGR
333
333
  camel/toolkits/edgeone_pages_mcp_toolkit.py,sha256=1TFpAGHUNLggFQeN1OEw7P5laijwnlrCkfxBtgxFuUY,2331
334
334
  camel/toolkits/excel_toolkit.py,sha256=9Uk5GLWl719c4W-NcGPJTNMtodAbEE5gUgLsFkIInbk,32564
335
335
  camel/toolkits/file_write_toolkit.py,sha256=d8N8FfmK1fS13sY58PPhJh6M0vq6yh-s1-ltCZQJObg,37044
336
- camel/toolkits/function_tool.py,sha256=xCDzjxTRCVj_kmbnMFBuwK-3NuzM4JNe_kv9HLtjnIA,33644
336
+ camel/toolkits/function_tool.py,sha256=3_hE-Khqf556CeebchsPpjIDCynC6vKmUJLdh1EO_js,34295
337
337
  camel/toolkits/github_toolkit.py,sha256=iUyRrjWGAW_iljZVfNyfkm1Vi55wJxK6PsDAQs9pOag,13099
338
338
  camel/toolkits/google_calendar_toolkit.py,sha256=E-sdgdbtNBs_CXbhht9t1dsVr4DsTr5NguHkx4fvSmc,15410
339
339
  camel/toolkits/google_drive_mcp_toolkit.py,sha256=NubrRdPV8_t8bM4vP-7eKSVMuVwSEBXLfubWR_Hba7k,2583
@@ -366,10 +366,10 @@ camel/toolkits/pulse_mcp_search_toolkit.py,sha256=uLUpm19uC_4xLJow0gGVS9f-5T5EW2
366
366
  camel/toolkits/pyautogui_toolkit.py,sha256=Q810fm8cFvElRory7B74aqS2YV6BOpdRE6jkewoM8xc,16093
367
367
  camel/toolkits/reddit_toolkit.py,sha256=x0XAT1zQJVNHUr1R1HwWCgIlkamU-kPmbfb_H1WIv-w,8036
368
368
  camel/toolkits/retrieval_toolkit.py,sha256=BKjEyOqW3cGEPTS5yHPYb-Qg795iNNPIs1wjowfuq3U,3825
369
- camel/toolkits/search_toolkit.py,sha256=hqiqF8QJVaghQv36ra36SFzpjZkw7aJWsnMfGYaH_CQ,43996
369
+ camel/toolkits/search_toolkit.py,sha256=FyIL85qfeTiDCmDD-9H8tnhiRY1ZmnGlkZiW5uRcSR4,44884
370
370
  camel/toolkits/searxng_toolkit.py,sha256=a2GtE4FGSrmaIVvX6Yide-abBYD1wsHqitnDlx9fdVg,7664
371
371
  camel/toolkits/semantic_scholar_toolkit.py,sha256=Rh7eA_YPxV5pvPIzhjjvpr3vtlaCniJicrqzkPWW9_I,11634
372
- camel/toolkits/slack_toolkit.py,sha256=4Bj8P2ardLwfiyUz3ha5QobSvziV54E9zipysCg9GuI,11208
372
+ camel/toolkits/slack_toolkit.py,sha256=ZT6Ndlce2qjGsyZaNMfQ54nSEi7DOC9Ro7YqtK-u5O4,11651
373
373
  camel/toolkits/stripe_toolkit.py,sha256=07swo5znGTnorafC1uYLKB4NRcJIOPOx19J7tkpLYWk,10102
374
374
  camel/toolkits/sympy_toolkit.py,sha256=BAQnI8EFJydNUpKQWXBdleQ1Cm-srDBhFlqp9V9pbPQ,33757
375
375
  camel/toolkits/task_planning_toolkit.py,sha256=Ttw9fHae4omGC1SA-6uaeXVHJ1YkwiVloz_hO-fm1gw,4855
@@ -387,10 +387,10 @@ camel/toolkits/hybrid_browser_toolkit/actions.py,sha256=x6X-kEdQx3K1ID-BBwdQEciX
387
387
  camel/toolkits/hybrid_browser_toolkit/agent.py,sha256=0ifwhYUDJ5GLxfdpC5KquPaW1a0QBAutp2Y9y0YFujw,11685
388
388
  camel/toolkits/hybrid_browser_toolkit/browser_session.py,sha256=LdXjF4eBFuqoRnbPU0ErBtR5wtbcv3cv-hBXtiDkgMg,27102
389
389
  camel/toolkits/hybrid_browser_toolkit/config_loader.py,sha256=0zpDq3aFKEva2jc38kgLHnyxypIDk9SOcMjoP26tozo,15414
390
- camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py,sha256=Mfr0-1FFCfY9cgzQ5JHD4vimh0Nbu203nwmad3RDwiU,80391
390
+ camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py,sha256=5rrwj7H3qKoSUaDBPozWxcGqbdCInUrhhDTPZ6O7ZBU,77550
391
391
  camel/toolkits/hybrid_browser_toolkit/snapshot.py,sha256=3vQaFK5C1P8WnkK2eDMaFOizrZf4uUAW0LxdeoF4F2w,8539
392
392
  camel/toolkits/hybrid_browser_toolkit/stealth_script.js,sha256=z4XRSVUpAS87Sj36s3bY8XXhvRcHBlgsUOyMxV2HI80,27650
393
- camel/toolkits/hybrid_browser_toolkit/unified_analyzer.js,sha256=wVZfG-c6NqqtZnz97yyklvQsqCEeUPLH3XnvgURhIV4,40817
393
+ camel/toolkits/hybrid_browser_toolkit/unified_analyzer.js,sha256=VnzIn0KcEtxuncJi-OPZzdWbLSeSHCH-7sviFAGNM8g,40823
394
394
  camel/toolkits/open_api_specs/security_config.py,sha256=ZVnBa_zEifaE_ao2xsvV5majuJHpn2Tn7feMDOnj-eo,898
395
395
  camel/toolkits/open_api_specs/biztoc/__init__.py,sha256=OKCZrQCDwaWtXIN_2rA9FSqEvgpQRieRoHh7Ek6N16A,702
396
396
  camel/toolkits/open_api_specs/biztoc/ai-plugin.json,sha256=IJinQbLv5MFPGFwdN7PbOhwArFVExSEZdJspe-mOBIo,866
@@ -417,7 +417,7 @@ camel/toolkits/open_api_specs/web_scraper/openapi.yaml,sha256=u_WalQ01e8W1D27VnZ
417
417
  camel/toolkits/open_api_specs/web_scraper/paths/__init__.py,sha256=OKCZrQCDwaWtXIN_2rA9FSqEvgpQRieRoHh7Ek6N16A,702
418
418
  camel/toolkits/open_api_specs/web_scraper/paths/scraper.py,sha256=aWy1_ppV4NVVEZfnbN3tu9XA9yAPAC9bRStJ5JuXMRU,1117
419
419
  camel/types/__init__.py,sha256=pFTg3CWGSCfwFdoxPDTf4dKV8DdJS1x-bBPuEOmtdf0,2549
420
- camel/types/enums.py,sha256=tUTwrEj5-R6EEXxclxiMkrThLL4SotpYX3saXQI01vo,62822
420
+ camel/types/enums.py,sha256=qEPE2r4Np7JgJqSsZmM0SNQ8_hy19aeCn5da3pK93so,62948
421
421
  camel/types/mcp_registries.py,sha256=dl4LgYtSaUhsqAKpz28k_SA9La11qxqBvDLaEuyzrFE,4971
422
422
  camel/types/openai_types.py,sha256=8ZFzLe-zGmKNPfuVZFzxlxAX98lGf18gtrPhOgMmzus,2104
423
423
  camel/types/unified_model_type.py,sha256=ZweHiS4MQ1QbDEX3a3oUc-pvgueYP27Zt0SlAPcYg_4,5623
@@ -435,7 +435,7 @@ camel/utils/mcp_client.py,sha256=-EIUj6v2hXB75Xvj2FyEedwUMEpUUVXzXWNLLYGrJfE,373
435
435
  camel/utils/message_summarizer.py,sha256=7AvPDlevle5uU3mXtfvSFS--nDjp9yqfrf546qTe9rE,5939
436
436
  camel/utils/response_format.py,sha256=xZcx6xBxeg3A0e7R0JCMJdNm2oQ1-diqVLs0JsiCkZU,5319
437
437
  camel/utils/token_counting.py,sha256=apkERzNoVc4sgvJvWVosvepX3KH8pVypVjrL4AA7RB4,17521
438
- camel/utils/tool_result.py,sha256=8dyf20_GHKxsHq8e0BmqVff3JZlmT6MV4npKZuXlcTc,1821
438
+ camel/utils/tool_result.py,sha256=0dKMb22cwuxnjeO4K9wbM4gwwPHV1yfoSJquLTUJVXs,1813
439
439
  camel/utils/chunker/__init__.py,sha256=6iN6HL6sblIjDuJTILk-9qKcHBZ97t8b6tZCWPZ0OYI,899
440
440
  camel/utils/chunker/base.py,sha256=9CuqymFCRncyAdEST-IcRonB732YAPhusznqH-RES3E,960
441
441
  camel/utils/chunker/code_chunker.py,sha256=9h4rd39H9ngbOWAjd_12xt-EzVMh0e_fZnC4my8h_Jg,6823
@@ -446,7 +446,7 @@ camel/verifiers/math_verifier.py,sha256=tA1D4S0sm8nsWISevxSN0hvSVtIUpqmJhzqfbuMo
446
446
  camel/verifiers/models.py,sha256=GdxYPr7UxNrR1577yW4kyroRcLGfd-H1GXgv8potDWU,2471
447
447
  camel/verifiers/physics_verifier.py,sha256=c1grrRddcrVN7szkxhv2QirwY9viIRSITWeWFF5HmLs,30187
448
448
  camel/verifiers/python_verifier.py,sha256=ogTz77wODfEcDN4tMVtiSkRQyoiZbHPY2fKybn59lHw,20558
449
- camel_ai-0.2.71a10.dist-info/METADATA,sha256=QLd0G8GK8Yk3FoOBa6p6kh2oTl-ChEguicXtGpcVEKk,50003
450
- camel_ai-0.2.71a10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
451
- camel_ai-0.2.71a10.dist-info/licenses/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
452
- camel_ai-0.2.71a10.dist-info/RECORD,,
449
+ camel_ai-0.2.71a12.dist-info/METADATA,sha256=mzylMnRqVIeUBQcBvV7jR6CYS3zVtdkOus7lv-_pU9k,49999
450
+ camel_ai-0.2.71a12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
451
+ camel_ai-0.2.71a12.dist-info/licenses/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
452
+ camel_ai-0.2.71a12.dist-info/RECORD,,