camel-ai 0.2.74a5__py3-none-any.whl → 0.2.75a0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of camel-ai might be problematic. Click here for more details.
- camel/__init__.py +1 -1
- camel/interpreters/e2b_interpreter.py +34 -1
- camel/models/aiml_model.py +1 -16
- camel/models/anthropic_model.py +6 -22
- camel/models/aws_bedrock_model.py +1 -16
- camel/models/azure_openai_model.py +1 -16
- camel/models/base_model.py +0 -12
- camel/models/cohere_model.py +1 -16
- camel/models/crynux_model.py +1 -16
- camel/models/deepseek_model.py +1 -16
- camel/models/gemini_model.py +1 -16
- camel/models/groq_model.py +1 -17
- camel/models/internlm_model.py +1 -16
- camel/models/litellm_model.py +1 -16
- camel/models/lmstudio_model.py +1 -17
- camel/models/mistral_model.py +1 -16
- camel/models/modelscope_model.py +1 -16
- camel/models/moonshot_model.py +1 -16
- camel/models/nemotron_model.py +0 -5
- camel/models/netmind_model.py +1 -16
- camel/models/novita_model.py +1 -16
- camel/models/nvidia_model.py +1 -16
- camel/models/ollama_model.py +1 -16
- camel/models/openai_compatible_model.py +0 -3
- camel/models/openai_model.py +1 -16
- camel/models/openrouter_model.py +1 -17
- camel/models/ppio_model.py +1 -16
- camel/models/qianfan_model.py +1 -16
- camel/models/qwen_model.py +1 -16
- camel/models/reka_model.py +1 -16
- camel/models/samba_model.py +0 -32
- camel/models/sglang_model.py +1 -16
- camel/models/siliconflow_model.py +1 -16
- camel/models/stub_model.py +0 -4
- camel/models/togetherai_model.py +1 -16
- camel/models/vllm_model.py +1 -16
- camel/models/volcano_model.py +0 -17
- camel/models/watsonx_model.py +1 -16
- camel/models/yi_model.py +1 -16
- camel/models/zhipuai_model.py +1 -16
- camel/toolkits/hybrid_browser_toolkit/config_loader.py +3 -0
- camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +225 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +164 -8
- camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +2 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +106 -1
- camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +19 -1
- camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +20 -0
- camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +41 -0
- camel/toolkits/hybrid_browser_toolkit_py/actions.py +158 -0
- camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +55 -8
- camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +43 -0
- camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +312 -3
- camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +10 -4
- camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +45 -4
- camel/toolkits/search_toolkit.py +182 -30
- camel/types/enums.py +9 -0
- camel/utils/mcp.py +2 -2
- camel/utils/token_counting.py +13 -2
- {camel_ai-0.2.74a5.dist-info → camel_ai-0.2.75a0.dist-info}/METADATA +6 -6
- {camel_ai-0.2.74a5.dist-info → camel_ai-0.2.75a0.dist-info}/RECORD +62 -62
- {camel_ai-0.2.74a5.dist-info → camel_ai-0.2.75a0.dist-info}/WHEEL +0 -0
- {camel_ai-0.2.74a5.dist-info → camel_ai-0.2.75a0.dist-info}/licenses/LICENSE +0 -0
camel/toolkits/search_toolkit.py
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import os
|
|
15
15
|
from typing import Any, Dict, List, Literal, Optional, TypeAlias, Union, cast
|
|
16
|
+
from urllib.parse import quote
|
|
16
17
|
|
|
17
18
|
import requests
|
|
18
19
|
|
|
@@ -516,6 +517,29 @@ class SearchToolkit(BaseToolkit):
|
|
|
516
517
|
"""
|
|
517
518
|
import requests
|
|
518
519
|
|
|
520
|
+
# Validate input parameters
|
|
521
|
+
if not isinstance(start_page, int) or start_page < 1:
|
|
522
|
+
raise ValueError("start_page must be a positive integer")
|
|
523
|
+
|
|
524
|
+
if (
|
|
525
|
+
not isinstance(number_of_result_pages, int)
|
|
526
|
+
or number_of_result_pages < 1
|
|
527
|
+
):
|
|
528
|
+
raise ValueError(
|
|
529
|
+
"number_of_result_pages must be a positive integer"
|
|
530
|
+
)
|
|
531
|
+
|
|
532
|
+
# Google Custom Search API has a limit of 10 results per request
|
|
533
|
+
if number_of_result_pages > 10:
|
|
534
|
+
logger.warning(
|
|
535
|
+
f"Google API limits results to 10 per request. "
|
|
536
|
+
f"Requested {number_of_result_pages}, using 10 instead."
|
|
537
|
+
)
|
|
538
|
+
number_of_result_pages = 10
|
|
539
|
+
|
|
540
|
+
if search_type not in ["web", "image"]:
|
|
541
|
+
raise ValueError("search_type must be either 'web' or 'image'")
|
|
542
|
+
|
|
519
543
|
# https://developers.google.com/custom-search/v1/overview
|
|
520
544
|
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
|
|
521
545
|
# https://cse.google.com/cse/all
|
|
@@ -535,11 +559,13 @@ class SearchToolkit(BaseToolkit):
|
|
|
535
559
|
modified_query = f"{query} {exclusion_terms}"
|
|
536
560
|
logger.debug(f"Excluded domains, modified query: {modified_query}")
|
|
537
561
|
|
|
562
|
+
encoded_query = quote(modified_query)
|
|
563
|
+
|
|
538
564
|
# Constructing the URL
|
|
539
565
|
# Doc: https://developers.google.com/custom-search/v1/using_rest
|
|
540
566
|
base_url = (
|
|
541
567
|
f"https://www.googleapis.com/customsearch/v1?"
|
|
542
|
-
f"key={GOOGLE_API_KEY}&cx={SEARCH_ENGINE_ID}&q={
|
|
568
|
+
f"key={GOOGLE_API_KEY}&cx={SEARCH_ENGINE_ID}&q={encoded_query}&start="
|
|
543
569
|
f"{start_page_idx}&lr={search_language}&num={number_of_result_pages}"
|
|
544
570
|
)
|
|
545
571
|
|
|
@@ -552,8 +578,8 @@ class SearchToolkit(BaseToolkit):
|
|
|
552
578
|
responses = []
|
|
553
579
|
# Fetch the results given the URL
|
|
554
580
|
try:
|
|
555
|
-
|
|
556
|
-
result
|
|
581
|
+
result = requests.get(url, timeout=30)
|
|
582
|
+
result.raise_for_status() # Raise exception for bad status codes
|
|
557
583
|
data = result.json()
|
|
558
584
|
|
|
559
585
|
# Get the result items
|
|
@@ -592,28 +618,31 @@ class SearchToolkit(BaseToolkit):
|
|
|
592
618
|
|
|
593
619
|
responses.append(response)
|
|
594
620
|
else:
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
continue
|
|
621
|
+
title = search_item.get("title", "")
|
|
622
|
+
snippet = search_item.get("snippet", "")
|
|
623
|
+
link = search_item.get("link", "")
|
|
624
|
+
|
|
625
|
+
long_description = "N/A"
|
|
601
626
|
if (
|
|
602
|
-
"
|
|
603
|
-
in search_item["pagemap"]
|
|
627
|
+
"pagemap" in search_item
|
|
628
|
+
and "metatags" in search_item["pagemap"]
|
|
604
629
|
):
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
630
|
+
metatags = search_item["pagemap"]["metatags"]
|
|
631
|
+
if metatags and len(metatags) > 0:
|
|
632
|
+
meta = metatags[0]
|
|
633
|
+
long_description = (
|
|
634
|
+
meta.get("og:description")
|
|
635
|
+
or meta.get("description")
|
|
636
|
+
or meta.get("twitter:description")
|
|
637
|
+
or "N/A"
|
|
638
|
+
)
|
|
639
|
+
|
|
640
|
+
if not title and not snippet and not link:
|
|
641
|
+
logger.debug(
|
|
642
|
+
f"Skipping result {i} due to missing essential fields"
|
|
643
|
+
)
|
|
644
|
+
continue
|
|
614
645
|
|
|
615
|
-
# Extract the page url
|
|
616
|
-
link = search_item.get("link")
|
|
617
646
|
response = {
|
|
618
647
|
"result_id": i,
|
|
619
648
|
"title": title,
|
|
@@ -623,19 +652,74 @@ class SearchToolkit(BaseToolkit):
|
|
|
623
652
|
}
|
|
624
653
|
responses.append(response)
|
|
625
654
|
else:
|
|
655
|
+
logger.debug(f"Google API response without items: {data}")
|
|
626
656
|
error_info = data.get("error", {})
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
657
|
+
if error_info:
|
|
658
|
+
error_code = error_info.get("code", "Unknown")
|
|
659
|
+
error_message = error_info.get("message", "Unknown error")
|
|
660
|
+
error_details = f"Error {error_code}: {error_message}"
|
|
661
|
+
else:
|
|
662
|
+
error_details = (
|
|
663
|
+
"No results found or API returned empty response"
|
|
664
|
+
)
|
|
665
|
+
|
|
666
|
+
logger.error(f"Google search failed - {error_details}")
|
|
630
667
|
responses.append(
|
|
631
|
-
{
|
|
632
|
-
"error": f"Google search failed - "
|
|
633
|
-
f"API response: {error_info}"
|
|
634
|
-
}
|
|
668
|
+
{"error": f"Google search failed - {error_details}"}
|
|
635
669
|
)
|
|
636
670
|
|
|
671
|
+
except requests.exceptions.Timeout:
|
|
672
|
+
logger.error("Google search request timed out")
|
|
673
|
+
responses.append(
|
|
674
|
+
{"error": "Google search request timed out after 30 seconds"}
|
|
675
|
+
)
|
|
676
|
+
except requests.exceptions.HTTPError as e:
|
|
677
|
+
error_message = f"Google API HTTP error: {e}"
|
|
678
|
+
try:
|
|
679
|
+
error_data = e.response.json()
|
|
680
|
+
if "error" in error_data and "message" in error_data["error"]:
|
|
681
|
+
api_error_message = error_data["error"]["message"]
|
|
682
|
+
error_code = error_data["error"].get(
|
|
683
|
+
"code", e.response.status_code
|
|
684
|
+
)
|
|
685
|
+
error_message = (
|
|
686
|
+
f"Google API error {error_code}: {api_error_message}"
|
|
687
|
+
)
|
|
688
|
+
|
|
689
|
+
if e.response.status_code == 429:
|
|
690
|
+
error_message = f"Google API rate limit exceeded: {api_error_message}"
|
|
691
|
+
elif e.response.status_code == 400:
|
|
692
|
+
if "API key" in api_error_message:
|
|
693
|
+
error_message = (
|
|
694
|
+
f"Invalid Google API key: {api_error_message}"
|
|
695
|
+
)
|
|
696
|
+
else:
|
|
697
|
+
error_message = f"Bad request to Google API: {api_error_message}"
|
|
698
|
+
except (ValueError, KeyError):
|
|
699
|
+
if e.response.status_code == 429:
|
|
700
|
+
error_message = "Google API rate limit exceeded. Please try again later."
|
|
701
|
+
elif e.response.status_code == 400:
|
|
702
|
+
error_message = "Google API bad request. Please check your API key and search engine ID."
|
|
703
|
+
elif e.response.status_code == 403:
|
|
704
|
+
error_message = "Google API access forbidden. Please check your API key permissions."
|
|
705
|
+
|
|
706
|
+
logger.error(error_message)
|
|
707
|
+
responses.append({"error": error_message})
|
|
708
|
+
except requests.exceptions.RequestException as e:
|
|
709
|
+
logger.error(f"Google search network error: {e}")
|
|
710
|
+
responses.append(
|
|
711
|
+
{"error": f"Network error during Google search: {e!s}"}
|
|
712
|
+
)
|
|
713
|
+
except ValueError as e:
|
|
714
|
+
logger.error(f"Google search response parsing error: {e}")
|
|
715
|
+
responses.append(
|
|
716
|
+
{"error": f"Failed to parse Google search response: {e!s}"}
|
|
717
|
+
)
|
|
637
718
|
except Exception as e:
|
|
638
|
-
|
|
719
|
+
logger.error(f"Unexpected error during Google search: {e}")
|
|
720
|
+
responses.append(
|
|
721
|
+
{"error": f"Unexpected error during Google search: {e!s}"}
|
|
722
|
+
)
|
|
639
723
|
return responses
|
|
640
724
|
|
|
641
725
|
def tavily_search(
|
|
@@ -1233,6 +1317,73 @@ class SearchToolkit(BaseToolkit):
|
|
|
1233
1317
|
f"search: {e!s}"
|
|
1234
1318
|
}
|
|
1235
1319
|
|
|
1320
|
+
@api_keys_required([(None, 'METASO_API_KEY')])
|
|
1321
|
+
def search_metaso(
|
|
1322
|
+
self,
|
|
1323
|
+
query: str,
|
|
1324
|
+
page: int = 1,
|
|
1325
|
+
include_summary: bool = False,
|
|
1326
|
+
include_raw_content: bool = False,
|
|
1327
|
+
concise_snippet: bool = False,
|
|
1328
|
+
scope: Literal[
|
|
1329
|
+
"webpage", "document", "scholar", "image", "video", "podcast"
|
|
1330
|
+
] = "webpage",
|
|
1331
|
+
) -> Dict[str, Any]:
|
|
1332
|
+
r"""Perform a web search using the metaso.cn API.
|
|
1333
|
+
|
|
1334
|
+
Args:
|
|
1335
|
+
query (str): The search query string.
|
|
1336
|
+
page (int): Page number. (default: :obj:`1`)
|
|
1337
|
+
include_summary (bool): Whether to include summary in the result.
|
|
1338
|
+
(default: :obj:`False`)
|
|
1339
|
+
include_raw_content (bool): Whether to include raw content in the
|
|
1340
|
+
result. (default: :obj:`False`)
|
|
1341
|
+
concise_snippet (bool): Whether to return concise snippet.
|
|
1342
|
+
(default: :obj:`False`)
|
|
1343
|
+
scope (Literal["webpage", "document", "scholar", "image", "video",
|
|
1344
|
+
"podcast"]): Search scope. (default: :obj:`"webpage"`)
|
|
1345
|
+
|
|
1346
|
+
Returns:
|
|
1347
|
+
Dict[str, Any]: Search results or error information.
|
|
1348
|
+
"""
|
|
1349
|
+
import http.client
|
|
1350
|
+
import json
|
|
1351
|
+
|
|
1352
|
+
# It is recommended to put the token in environment variable for
|
|
1353
|
+
# security
|
|
1354
|
+
|
|
1355
|
+
METASO_API_KEY = os.getenv("METASO_API_KEY")
|
|
1356
|
+
|
|
1357
|
+
conn = http.client.HTTPSConnection("metaso.cn")
|
|
1358
|
+
payload = json.dumps(
|
|
1359
|
+
{
|
|
1360
|
+
"q": query,
|
|
1361
|
+
"scope": scope,
|
|
1362
|
+
"includeSummary": include_summary,
|
|
1363
|
+
"page": str(page),
|
|
1364
|
+
"includeRawContent": include_raw_content,
|
|
1365
|
+
"conciseSnippet": concise_snippet,
|
|
1366
|
+
}
|
|
1367
|
+
)
|
|
1368
|
+
headers = {
|
|
1369
|
+
'Authorization': f'Bearer {METASO_API_KEY}',
|
|
1370
|
+
'Accept': 'application/json',
|
|
1371
|
+
'Content-Type': 'application/json',
|
|
1372
|
+
}
|
|
1373
|
+
try:
|
|
1374
|
+
conn.request("POST", "/api/v1/search", payload, headers)
|
|
1375
|
+
res = conn.getresponse()
|
|
1376
|
+
data = res.read()
|
|
1377
|
+
result = data.decode("utf-8")
|
|
1378
|
+
try:
|
|
1379
|
+
return json.loads(result)
|
|
1380
|
+
except Exception:
|
|
1381
|
+
return {
|
|
1382
|
+
"error": f"Metaso returned content could not be parsed: {result}"
|
|
1383
|
+
}
|
|
1384
|
+
except Exception as e:
|
|
1385
|
+
return {"error": f"Metaso search failed: {e}"}
|
|
1386
|
+
|
|
1236
1387
|
def get_tools(self) -> List[FunctionTool]:
|
|
1237
1388
|
r"""Returns a list of FunctionTool objects representing the
|
|
1238
1389
|
functions in the toolkit.
|
|
@@ -1253,4 +1404,5 @@ class SearchToolkit(BaseToolkit):
|
|
|
1253
1404
|
FunctionTool(self.search_bing),
|
|
1254
1405
|
FunctionTool(self.search_exa),
|
|
1255
1406
|
FunctionTool(self.search_alibaba_tongxiao),
|
|
1407
|
+
FunctionTool(self.search_metaso),
|
|
1256
1408
|
]
|
camel/types/enums.py
CHANGED
|
@@ -59,6 +59,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
59
59
|
AWS_LLAMA_3_2_11B_INSTRUCT = "us.meta.llama3-2-11b-instruct-v1:0"
|
|
60
60
|
AWS_CLAUDE_SONNET_4 = "anthropic.claude-sonnet-4-20250514-v1:0"
|
|
61
61
|
AWS_CLAUDE_OPUS_4 = "anthropic.claude-opus-4-20250514-v1:0"
|
|
62
|
+
AWS_CLAUDE_OPUS_4_1 = "anthropic.claude-opus-4-1-20250805-v1:0"
|
|
62
63
|
|
|
63
64
|
GLM_4 = "glm-4"
|
|
64
65
|
GLM_4V = "glm-4v"
|
|
@@ -91,6 +92,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
91
92
|
OPENROUTER_LLAMA_4_SCOUT = "meta-llama/llama-4-scout"
|
|
92
93
|
OPENROUTER_LLAMA_4_SCOUT_FREE = "meta-llama/llama-4-scout:free"
|
|
93
94
|
OPENROUTER_OLYMPICODER_7B = "open-r1/olympiccoder-7b:free"
|
|
95
|
+
OPENROUTER_HORIZON_ALPHA = "openrouter/horizon-alpha"
|
|
94
96
|
|
|
95
97
|
# LMStudio models
|
|
96
98
|
LMSTUDIO_GEMMA_3_1B = "gemma-3-1b"
|
|
@@ -157,6 +159,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
157
159
|
CLAUDE_3_7_SONNET = "claude-3-7-sonnet-latest"
|
|
158
160
|
CLAUDE_SONNET_4 = "claude-sonnet-4-20250514"
|
|
159
161
|
CLAUDE_OPUS_4 = "claude-opus-4-20250514"
|
|
162
|
+
CLAUDE_OPUS_4_1 = "claude-opus-4-1-20250805"
|
|
160
163
|
|
|
161
164
|
# Netmind models
|
|
162
165
|
NETMIND_LLAMA_4_MAVERICK_17B_128E_INSTRUCT = (
|
|
@@ -513,6 +516,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
513
516
|
ModelType.AWS_LLAMA_3_2_11B_INSTRUCT,
|
|
514
517
|
ModelType.AWS_CLAUDE_SONNET_4,
|
|
515
518
|
ModelType.AWS_CLAUDE_OPUS_4,
|
|
519
|
+
ModelType.AWS_CLAUDE_OPUS_4_1,
|
|
516
520
|
}
|
|
517
521
|
|
|
518
522
|
@property
|
|
@@ -577,6 +581,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
577
581
|
ModelType.CLAUDE_3_7_SONNET,
|
|
578
582
|
ModelType.CLAUDE_SONNET_4,
|
|
579
583
|
ModelType.CLAUDE_OPUS_4,
|
|
584
|
+
ModelType.CLAUDE_OPUS_4_1,
|
|
580
585
|
}
|
|
581
586
|
|
|
582
587
|
@property
|
|
@@ -603,6 +608,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
603
608
|
ModelType.OPENROUTER_LLAMA_4_SCOUT,
|
|
604
609
|
ModelType.OPENROUTER_LLAMA_4_SCOUT_FREE,
|
|
605
610
|
ModelType.OPENROUTER_OLYMPICODER_7B,
|
|
611
|
+
ModelType.OPENROUTER_HORIZON_ALPHA,
|
|
606
612
|
}
|
|
607
613
|
|
|
608
614
|
@property
|
|
@@ -1262,6 +1268,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
1262
1268
|
ModelType.CLAUDE_3_7_SONNET,
|
|
1263
1269
|
ModelType.CLAUDE_SONNET_4,
|
|
1264
1270
|
ModelType.CLAUDE_OPUS_4,
|
|
1271
|
+
ModelType.CLAUDE_OPUS_4_1,
|
|
1265
1272
|
ModelType.YI_MEDIUM_200K,
|
|
1266
1273
|
ModelType.AWS_CLAUDE_3_5_SONNET,
|
|
1267
1274
|
ModelType.AWS_CLAUDE_3_HAIKU,
|
|
@@ -1269,6 +1276,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
1269
1276
|
ModelType.AWS_CLAUDE_3_7_SONNET,
|
|
1270
1277
|
ModelType.AWS_CLAUDE_SONNET_4,
|
|
1271
1278
|
ModelType.AWS_CLAUDE_OPUS_4,
|
|
1279
|
+
ModelType.AWS_CLAUDE_OPUS_4_1,
|
|
1272
1280
|
ModelType.O4_MINI,
|
|
1273
1281
|
ModelType.O3,
|
|
1274
1282
|
}:
|
|
@@ -1276,6 +1284,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
1276
1284
|
elif self in {
|
|
1277
1285
|
ModelType.MISTRAL_CODESTRAL_MAMBA,
|
|
1278
1286
|
ModelType.OPENROUTER_LLAMA_4_MAVERICK_FREE,
|
|
1287
|
+
ModelType.OPENROUTER_HORIZON_ALPHA,
|
|
1279
1288
|
}:
|
|
1280
1289
|
return 256_000
|
|
1281
1290
|
|
camel/utils/mcp.py
CHANGED
|
@@ -106,11 +106,11 @@ class MCPServer:
|
|
|
106
106
|
"""
|
|
107
107
|
from mcp.server.fastmcp import FastMCP
|
|
108
108
|
|
|
109
|
-
from camel.toolkits.base import BaseToolkit
|
|
110
|
-
|
|
111
109
|
original_init = cls.__init__
|
|
112
110
|
|
|
113
111
|
def new_init(instance, *args, **kwargs):
|
|
112
|
+
from camel.toolkits.base import BaseToolkit
|
|
113
|
+
|
|
114
114
|
original_init(instance, *args, **kwargs)
|
|
115
115
|
self.server_name = self.server_name or cls.__name__
|
|
116
116
|
instance.mcp = FastMCP(self.server_name)
|
camel/utils/token_counting.py
CHANGED
|
@@ -280,15 +280,26 @@ class OpenAITokenCounter(BaseTokenCounter):
|
|
|
280
280
|
|
|
281
281
|
class AnthropicTokenCounter(BaseTokenCounter):
|
|
282
282
|
@dependencies_required('anthropic')
|
|
283
|
-
def __init__(
|
|
283
|
+
def __init__(
|
|
284
|
+
self,
|
|
285
|
+
model: str,
|
|
286
|
+
api_key: Optional[str] = None,
|
|
287
|
+
base_url: Optional[str] = None,
|
|
288
|
+
):
|
|
284
289
|
r"""Constructor for the token counter for Anthropic models.
|
|
285
290
|
|
|
286
291
|
Args:
|
|
287
292
|
model (str): The name of the Anthropic model being used.
|
|
293
|
+
api_key (Optional[str], optional): The API key for authenticating
|
|
294
|
+
with the Anthropic service. If not provided, it will use the
|
|
295
|
+
ANTHROPIC_API_KEY environment variable. (default: :obj:`None`)
|
|
296
|
+
base_url (Optional[str], optional): The URL of the Anthropic
|
|
297
|
+
service. If not provided, it will use the default Anthropic
|
|
298
|
+
URL. (default: :obj:`None`)
|
|
288
299
|
"""
|
|
289
300
|
from anthropic import Anthropic
|
|
290
301
|
|
|
291
|
-
self.client = Anthropic()
|
|
302
|
+
self.client = Anthropic(api_key=api_key, base_url=base_url)
|
|
292
303
|
self.model = model
|
|
293
304
|
|
|
294
305
|
@dependencies_required('anthropic')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: camel-ai
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.75a0
|
|
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
|
|
@@ -32,7 +32,7 @@ Requires-Dist: azure-storage-blob<13,>=12.21.0; extra == 'all'
|
|
|
32
32
|
Requires-Dist: beautifulsoup4<5,>=4; extra == 'all'
|
|
33
33
|
Requires-Dist: botocore<2,>=1.35.3; extra == 'all'
|
|
34
34
|
Requires-Dist: chromadb<1.0.0,>=0.6.0; extra == 'all'
|
|
35
|
-
Requires-Dist: chunkr-ai
|
|
35
|
+
Requires-Dist: chunkr-ai<0.1.0,>=0.0.50; extra == 'all'
|
|
36
36
|
Requires-Dist: cohere<6,>=5.11.0; extra == 'all'
|
|
37
37
|
Requires-Dist: crawl4ai>=0.4.0; extra == 'all'
|
|
38
38
|
Requires-Dist: dappier<0.4,>=0.3.3; extra == 'all'
|
|
@@ -206,7 +206,7 @@ Requires-Dist: sphinx<8,>=7; extra == 'docs'
|
|
|
206
206
|
Requires-Dist: sphinxext-rediraffe<0.3,>=0.2.7; extra == 'docs'
|
|
207
207
|
Provides-Extra: document-tools
|
|
208
208
|
Requires-Dist: beautifulsoup4<5,>=4; extra == 'document-tools'
|
|
209
|
-
Requires-Dist: chunkr-ai
|
|
209
|
+
Requires-Dist: chunkr-ai<0.1.0,>=0.0.50; extra == 'document-tools'
|
|
210
210
|
Requires-Dist: crawl4ai>=0.3.745; extra == 'document-tools'
|
|
211
211
|
Requires-Dist: docx2txt<0.9,>=0.8; extra == 'document-tools'
|
|
212
212
|
Requires-Dist: docx>=0.2.4; extra == 'document-tools'
|
|
@@ -227,8 +227,8 @@ Requires-Dist: xls2xlsx>=0.2.0; extra == 'document-tools'
|
|
|
227
227
|
Provides-Extra: eigent
|
|
228
228
|
Requires-Dist: aci-sdk>=1.0.0b1; extra == 'eigent'
|
|
229
229
|
Requires-Dist: anthropic<0.50.0,>=0.47.0; extra == 'eigent'
|
|
230
|
+
Requires-Dist: chunkr-ai<0.1.0,>=0.0.50; extra == 'eigent'
|
|
230
231
|
Requires-Dist: chunkr-ai>=0.0.41; extra == 'eigent'
|
|
231
|
-
Requires-Dist: chunkr-ai>=0.0.50; extra == 'eigent'
|
|
232
232
|
Requires-Dist: crawl4ai>=0.3.745; extra == 'eigent'
|
|
233
233
|
Requires-Dist: datasets<4,>=3; extra == 'eigent'
|
|
234
234
|
Requires-Dist: docx>=0.2.4; extra == 'eigent'
|
|
@@ -286,8 +286,8 @@ Provides-Extra: owl
|
|
|
286
286
|
Requires-Dist: aci-sdk>=1.0.0b1; extra == 'owl'
|
|
287
287
|
Requires-Dist: anthropic<0.50.0,>=0.47.0; extra == 'owl'
|
|
288
288
|
Requires-Dist: beautifulsoup4<5,>=4; extra == 'owl'
|
|
289
|
+
Requires-Dist: chunkr-ai<0.1.0,>=0.0.50; extra == 'owl'
|
|
289
290
|
Requires-Dist: chunkr-ai>=0.0.41; extra == 'owl'
|
|
290
|
-
Requires-Dist: chunkr-ai>=0.0.50; extra == 'owl'
|
|
291
291
|
Requires-Dist: crawl4ai>=0.3.745; extra == 'owl'
|
|
292
292
|
Requires-Dist: datasets<4,>=3; extra == 'owl'
|
|
293
293
|
Requires-Dist: docx2txt<0.9,>=0.8; extra == 'owl'
|
|
@@ -335,7 +335,7 @@ Requires-Dist: xls2xlsx>=0.2.0; extra == 'owl'
|
|
|
335
335
|
Requires-Dist: yt-dlp<2025,>=2024.11.4; extra == 'owl'
|
|
336
336
|
Provides-Extra: rag
|
|
337
337
|
Requires-Dist: chromadb<1.0.0,>=0.6.0; extra == 'rag'
|
|
338
|
-
Requires-Dist: chunkr-ai
|
|
338
|
+
Requires-Dist: chunkr-ai<0.1.0,>=0.0.50; extra == 'rag'
|
|
339
339
|
Requires-Dist: cohere<6,>=5.11.0; extra == 'rag'
|
|
340
340
|
Requires-Dist: crawl4ai>=0.3.745; extra == 'rag'
|
|
341
341
|
Requires-Dist: faiss-cpu<2,>=1.7.2; extra == 'rag'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
camel/__init__.py,sha256=
|
|
1
|
+
camel/__init__.py,sha256=ZL8kyz2leHtcCUSj1kezLiqKMrsRPPabrpaGy_1tv14,901
|
|
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
|
|
@@ -133,7 +133,7 @@ camel/extractors/python_strategies.py,sha256=zHAkshnO9o-uvLtCuVOCKoA2PzetBTnkNx1
|
|
|
133
133
|
camel/interpreters/__init__.py,sha256=NOQUsg7gR84zO8nBXu4JGUatsxSDJqZS6otltjXfop4,1265
|
|
134
134
|
camel/interpreters/base.py,sha256=J3DVt_dGzq1v09-gn8j2XRgEM2WoPrhKFyH9koAjkCU,2281
|
|
135
135
|
camel/interpreters/docker_interpreter.py,sha256=h5BLl6Hs6GIH1teAFfax2OBOMvs7lpBY1zzXP9S0JM8,11372
|
|
136
|
-
camel/interpreters/e2b_interpreter.py,sha256=
|
|
136
|
+
camel/interpreters/e2b_interpreter.py,sha256=9RxWgHBPYP1m5A6nZLXaKTLyBITw1ozjVceL3_q8X4s,6519
|
|
137
137
|
camel/interpreters/internal_python_interpreter.py,sha256=HjCIfB-HYv2cJz6nUg_8w53zHFB7DwSycqr7H22O_RI,24806
|
|
138
138
|
camel/interpreters/interpreter_error.py,sha256=uEhcmHmmcajt5C9PLeHs21h1fE6cmyt23tCAGie1kTA,880
|
|
139
139
|
camel/interpreters/ipython_interpreter.py,sha256=V-Z_nIwaKmmivv_gD6nwdzmqfBUW4IoN4vZ0IOaUTZU,6582
|
|
@@ -174,49 +174,49 @@ camel/messages/conversion/sharegpt/hermes/__init__.py,sha256=mxuMSm-neaTgInIjYXu
|
|
|
174
174
|
camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py,sha256=-9TT8iOQ-ieKSKR_PmJSA5Bi0uBx-qR7WQ6vxuFkorM,4639
|
|
175
175
|
camel/models/__init__.py,sha256=leNjmPCEeO8jZAvY8op1XeFPMuSnF349buZRGCE3aBU,3385
|
|
176
176
|
camel/models/_utils.py,sha256=hob1ehnS5xZitMCdYToHVgaTB55JnaP4_DSWnTEfVsg,2045
|
|
177
|
-
camel/models/aiml_model.py,sha256=
|
|
178
|
-
camel/models/anthropic_model.py,sha256=
|
|
179
|
-
camel/models/aws_bedrock_model.py,sha256=
|
|
180
|
-
camel/models/azure_openai_model.py,sha256
|
|
177
|
+
camel/models/aiml_model.py,sha256=jmkQlqA7NkDXn2xN-98wtanI2KHbcMWQwNPjc38wyLI,3507
|
|
178
|
+
camel/models/anthropic_model.py,sha256=GlerIhIc7uGhzIsQoZw-_8CGOdcZT8DC_95V3hx3q-4,8350
|
|
179
|
+
camel/models/aws_bedrock_model.py,sha256=0JdsLxfi-coI8LtSPNewsaeR43CwC0qG2Gm_iY-ZCdo,4073
|
|
180
|
+
camel/models/azure_openai_model.py,sha256=MSjb5E3b6BHQg896P-Mj00Q0xPq0ibi0tO2T87Fj25s,17802
|
|
181
181
|
camel/models/base_audio_model.py,sha256=_VUWh1L3rh8mldNvM5R6jBOKtvmTeBKJyRxAdPJmPlY,3324
|
|
182
|
-
camel/models/base_model.py,sha256=
|
|
183
|
-
camel/models/cohere_model.py,sha256=
|
|
184
|
-
camel/models/crynux_model.py,sha256=
|
|
185
|
-
camel/models/deepseek_model.py,sha256=
|
|
182
|
+
camel/models/base_model.py,sha256=82MVxlWQXEN_gmVTgbAr0vP02opn0bn8pDK6K-3OtQE,19128
|
|
183
|
+
camel/models/cohere_model.py,sha256=9H2F8bjwxPgwSwgPPRoOy090dQKBboQxnlk-94FoDIk,16719
|
|
184
|
+
camel/models/crynux_model.py,sha256=rslcj7FbbeKZzYS2n23fEe5Ua77FY1gXmUAy6TBY2Yw,3545
|
|
185
|
+
camel/models/deepseek_model.py,sha256=qk5RrzYddKn3usddsB9NsRG5UfNR-dh2Ymwqw-NsYNs,10432
|
|
186
186
|
camel/models/fish_audio_model.py,sha256=RCwORRIdCbjZXWWjjctpksPI2DnS0b68JjxunHBQ1xk,5981
|
|
187
|
-
camel/models/gemini_model.py,sha256=
|
|
188
|
-
camel/models/groq_model.py,sha256=
|
|
189
|
-
camel/models/internlm_model.py,sha256=
|
|
190
|
-
camel/models/litellm_model.py,sha256=
|
|
191
|
-
camel/models/lmstudio_model.py,sha256=
|
|
192
|
-
camel/models/mistral_model.py,sha256=
|
|
187
|
+
camel/models/gemini_model.py,sha256=K8Ldi5g_6tXHJs2A0so-6-4OQESwtnwDj59SC3KTAo0,13658
|
|
188
|
+
camel/models/groq_model.py,sha256=veNsJ0U3EZicoTgSfoxK_jFqvibn-p0mMSFma8_2TO8,3458
|
|
189
|
+
camel/models/internlm_model.py,sha256=_P0ehH7TkMRgXzq8XhTD1Xppb09ycX1aZjop6psnLtw,4108
|
|
190
|
+
camel/models/litellm_model.py,sha256=NL2sGsBmSwh3e5cbx11ovv9Bw-OY7tBA3DvYy1BcpAY,7922
|
|
191
|
+
camel/models/lmstudio_model.py,sha256=MEc3pRYhpv2UmhnXJ1wjFHxjZFzFFAZ0jOECZ46EM4I,3362
|
|
192
|
+
camel/models/mistral_model.py,sha256=m8ssQ04bWSevkexXNj4MJ_IcJb1HCxaEFx-oCt3dSNs,15430
|
|
193
193
|
camel/models/model_factory.py,sha256=8b-LEXovPnpmD3GFKOdbtcgjCwpa91IPCJxikPxhdMs,12114
|
|
194
194
|
camel/models/model_manager.py,sha256=ln3bCV_QWM3V5BrwKwjmxIeRN8ojIvPEBMMHun0MliU,9942
|
|
195
|
-
camel/models/modelscope_model.py,sha256=
|
|
196
|
-
camel/models/moonshot_model.py,sha256=
|
|
197
|
-
camel/models/nemotron_model.py,sha256=
|
|
198
|
-
camel/models/netmind_model.py,sha256=
|
|
199
|
-
camel/models/novita_model.py,sha256=
|
|
200
|
-
camel/models/nvidia_model.py,sha256=
|
|
201
|
-
camel/models/ollama_model.py,sha256=
|
|
195
|
+
camel/models/modelscope_model.py,sha256=OgZiFi2XBrElRZ8fqBZiqyXDeS5msTWejn1vuTARKYg,10211
|
|
196
|
+
camel/models/moonshot_model.py,sha256=S83DyBOmIuuTAkmJSdFFLHZldKygMryA_xmx8CvqRIg,7079
|
|
197
|
+
camel/models/nemotron_model.py,sha256=onAFWR7pbAFbqhx68LelUPIyQb9r6yMvXWJYWwq3qkA,2952
|
|
198
|
+
camel/models/netmind_model.py,sha256=wfI3XUxiIa3aZbBN1WJDkZBbixfa2SUX1ouvGlMLKKA,3698
|
|
199
|
+
camel/models/novita_model.py,sha256=9rmiAShSQOIxTzdhxZaI7Xw1ZQkYeQ-yiL1VmIWqsWc,3665
|
|
200
|
+
camel/models/nvidia_model.py,sha256=C26XCUQRe2O7ySGIqTihySovDHRk19WN0GOsSHupYQE,3510
|
|
201
|
+
camel/models/ollama_model.py,sha256=UO6NObVwGfl6GulZ0K-hRUI2o13nqUHz7dIEQ6RhUUQ,4160
|
|
202
202
|
camel/models/openai_audio_models.py,sha256=BSixkXlc8xirQLl2qCla-g6_y9wDLnMZVHukHrhzw98,13344
|
|
203
|
-
camel/models/openai_compatible_model.py,sha256=
|
|
204
|
-
camel/models/openai_model.py,sha256=
|
|
205
|
-
camel/models/openrouter_model.py,sha256=
|
|
206
|
-
camel/models/ppio_model.py,sha256=
|
|
207
|
-
camel/models/qianfan_model.py,sha256=
|
|
208
|
-
camel/models/qwen_model.py,sha256=
|
|
209
|
-
camel/models/reka_model.py,sha256=
|
|
210
|
-
camel/models/samba_model.py,sha256=
|
|
211
|
-
camel/models/sglang_model.py,sha256=
|
|
212
|
-
camel/models/siliconflow_model.py,sha256=
|
|
213
|
-
camel/models/stub_model.py,sha256=
|
|
214
|
-
camel/models/togetherai_model.py,sha256=
|
|
215
|
-
camel/models/vllm_model.py,sha256=
|
|
216
|
-
camel/models/volcano_model.py,sha256=
|
|
217
|
-
camel/models/watsonx_model.py,sha256=
|
|
218
|
-
camel/models/yi_model.py,sha256=
|
|
219
|
-
camel/models/zhipuai_model.py,sha256
|
|
203
|
+
camel/models/openai_compatible_model.py,sha256=6racVSQlKeB4-0sHdDdkc_XEhPLBoij0kgdQcxEmQq4,16865
|
|
204
|
+
camel/models/openai_model.py,sha256=DRWw8rqZmTeRJFvQh1PGfxNWHF1Qt9AM3Qz92mjbPNU,19782
|
|
205
|
+
camel/models/openrouter_model.py,sha256=V1DKBPoYJ6oCDDBqNK0RrK2JWq4oOWlbo3qu0lT4CbA,3514
|
|
206
|
+
camel/models/ppio_model.py,sha256=G559Seb4KLU4FlYgSQ2UD_A6xOacX0eL6DrE_Hhmpv0,3645
|
|
207
|
+
camel/models/qianfan_model.py,sha256=NI899k8p_N-70zmQFTwf08S_--8_-69iJgjvjXH1UYA,3714
|
|
208
|
+
camel/models/qwen_model.py,sha256=oEXGUpG7-M2DK_EB1yEhsscg_UJT9KrnOI90EYx60dQ,10039
|
|
209
|
+
camel/models/reka_model.py,sha256=k5H8d9kTOVRMPVVX23UywjSSPORaK1C2fS026vihQWU,12505
|
|
210
|
+
camel/models/samba_model.py,sha256=3UmvK960AZL6OtScIgiqWhSOMoPvCeFX5DtPuale888,24401
|
|
211
|
+
camel/models/sglang_model.py,sha256=0u1YT9u6LvqQ6LVoBvn2luCdZMsdKDMvxyL4-we0uXE,16832
|
|
212
|
+
camel/models/siliconflow_model.py,sha256=9dXXFF9ymx5kI1fOTLodJpJaA98YK_KDGHT5RHaO1DQ,4151
|
|
213
|
+
camel/models/stub_model.py,sha256=Gfyw5BI_g-vIOb4XgBSAMXR2ZDpf7skzz9D1h0LOviM,5956
|
|
214
|
+
camel/models/togetherai_model.py,sha256=gKAQV-PjDEved9lqxdmbe3WkWqyNsivUMT_HSZbJZsw,3661
|
|
215
|
+
camel/models/vllm_model.py,sha256=PwotGvmYo0zNsY5WVfd1R8IgCt2oQHO7ccmnlqVyDCs,4233
|
|
216
|
+
camel/models/volcano_model.py,sha256=joWFRGbsEpHFzRYRF7nv91mVADe-Y77NozEhfCnevSo,3375
|
|
217
|
+
camel/models/watsonx_model.py,sha256=24sN5vrniwNI2mPjcByyF4tArFiwqo1FnyRQ1L5yPbE,10876
|
|
218
|
+
camel/models/yi_model.py,sha256=exlJCQkUu2_Gx7qDwo3yBf6RrL6h8yMFRFMq6AXLwew,3506
|
|
219
|
+
camel/models/zhipuai_model.py,sha256=k8Xu4Y7JvGhBUApbf3BxMnIQ0K-xLyM4DvYWrHpjoQY,3573
|
|
220
220
|
camel/models/reward/__init__.py,sha256=MqPN6wXh7Y1SoeNoFlYaMG6xHzLG0CYsv_3kB2atIQk,984
|
|
221
221
|
camel/models/reward/base_reward_model.py,sha256=erCmBCl51oFNjEHCXWxdHKIPNVJnQlNGgYBDn2bFD-Q,2064
|
|
222
222
|
camel/models/reward/evaluator.py,sha256=54ev5MuQ_5Tp0-LGO59EIuIkGrVMbtXXqpBR5Ps9kCM,2426
|
|
@@ -371,7 +371,7 @@ camel/toolkits/pyautogui_toolkit.py,sha256=Q810fm8cFvElRory7B74aqS2YV6BOpdRE6jke
|
|
|
371
371
|
camel/toolkits/reddit_toolkit.py,sha256=x0XAT1zQJVNHUr1R1HwWCgIlkamU-kPmbfb_H1WIv-w,8036
|
|
372
372
|
camel/toolkits/retrieval_toolkit.py,sha256=BKjEyOqW3cGEPTS5yHPYb-Qg795iNNPIs1wjowfuq3U,3825
|
|
373
373
|
camel/toolkits/screenshot_toolkit.py,sha256=IwfvfLSfqrEywvPlDbtYJe1qcbrO5uC3Mxxv87VYveo,8237
|
|
374
|
-
camel/toolkits/search_toolkit.py,sha256=
|
|
374
|
+
camel/toolkits/search_toolkit.py,sha256=nco3_EQhYz4S_RupWTgcH5r5-nH-K0f6WAwUZ4DteXc,57654
|
|
375
375
|
camel/toolkits/searxng_toolkit.py,sha256=a2GtE4FGSrmaIVvX6Yide-abBYD1wsHqitnDlx9fdVg,7664
|
|
376
376
|
camel/toolkits/semantic_scholar_toolkit.py,sha256=Rh7eA_YPxV5pvPIzhjjvpr3vtlaCniJicrqzkPWW9_I,11634
|
|
377
377
|
camel/toolkits/slack_toolkit.py,sha256=iBVkDIpfsR5QwaNCqA4O4UkCwpdLhJjYCA8Gka7U9e8,12050
|
|
@@ -389,29 +389,29 @@ camel/toolkits/whatsapp_toolkit.py,sha256=udUQXkXyeWsmrUlOJZsGBhHtc_jhB05Axe_Tch
|
|
|
389
389
|
camel/toolkits/wolfram_alpha_toolkit.py,sha256=qeIM8ySn5ilcExBWtx-hDOc35bNcebLVnZ67kt1H3mQ,9295
|
|
390
390
|
camel/toolkits/zapier_toolkit.py,sha256=A83y1UcfuopH7Fx82pORzypl1StbhBjB2HhyOqYa300,7124
|
|
391
391
|
camel/toolkits/hybrid_browser_toolkit/__init__.py,sha256=vxjWhq7GjUKE5I9RGQU_GoikZJ-AVK4ertdvEqp9pd0,802
|
|
392
|
-
camel/toolkits/hybrid_browser_toolkit/config_loader.py,sha256=
|
|
392
|
+
camel/toolkits/hybrid_browser_toolkit/config_loader.py,sha256=yUmbmt-TWLbCyxGa63lVJ47KRdZsEJI6-2y3x0SfdBM,7040
|
|
393
393
|
camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py,sha256=gotOOlXJjfjv9Qnn89PLNhJ4_Rw_aMMU6gTJcG-uCf8,7938
|
|
394
|
-
camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py,sha256=
|
|
395
|
-
camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py,sha256=
|
|
394
|
+
camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py,sha256=OXvXTRJMqS4tQqrOeNbK4EVv3meO8I8bfz_3azSJFZA,53547
|
|
395
|
+
camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py,sha256=UJFxHuGBJR3C9UmtWoC_F2bm_Uwnf9EurhkSseAqrBI,21888
|
|
396
396
|
camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json,sha256=_-YE9S_C1XT59A6upQp9lLuZcC67cV9QlbwAsEKkfyw,156337
|
|
397
397
|
camel/toolkits/hybrid_browser_toolkit/ts/package.json,sha256=pUQm0xwXR7ZyWNv6O2QtHW00agnfAoX9F_XGXZlAxl4,745
|
|
398
398
|
camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json,sha256=SwpQnq4Q-rwRobF2iWrP96mgmgwaVPZEv-nii5QIYEU,523
|
|
399
|
-
camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js,sha256=
|
|
399
|
+
camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js,sha256=qj8Rr7bl17yciJ0ndB-rVsm25LxVUk3Mk_Kft_Z2p2o,9387
|
|
400
400
|
camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js,sha256=NNwM_H2xaDrlrdac0PJK1iUBwdiuQsg9qKaMhHAvZuI,3160
|
|
401
|
-
camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts,sha256=
|
|
402
|
-
camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts,sha256=
|
|
403
|
-
camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts,sha256=
|
|
401
|
+
camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts,sha256=e-epyloFdIOHWKXL-mTeeHxmRssMHs2E7mP9qRzFAgM,38704
|
|
402
|
+
camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts,sha256=xt5dyj-6LK7T8IRSQ4sb4RBvD-xYPG68vWKqCET1QU4,6235
|
|
403
|
+
camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts,sha256=RFfmwYWmHd9VJkXQPaONiqbqKp652c17T0YKo4RFYBY,19708
|
|
404
404
|
camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts,sha256=uJGHmGs640iCrjllqXDXwDE4hGW1VJA2YL6BkFkzYNs,353
|
|
405
|
-
camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts,sha256=
|
|
405
|
+
camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts,sha256=ZT_5P9tun4ZCasIlDSS2tBTtpiI2DfcD4kOIpmXjrDw,2801
|
|
406
406
|
camel/toolkits/hybrid_browser_toolkit_py/__init__.py,sha256=tPQloCw-Ayl1lPfyvzGJkMFa1ze3ilXJq_1Oz5jg5s4,796
|
|
407
|
-
camel/toolkits/hybrid_browser_toolkit_py/actions.py,sha256=
|
|
407
|
+
camel/toolkits/hybrid_browser_toolkit_py/actions.py,sha256=S77VLL9hOq5M2RdPQrIAgjxinwS2ETd6kH6m6vtub5o,20935
|
|
408
408
|
camel/toolkits/hybrid_browser_toolkit_py/agent.py,sha256=0ifwhYUDJ5GLxfdpC5KquPaW1a0QBAutp2Y9y0YFujw,11685
|
|
409
|
-
camel/toolkits/hybrid_browser_toolkit_py/browser_session.py,sha256=
|
|
410
|
-
camel/toolkits/hybrid_browser_toolkit_py/config_loader.py,sha256=
|
|
411
|
-
camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py,sha256=
|
|
412
|
-
camel/toolkits/hybrid_browser_toolkit_py/snapshot.py,sha256=
|
|
409
|
+
camel/toolkits/hybrid_browser_toolkit_py/browser_session.py,sha256=BZrbUrGcbLbI2TjaS5WSCn2SIMFW1k0bK_53A4cZYI4,28687
|
|
410
|
+
camel/toolkits/hybrid_browser_toolkit_py/config_loader.py,sha256=wFiEJhCBlDTQvl6FxXONX8kvJz5EzzGht2gQEk0RY6g,16723
|
|
411
|
+
camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py,sha256=3JW-cocFn2QZR_SRHjUxwU7Jr1CIo9nhDMrx178HAnE,91755
|
|
412
|
+
camel/toolkits/hybrid_browser_toolkit_py/snapshot.py,sha256=zVd8FVeF_H-2z3d2xOMandylT6N421yfRmxUZegLYaQ,8706
|
|
413
413
|
camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js,sha256=z4XRSVUpAS87Sj36s3bY8XXhvRcHBlgsUOyMxV2HI80,27650
|
|
414
|
-
camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js,sha256=
|
|
414
|
+
camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js,sha256=1FFw0J1h65_WZ3IqMhiuzcLG-qJ2BKlAMcBQdJi6fxI,42285
|
|
415
415
|
camel/toolkits/open_api_specs/security_config.py,sha256=ZVnBa_zEifaE_ao2xsvV5majuJHpn2Tn7feMDOnj-eo,898
|
|
416
416
|
camel/toolkits/open_api_specs/biztoc/__init__.py,sha256=OKCZrQCDwaWtXIN_2rA9FSqEvgpQRieRoHh7Ek6N16A,702
|
|
417
417
|
camel/toolkits/open_api_specs/biztoc/ai-plugin.json,sha256=IJinQbLv5MFPGFwdN7PbOhwArFVExSEZdJspe-mOBIo,866
|
|
@@ -438,7 +438,7 @@ camel/toolkits/open_api_specs/web_scraper/openapi.yaml,sha256=u_WalQ01e8W1D27VnZ
|
|
|
438
438
|
camel/toolkits/open_api_specs/web_scraper/paths/__init__.py,sha256=OKCZrQCDwaWtXIN_2rA9FSqEvgpQRieRoHh7Ek6N16A,702
|
|
439
439
|
camel/toolkits/open_api_specs/web_scraper/paths/scraper.py,sha256=aWy1_ppV4NVVEZfnbN3tu9XA9yAPAC9bRStJ5JuXMRU,1117
|
|
440
440
|
camel/types/__init__.py,sha256=pFTg3CWGSCfwFdoxPDTf4dKV8DdJS1x-bBPuEOmtdf0,2549
|
|
441
|
-
camel/types/enums.py,sha256=
|
|
441
|
+
camel/types/enums.py,sha256=5iIyQ2ZBGovKkRUahwJK8oG4FuOyyZGlmFYyS5s6HvY,63674
|
|
442
442
|
camel/types/mcp_registries.py,sha256=dl4LgYtSaUhsqAKpz28k_SA9La11qxqBvDLaEuyzrFE,4971
|
|
443
443
|
camel/types/openai_types.py,sha256=8ZFzLe-zGmKNPfuVZFzxlxAX98lGf18gtrPhOgMmzus,2104
|
|
444
444
|
camel/types/unified_model_type.py,sha256=U3NUZux7QuMIxPW2H0qDp9BOyDJFHAx6jUmDNw5_9KM,5912
|
|
@@ -451,11 +451,11 @@ camel/utils/constants.py,sha256=cqnxmpUeOwrtsR-tRO4bbOc6ZP19TLj7avjm3FONMJs,1410
|
|
|
451
451
|
camel/utils/deduplication.py,sha256=UHikAtOW1TTDunf2t_wa2kFbmkrXWf7HfOKwLvwCxzo,8958
|
|
452
452
|
camel/utils/filename.py,sha256=HYNc1wbSCgNR1CN21cwHxdAhpnsf5ySJ6jUDfeqOK20,2532
|
|
453
453
|
camel/utils/langfuse.py,sha256=OowR6A790XG-b0UHiTYduYvS18PvSGFdmqki2Poogo0,8578
|
|
454
|
-
camel/utils/mcp.py,sha256=
|
|
454
|
+
camel/utils/mcp.py,sha256=igLAww4tB2Oippb5nlfhWoj6TI6Td5boKfpoxkxZlQI,5081
|
|
455
455
|
camel/utils/mcp_client.py,sha256=o-EPdJ5EL5M9sjkSADvLBz9IoHhtXteKGidauIxw3ps,37584
|
|
456
456
|
camel/utils/message_summarizer.py,sha256=7AvPDlevle5uU3mXtfvSFS--nDjp9yqfrf546qTe9rE,5939
|
|
457
457
|
camel/utils/response_format.py,sha256=xZcx6xBxeg3A0e7R0JCMJdNm2oQ1-diqVLs0JsiCkZU,5319
|
|
458
|
-
camel/utils/token_counting.py,sha256=
|
|
458
|
+
camel/utils/token_counting.py,sha256=l7gNU5Ggksusj0ZVH5u1Xr4Mx5YVrdwnSqSKXDVxit0,18084
|
|
459
459
|
camel/utils/tool_result.py,sha256=0dKMb22cwuxnjeO4K9wbM4gwwPHV1yfoSJquLTUJVXs,1813
|
|
460
460
|
camel/utils/chunker/__init__.py,sha256=6iN6HL6sblIjDuJTILk-9qKcHBZ97t8b6tZCWPZ0OYI,899
|
|
461
461
|
camel/utils/chunker/base.py,sha256=9CuqymFCRncyAdEST-IcRonB732YAPhusznqH-RES3E,960
|
|
@@ -467,7 +467,7 @@ camel/verifiers/math_verifier.py,sha256=tA1D4S0sm8nsWISevxSN0hvSVtIUpqmJhzqfbuMo
|
|
|
467
467
|
camel/verifiers/models.py,sha256=GdxYPr7UxNrR1577yW4kyroRcLGfd-H1GXgv8potDWU,2471
|
|
468
468
|
camel/verifiers/physics_verifier.py,sha256=c1grrRddcrVN7szkxhv2QirwY9viIRSITWeWFF5HmLs,30187
|
|
469
469
|
camel/verifiers/python_verifier.py,sha256=ogTz77wODfEcDN4tMVtiSkRQyoiZbHPY2fKybn59lHw,20558
|
|
470
|
-
camel_ai-0.2.
|
|
471
|
-
camel_ai-0.2.
|
|
472
|
-
camel_ai-0.2.
|
|
473
|
-
camel_ai-0.2.
|
|
470
|
+
camel_ai-0.2.75a0.dist-info/METADATA,sha256=D_Q2rnHl_K05FdNr9TPHLnN6pY3FrdyQmWx0jlcJOyU,52221
|
|
471
|
+
camel_ai-0.2.75a0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
472
|
+
camel_ai-0.2.75a0.dist-info/licenses/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
|
|
473
|
+
camel_ai-0.2.75a0.dist-info/RECORD,,
|