camel-ai 0.2.12__py3-none-any.whl → 0.2.13__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 (42) hide show
  1. camel/__init__.py +1 -1
  2. camel/agents/chat_agent.py +1 -1
  3. camel/embeddings/openai_compatible_embedding.py +1 -1
  4. camel/embeddings/openai_embedding.py +1 -1
  5. camel/messages/base.py +5 -5
  6. camel/models/__init__.py +2 -0
  7. camel/models/anthropic_model.py +1 -1
  8. camel/models/azure_openai_model.py +1 -1
  9. camel/models/deepseek_model.py +1 -1
  10. camel/models/fish_audio_model.py +146 -0
  11. camel/models/gemini_model.py +1 -1
  12. camel/models/groq_model.py +1 -1
  13. camel/models/nemotron_model.py +1 -1
  14. camel/models/nvidia_model.py +1 -1
  15. camel/models/ollama_model.py +1 -1
  16. camel/models/openai_compatible_model.py +1 -1
  17. camel/models/openai_model.py +1 -1
  18. camel/models/qwen_model.py +1 -1
  19. camel/models/reward/nemotron_model.py +1 -1
  20. camel/models/samba_model.py +1 -1
  21. camel/models/sglang_model.py +2 -2
  22. camel/models/togetherai_model.py +1 -1
  23. camel/models/vllm_model.py +1 -1
  24. camel/models/yi_model.py +1 -1
  25. camel/models/zhipuai_model.py +1 -1
  26. camel/runtime/configs.py +12 -12
  27. camel/runtime/docker_runtime.py +7 -7
  28. camel/runtime/llm_guard_runtime.py +3 -3
  29. camel/runtime/remote_http_runtime.py +5 -5
  30. camel/runtime/utils/function_risk_toolkit.py +1 -1
  31. camel/runtime/utils/ignore_risk_toolkit.py +2 -2
  32. camel/toolkits/arxiv_toolkit.py +6 -6
  33. camel/toolkits/ask_news_toolkit.py +2 -2
  34. camel/toolkits/github_toolkit.py +3 -3
  35. camel/toolkits/google_scholar_toolkit.py +16 -2
  36. camel/toolkits/meshy_toolkit.py +2 -2
  37. camel/toolkits/search_toolkit.py +2 -2
  38. camel/utils/token_counting.py +9 -2
  39. {camel_ai-0.2.12.dist-info → camel_ai-0.2.13.dist-info}/METADATA +13 -10
  40. {camel_ai-0.2.12.dist-info → camel_ai-0.2.13.dist-info}/RECORD +42 -41
  41. {camel_ai-0.2.12.dist-info → camel_ai-0.2.13.dist-info}/LICENSE +0 -0
  42. {camel_ai-0.2.12.dist-info → camel_ai-0.2.13.dist-info}/WHEEL +0 -0
camel/__init__.py CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  from camel.logger import disable_logging, enable_logging, set_log_level
16
16
 
17
- __version__ = '0.2.12'
17
+ __version__ = '0.2.13'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -1042,7 +1042,7 @@ class ChatAgent(BaseAgent):
1042
1042
  num_tokens (int): The number of tokens used in this step.
1043
1043
  external_tool_request (Optional[ChatCompletionMessageToolCall]):
1044
1044
  Any external tool request made during this step.
1045
- (default::obj:`None`)
1045
+ (default: :obj:`None`)
1046
1046
 
1047
1047
  Returns:
1048
1048
  Dict[str, Any]: A dictionary containing information about the chat
@@ -46,7 +46,7 @@ class OpenAICompatibleEmbedding(BaseEmbedding[str]):
46
46
  )
47
47
  self._url = url or os.environ.get("OPENAI_COMPATIBILIY_API_BASE_URL")
48
48
  self._client = OpenAI(
49
- timeout=60,
49
+ timeout=180,
50
50
  max_retries=3,
51
51
  api_key=self._api_key,
52
52
  base_url=self._url,
@@ -56,7 +56,7 @@ class OpenAIEmbedding(BaseEmbedding[str]):
56
56
  assert isinstance(dimensions, int)
57
57
  self.output_dim = dimensions
58
58
  self._api_key = api_key or os.environ.get("OPENAI_API_KEY")
59
- self.client = OpenAI(timeout=60, max_retries=3, api_key=self._api_key)
59
+ self.client = OpenAI(timeout=180, max_retries=3, api_key=self._api_key)
60
60
 
61
61
  @api_keys_required("OPENAI_API_KEY")
62
62
  def embed_list(
camel/messages/base.py CHANGED
@@ -52,15 +52,15 @@ class BaseMessage:
52
52
  for the message.
53
53
  content (str): The content of the message.
54
54
  video_bytes (Optional[bytes]): Optional bytes of a video associated
55
- with the message. (default::obj:`None`)
55
+ with the message. (default: :obj:`None`)
56
56
  image_list (Optional[List[Image.Image]]): Optional list of PIL Image
57
- objects associated with the message. (default::obj:`None`)
57
+ objects associated with the message. (default: :obj:`None`)
58
58
  image_detail (Literal["auto", "low", "high"]): Detail level of the
59
- images associated with the message. (default::obj:`auto`)
59
+ images associated with the message. (default: :obj:`auto`)
60
60
  video_detail (Literal["auto", "low", "high"]): Detail level of the
61
- videos associated with the message. (default::obj:`low`)
61
+ videos associated with the message. (default: :obj:`low`)
62
62
  parsed: Optional[Union[Type[BaseModel], dict]]: Optional object which
63
- is parsed from the content. (default::obj:`None`)
63
+ is parsed from the content. (default: :obj:`None`)
64
64
  """
65
65
 
66
66
  role_name: str
camel/models/__init__.py CHANGED
@@ -16,6 +16,7 @@ from .azure_openai_model import AzureOpenAIModel
16
16
  from .base_model import BaseModelBackend
17
17
  from .cohere_model import CohereModel
18
18
  from .deepseek_model import DeepSeekModel
19
+ from .fish_audio_model import FishAudioModel
19
20
  from .gemini_model import GeminiModel
20
21
  from .groq_model import GroqModel
21
22
  from .litellm_model import LiteLLMModel
@@ -66,4 +67,5 @@ __all__ = [
66
67
  'QwenModel',
67
68
  'ModelProcessingError',
68
69
  'DeepSeekModel',
70
+ 'FishAudioModel',
69
71
  ]
@@ -35,7 +35,7 @@ class AnthropicModel(BaseModelBackend):
35
35
  model_config_dict (Optional[Dict[str, Any]], optional): A dictionary
36
36
  that will be fed into Anthropic.messages.create(). If
37
37
  :obj:`None`, :obj:`AnthropicConfig().as_dict()` will be used.
38
- (default::obj:`None`)
38
+ (default: :obj:`None`)
39
39
  api_key (Optional[str], optional): The API key for authenticating with
40
40
  the Anthropic service. (default: :obj:`None`)
41
41
  url (Optional[str], optional): The url to the Anthropic service.
@@ -91,7 +91,7 @@ class AzureOpenAIModel(BaseModelBackend):
91
91
  azure_deployment=self.azure_deployment_name,
92
92
  api_version=self.api_version,
93
93
  api_key=self._api_key,
94
- timeout=60,
94
+ timeout=180,
95
95
  max_retries=3,
96
96
  )
97
97
 
@@ -70,7 +70,7 @@ class DeepSeekModel(BaseModelBackend):
70
70
  )
71
71
 
72
72
  self._client = OpenAI(
73
- timeout=60,
73
+ timeout=180,
74
74
  max_retries=3,
75
75
  api_key=self._api_key,
76
76
  base_url=self._url,
@@ -0,0 +1,146 @@
1
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
+
15
+ import os
16
+ from typing import Any, Optional
17
+
18
+
19
+ class FishAudioModel:
20
+ r"""Provides access to FishAudio's Text-to-Speech (TTS) and Speech_to_Text
21
+ (STT) models.
22
+ """
23
+
24
+ def __init__(
25
+ self,
26
+ api_key: Optional[str] = None,
27
+ url: Optional[str] = None,
28
+ ) -> None:
29
+ r"""Initialize an instance of FishAudioModel.
30
+
31
+ Args:
32
+ api_key (Optional[str]): API key for FishAudio service. If not
33
+ provided, the environment variable `FISHAUDIO_API_KEY` will be
34
+ used.
35
+ url (Optional[str]): Base URL for FishAudio API. If not provided,
36
+ the environment variable `FISHAUDIO_API_BASE_URL` will be used.
37
+ """
38
+ from fish_audio_sdk import Session
39
+
40
+ self._api_key = api_key or os.environ.get("FISHAUDIO_API_KEY")
41
+ self._url = url or os.environ.get(
42
+ "FISHAUDIO_API_BASE_URL", "https://api.fish.audio"
43
+ )
44
+ self.session = Session(apikey=self._api_key, base_url=self._url)
45
+
46
+ def text_to_speech(
47
+ self,
48
+ input: str,
49
+ storage_path: str,
50
+ reference_id: Optional[str] = None,
51
+ reference_audio: Optional[str] = None,
52
+ reference_audio_text: Optional[str] = None,
53
+ **kwargs: Any,
54
+ ) -> Any:
55
+ r"""Convert text to speech and save the output to a file.
56
+
57
+ Args:
58
+ input_text (str): The text to convert to speech.
59
+ storage_path (str): The file path where the resulting speech will
60
+ be saved.
61
+ reference_id (Optional[str]): An optional reference ID to
62
+ associate with the request. (default: :obj:`None`)
63
+ reference_audio (Optional[str]): Path to an audio file for
64
+ reference speech. (default: :obj:`None`)
65
+ reference_audio_text (Optional[str]): Text for the reference audio.
66
+ (default: :obj:`None`)
67
+ **kwargs (Any): Additional parameters to pass to the TTS request.
68
+
69
+ Raises:
70
+ FileNotFoundError: If the reference audio file cannot be found.
71
+ """
72
+ from fish_audio_sdk import ReferenceAudio, TTSRequest
73
+
74
+ directory = os.path.dirname(storage_path)
75
+ if directory and not os.path.exists(directory):
76
+ os.makedirs(directory)
77
+
78
+ if not reference_audio:
79
+ with open(f"{storage_path}", "wb") as f:
80
+ for chunk in self.session.tts(
81
+ TTSRequest(reference_id=reference_id, text=input, **kwargs)
82
+ ):
83
+ f.write(chunk)
84
+ else:
85
+ if not os.path.exists(reference_audio):
86
+ raise FileNotFoundError(
87
+ f"Reference audio file not found: {reference_audio}"
88
+ )
89
+ if not reference_audio_text:
90
+ raise ValueError("reference_audio_text should be provided")
91
+ with open(f"{reference_audio}", "rb") as audio_file:
92
+ with open(f"{storage_path}", "wb") as f:
93
+ for chunk in self.session.tts(
94
+ TTSRequest(
95
+ text=input,
96
+ references=[
97
+ ReferenceAudio(
98
+ audio=audio_file.read(),
99
+ text=reference_audio_text,
100
+ )
101
+ ],
102
+ **kwargs,
103
+ )
104
+ ):
105
+ f.write(chunk)
106
+
107
+ def speech_to_text(
108
+ self,
109
+ audio_file_path: str,
110
+ language: Optional[str] = None,
111
+ ignore_timestamps: Optional[bool] = None,
112
+ **kwargs: Any,
113
+ ) -> str:
114
+ r"""Convert speech to text from an audio file.
115
+
116
+ Args:
117
+ audio_file_path (str): The path to the audio file to transcribe.
118
+ language (Optional[str]): The language of the audio. (default:
119
+ :obj:`None`)
120
+ ignore_timestamps (Optional[bool]): Whether to ignore timestamps.
121
+ (default: :obj:`None`)
122
+ **kwargs (Any): Additional parameters to pass to the STT request.
123
+
124
+ Returns:
125
+ str: The transcribed text from the audio.
126
+
127
+ Raises:
128
+ FileNotFoundError: If the audio file cannot be found.
129
+ """
130
+ from fish_audio_sdk import ASRRequest
131
+
132
+ if not os.path.exists(audio_file_path):
133
+ raise FileNotFoundError(f"Audio file not found: {audio_file_path}")
134
+
135
+ with open(f"{audio_file_path}", "rb") as audio_file:
136
+ audio_data = audio_file.read()
137
+
138
+ response = self.session.asr(
139
+ ASRRequest(
140
+ audio=audio_data,
141
+ language=language,
142
+ ignore_timestamps=ignore_timestamps,
143
+ **kwargs,
144
+ )
145
+ )
146
+ return response.text
@@ -71,7 +71,7 @@ class GeminiModel(BaseModelBackend):
71
71
  model_type, model_config_dict, api_key, url, token_counter
72
72
  )
73
73
  self._client = OpenAI(
74
- timeout=60,
74
+ timeout=180,
75
75
  max_retries=3,
76
76
  api_key=self._api_key,
77
77
  base_url=self._url,
@@ -69,7 +69,7 @@ class GroqModel(BaseModelBackend):
69
69
  model_type, model_config_dict, api_key, url, token_counter
70
70
  )
71
71
  self._client = OpenAI(
72
- timeout=60,
72
+ timeout=180,
73
73
  max_retries=3,
74
74
  api_key=self._api_key,
75
75
  base_url=self._url,
@@ -52,7 +52,7 @@ class NemotronModel(BaseModelBackend):
52
52
  api_key = api_key or os.environ.get("NVIDIA_API_KEY")
53
53
  super().__init__(model_type, {}, api_key, url)
54
54
  self._client = OpenAI(
55
- timeout=60,
55
+ timeout=180,
56
56
  max_retries=3,
57
57
  base_url=self._url,
58
58
  api_key=self._api_key,
@@ -66,7 +66,7 @@ class NvidiaModel(BaseModelBackend):
66
66
  model_type, model_config_dict, api_key, url, token_counter
67
67
  )
68
68
  self._client = OpenAI(
69
- timeout=60,
69
+ timeout=180,
70
70
  max_retries=3,
71
71
  api_key=self._api_key,
72
72
  base_url=self._url,
@@ -70,7 +70,7 @@ class OllamaModel(BaseModelBackend):
70
70
  self._start_server()
71
71
  # Use OpenAI client as interface call Ollama
72
72
  self._client = OpenAI(
73
- timeout=60,
73
+ timeout=180,
74
74
  max_retries=3,
75
75
  api_key="Set-but-ignored", # required but ignored
76
76
  base_url=self._url,
@@ -61,7 +61,7 @@ class OpenAICompatibleModel(BaseModelBackend):
61
61
  model_type, model_config_dict, api_key, url, token_counter
62
62
  )
63
63
  self._client = OpenAI(
64
- timeout=60,
64
+ timeout=180,
65
65
  max_retries=3,
66
66
  api_key=self._api_key,
67
67
  base_url=self._url,
@@ -67,7 +67,7 @@ class OpenAIModel(BaseModelBackend):
67
67
  model_type, model_config_dict, api_key, url, token_counter
68
68
  )
69
69
  self._client = OpenAI(
70
- timeout=60,
70
+ timeout=180,
71
71
  max_retries=3,
72
72
  base_url=self._url,
73
73
  api_key=self._api_key,
@@ -71,7 +71,7 @@ class QwenModel(BaseModelBackend):
71
71
  model_type, model_config_dict, api_key, url, token_counter
72
72
  )
73
73
  self._client = OpenAI(
74
- timeout=60,
74
+ timeout=180,
75
75
  max_retries=3,
76
76
  api_key=self._api_key,
77
77
  base_url=self._url,
@@ -47,7 +47,7 @@ class NemotronRewardModel(BaseRewardModel):
47
47
  api_key = api_key or os.environ.get("NVIDIA_API_KEY")
48
48
  super().__init__(model_type, api_key, url)
49
49
  self._client = OpenAI(
50
- timeout=60,
50
+ timeout=180,
51
51
  max_retries=3,
52
52
  base_url=self.url,
53
53
  api_key=self.api_key,
@@ -95,7 +95,7 @@ class SambaModel(BaseModelBackend):
95
95
 
96
96
  if self._url == "https://api.sambanova.ai/v1":
97
97
  self._client = OpenAI(
98
- timeout=60,
98
+ timeout=180,
99
99
  max_retries=3,
100
100
  base_url=self._url,
101
101
  api_key=self._api_key,
@@ -80,7 +80,7 @@ class SGLangModel(BaseModelBackend):
80
80
  if self._url:
81
81
  # Initialize the client if an existing URL is provided
82
82
  self._client = OpenAI(
83
- timeout=60,
83
+ timeout=180,
84
84
  max_retries=3,
85
85
  api_key="Set-but-ignored", # required but ignored
86
86
  base_url=self._url,
@@ -113,7 +113,7 @@ class SGLangModel(BaseModelBackend):
113
113
  self.last_run_time = time.time()
114
114
  # Initialize the client after the server starts
115
115
  self._client = OpenAI(
116
- timeout=60,
116
+ timeout=180,
117
117
  max_retries=3,
118
118
  api_key="Set-but-ignored", # required but ignored
119
119
  base_url=self._url,
@@ -72,7 +72,7 @@ class TogetherAIModel(BaseModelBackend):
72
72
  )
73
73
 
74
74
  self._client = OpenAI(
75
- timeout=60,
75
+ timeout=180,
76
76
  max_retries=3,
77
77
  api_key=self._api_key,
78
78
  base_url=self._url,
@@ -72,7 +72,7 @@ class VLLMModel(BaseModelBackend):
72
72
  self._start_server()
73
73
  # Use OpenAI cilent as interface call vLLM
74
74
  self._client = OpenAI(
75
- timeout=60,
75
+ timeout=180,
76
76
  max_retries=3,
77
77
  api_key="EMPTY", # required but ignored
78
78
  base_url=self._url,
camel/models/yi_model.py CHANGED
@@ -70,7 +70,7 @@ class YiModel(BaseModelBackend):
70
70
  model_type, model_config_dict, api_key, url, token_counter
71
71
  )
72
72
  self._client = OpenAI(
73
- timeout=60,
73
+ timeout=180,
74
74
  max_retries=3,
75
75
  api_key=self._api_key,
76
76
  base_url=self._url,
@@ -70,7 +70,7 @@ class ZhipuAIModel(BaseModelBackend):
70
70
  model_type, model_config_dict, api_key, url, token_counter
71
71
  )
72
72
  self._client = OpenAI(
73
- timeout=60,
73
+ timeout=180,
74
74
  max_retries=3,
75
75
  api_key=self._api_key,
76
76
  base_url=self._url,
camel/runtime/configs.py CHANGED
@@ -21,23 +21,23 @@ class TaskConfig(BaseModel):
21
21
 
22
22
  Arttributes:
23
23
  cmd (str or list): Command to be executed
24
- stdout (bool): Attach to stdout. (default::obj: `True`)
25
- stderr (bool): Attach to stderr. (default::obj: `True`)
26
- stdin (bool): Attach to stdin. (default::obj: `False`)
27
- tty (bool): Allocate a pseudo-TTY. (default::obj: `False`)
28
- privileged (bool): Run as privileged. (default::obj: `False`)
29
- user (str): User to execute command as. (default::obj: `""`)
24
+ stdout (bool): Attach to stdout. (default: :obj: `True`)
25
+ stderr (bool): Attach to stderr. (default: :obj: `True`)
26
+ stdin (bool): Attach to stdin. (default: :obj: `False`)
27
+ tty (bool): Allocate a pseudo-TTY. (default: :obj: `False`)
28
+ privileged (bool): Run as privileged. (default: :obj: `False`)
29
+ user (str): User to execute command as. (default: :obj: `""`)
30
30
  detach (bool): If true, detach from the exec command.
31
- (default::obj: `False`)
32
- stream (bool): Stream response data. (default::obj: `False`)
31
+ (default: :obj: `False`)
32
+ stream (bool): Stream response data. (default: :obj: `False`)
33
33
  socket (bool): Return the connection socket to allow custom
34
- read/write operations. (default::obj: `False`)
34
+ read/write operations. (default: :obj: `False`)
35
35
  environment (dict or list): A dictionary or a list of strings in
36
36
  the following format ``["PASSWORD=xxx"]`` or
37
- ``{"PASSWORD": "xxx"}``. (default::obj: `None`)
37
+ ``{"PASSWORD": "xxx"}``. (default: :obj: `None`)
38
38
  workdir (str): Path to working directory for this exec session.
39
- (default::obj: `None`)
40
- demux (bool): Return stdout and stderr separately. (default::obj:
39
+ (default: :obj: `None`)
40
+ demux (bool): Return stdout and stderr separately. (default: :obj:
41
41
  `False`)
42
42
  """
43
43
 
@@ -42,10 +42,10 @@ class DockerRuntime(BaseRuntime):
42
42
 
43
43
  Args:
44
44
  image (str): The name of the Docker image to use for the runtime.
45
- port (int): The port number to use for the runtime API. (default::obj:
45
+ port (int): The port number to use for the runtime API. (default: :obj:
46
46
  `8000`)
47
47
  remove (bool): Whether to remove the container after stopping it. '
48
- (default::obj: `True`)
48
+ (default: :obj: `True`)
49
49
  kwargs (dict): Additional keyword arguments to pass to the
50
50
  Docker client.
51
51
  """
@@ -170,7 +170,7 @@ class DockerRuntime(BaseRuntime):
170
170
 
171
171
  Args:
172
172
  time_out (int): The number of seconds to wait for the container to
173
- start. (default::obj: `15`)
173
+ start. (default: :obj: `15`)
174
174
 
175
175
  Returns:
176
176
  DockerRuntime: The DockerRuntime instance.
@@ -259,9 +259,9 @@ class DockerRuntime(BaseRuntime):
259
259
  list of functions to add.
260
260
  entrypoint (str): The entrypoint for the function.
261
261
  redirect_stdout (bool): Whether to return the stdout of
262
- the function. (default::obj: `False`)
262
+ the function. (default: :obj: `False`)
263
263
  arguments (Optional[Dict[str, Any]]): The arguments for the
264
- function. (default::obj: `None`)
264
+ function. (default: :obj: `None`)
265
265
 
266
266
  Returns:
267
267
  DockerRuntime: The DockerRuntime instance.
@@ -330,7 +330,7 @@ class DockerRuntime(BaseRuntime):
330
330
 
331
331
  Args:
332
332
  remove (Optional[bool]): Whether to remove the container
333
- after stopping it. (default::obj: `None`)
333
+ after stopping it. (default: :obj: `None`)
334
334
 
335
335
  Returns:
336
336
  DockerRuntime: The DockerRuntime instance.
@@ -366,7 +366,7 @@ class DockerRuntime(BaseRuntime):
366
366
  r"""Wait for the API Server to be ready.
367
367
 
368
368
  Args:
369
- timeout (int): The number of seconds to wait. (default::obj: `10`)
369
+ timeout (int): The number of seconds to wait. (default: :obj: `10`)
370
370
 
371
371
  Returns:
372
372
  bool: Whether the API Server is ready.
@@ -68,9 +68,9 @@ class LLMGuardRuntime(BaseRuntime):
68
68
  Arguments:
69
69
  prompt (str): The prompt to use for the language model. (default:
70
70
  :obj:`GUARDPROMPT`)
71
- model (BaseModelBackend): The language model to use. (default::obj:
71
+ model (BaseModelBackend): The language model to use. (default: :obj:
72
72
  `None`)
73
- verbose (bool): Whether to print verbose output. (default::obj:
73
+ verbose (bool): Whether to print verbose output. (default: :obj:
74
74
  `False`)
75
75
  """
76
76
 
@@ -114,7 +114,7 @@ class LLMGuardRuntime(BaseRuntime):
114
114
  funcs (FunctionTool or List[FunctionTool]): The function or
115
115
  list of functions to add.
116
116
  threshold (int): The risk threshold for functions.
117
- (default::obj:`2`)
117
+ (default: :obj:`2`)
118
118
 
119
119
  Returns:
120
120
  LLMGuardRuntime: The current runtime.
@@ -36,9 +36,9 @@ class RemoteHttpRuntime(BaseRuntime):
36
36
 
37
37
  Args:
38
38
  host (str): The host of the remote server.
39
- port (int): The port of the remote server. (default::obj: `8000`)
39
+ port (int): The port of the remote server. (default: :obj: `8000`)
40
40
  python_exec (str): The python executable to run the API server.
41
- (default::obj: `python3`)
41
+ (default: :obj: `python3`)
42
42
  """
43
43
 
44
44
  def __init__(
@@ -90,9 +90,9 @@ class RemoteHttpRuntime(BaseRuntime):
90
90
  list of functions to add.
91
91
  entrypoint (str): The entrypoint for the function.
92
92
  redirect_stdout (bool): Whether to return the stdout of
93
- the function. (default::obj: `False`)
93
+ the function. (default: :obj: `False`)
94
94
  arguments (Optional[Dict[str, Any]]): The arguments for the
95
- function. (default::obj: `None`)
95
+ function. (default: :obj: `None`)
96
96
 
97
97
  Returns:
98
98
  RemoteHttpRuntime: The current runtime.
@@ -162,7 +162,7 @@ class RemoteHttpRuntime(BaseRuntime):
162
162
  r"""Wait for the API Server to be ready.
163
163
 
164
164
  Args:
165
- timeout (int): The number of seconds to wait. (default::obj: `10`)
165
+ timeout (int): The number of seconds to wait. (default: :obj: `10`)
166
166
 
167
167
  Returns:
168
168
  bool: Whether the API Server is ready.
@@ -22,7 +22,7 @@ class FunctionRiskToolkit(BaseToolkit):
22
22
 
23
23
  Args:
24
24
  verbose (Optional[bool]): Whether to print verbose output.
25
- (default::obj:`False`)
25
+ (default: :obj:`False`)
26
26
  """
27
27
 
28
28
  def __init__(self, verbose: Optional[bool] = False):
@@ -22,9 +22,9 @@ class IgnoreRiskToolkit(BaseToolkit):
22
22
 
23
23
  Args:
24
24
  function_names (Optional[List[str]]): A list of function names to
25
- ignore risks for. (default::obj:`None`)
25
+ ignore risks for. (default: :obj:`None`)
26
26
  verbose (Optional[bool]): Whether to print verbose output.
27
- (default::obj:`False`)
27
+ (default: :obj:`False`)
28
28
  """
29
29
 
30
30
  def __init__(
@@ -44,9 +44,9 @@ class ArxivToolkit(BaseToolkit):
44
44
  query (str): The search query string used to search for papers on
45
45
  arXiv.
46
46
  paper_ids (List[str], optional): A list of specific arXiv paper
47
- IDs to search for. (default::obj: `None`)
47
+ IDs to search for. (default: :obj: `None`)
48
48
  max_results (int, optional): The maximum number of search results
49
- to retrieve. (default::obj: `5`)
49
+ to retrieve. (default: :obj: `5`)
50
50
 
51
51
  Returns:
52
52
  Generator: A generator that yields results from the arXiv search
@@ -75,9 +75,9 @@ class ArxivToolkit(BaseToolkit):
75
75
  Args:
76
76
  query (str): The search query string.
77
77
  paper_ids (List[str], optional): A list of specific arXiv paper
78
- IDs to search for. (default::obj: `None`)
78
+ IDs to search for. (default: :obj: `None`)
79
79
  max_results (int, optional): The maximum number of search results
80
- to return. (default::obj: `5`)
80
+ to return. (default: :obj: `5`)
81
81
 
82
82
  Returns:
83
83
  List[Dict[str, str]]: A list of dictionaries, each containing
@@ -119,9 +119,9 @@ class ArxivToolkit(BaseToolkit):
119
119
  Args:
120
120
  query (str): The search query string.
121
121
  paper_ids (List[str], optional): A list of specific arXiv paper
122
- IDs to download. (default::obj: `None`)
122
+ IDs to download. (default: :obj: `None`)
123
123
  max_results (int, optional): The maximum number of search results
124
- to download. (default::obj: `5`)
124
+ to download. (default: :obj: `5`)
125
125
  output_dir (str, optional): The directory to save the downloaded
126
126
  PDFs. Defaults to the current directory.
127
127
 
@@ -228,7 +228,7 @@ class AskNewsToolkit(BaseToolkit):
228
228
  return value. (default: :obj:`"string"`)
229
229
  method (Literal["nl", "kw"]): The search method, either "nl" for
230
230
  natural language or "kw" for keyword search.
231
- (default::obj:`"kw"`)
231
+ (default: :obj:`"kw"`)
232
232
 
233
233
  Returns:
234
234
  Union[str, dict, Tuple[str, dict]]: The Reddit search
@@ -523,7 +523,7 @@ class AsyncAskNewsToolkit(BaseToolkit):
523
523
  return value. (default: :obj:"string")
524
524
  method (Literal["nl", "kw"]): The search method, either "nl" for
525
525
  natural language or "kw" for keyword search.
526
- (default::obj:"kw")
526
+ (default: :obj:"kw")
527
527
 
528
528
  Returns:
529
529
  Union[str, dict, Tuple[str, dict]]: The Reddit search
@@ -139,7 +139,7 @@ class GithubToolkit(BaseToolkit):
139
139
 
140
140
  Args:
141
141
  state (Literal["open", "closed", "all"]): The state of pull
142
- requests to retrieve. (default::obj: `all`)
142
+ requests to retrieve. (default: :obj: `all`)
143
143
  Options are:
144
144
  - "open": Retrieve only open pull requests.
145
145
  - "closed": Retrieve only closed pull requests.
@@ -179,7 +179,7 @@ class GithubToolkit(BaseToolkit):
179
179
 
180
180
  Args:
181
181
  state (Literal["open", "closed", "all"]): The state of pull
182
- requests to retrieve. (default::obj: `all`)
182
+ requests to retrieve. (default: :obj: `all`)
183
183
  Options are:
184
184
  - "open": Retrieve only open pull requests.
185
185
  - "closed": Retrieve only closed pull requests.
@@ -254,7 +254,7 @@ class GithubToolkit(BaseToolkit):
254
254
  Args:
255
255
  path (str): The repository path to start the traversal from.
256
256
  empty string means starts from the root directory.
257
- (default::obj: `""`)
257
+ (default: :obj: `""`)
258
258
 
259
259
  Returns:
260
260
  List[str]: A list of file paths within the specified directory
@@ -33,7 +33,11 @@ class GoogleScholarToolkit(BaseToolkit):
33
33
  """
34
34
 
35
35
  def __init__(
36
- self, author_identifier: str, is_author_name: bool = False
36
+ self,
37
+ author_identifier: str,
38
+ is_author_name: bool = False,
39
+ proxy_http: Optional[str] = None,
40
+ proxy_https: Optional[str] = None,
37
41
  ) -> None:
38
42
  r"""Initializes the GoogleScholarToolkit with the author's identifier.
39
43
 
@@ -42,8 +46,18 @@ class GoogleScholarToolkit(BaseToolkit):
42
46
  of the author to search for.
43
47
  is_author_name (bool): Flag to indicate if the identifier is a
44
48
  name. (default: :obj:`False`)
49
+ proxy_http ( Optional[str]): Proxy http address pass to pg.
50
+ SingleProxy. (default: :obj:`None`)
51
+ proxy_https ( Optional[str]): Proxy https address pass to pg.
52
+ SingleProxy. (default: :obj:`None`)
45
53
  """
46
- from scholarly import scholarly
54
+ from scholarly import ProxyGenerator, scholarly
55
+
56
+ # Set Proxy is HTTP or HTTPS provided
57
+ if proxy_http or proxy_https:
58
+ pg = ProxyGenerator()
59
+ pg.SingleProxy(http=proxy_http, https=proxy_https)
60
+ scholarly.use_proxy(pg)
47
61
 
48
62
  self.scholarly = scholarly
49
63
  self.author_identifier = author_identifier
@@ -117,9 +117,9 @@ class MeshyToolkit(BaseToolkit):
117
117
  Args:
118
118
  task_id (str): The ID of the task to monitor.
119
119
  polling_interval (int): Seconds to wait between status checks.
120
- (default::obj:`10`)
120
+ (default: :obj:`10`)
121
121
  timeout (int): Maximum seconds to wait before timing out.
122
- (default::obj:`3600`)
122
+ (default: :obj:`3600`)
123
123
 
124
124
  Returns:
125
125
  Dict[str, Any]: Final response from the API when task completes.
@@ -181,7 +181,7 @@ class SearchToolkit(BaseToolkit):
181
181
  country (str): The search query country where results come from.
182
182
  The country string is limited to 2 character country codes of
183
183
  supported countries. For a list of supported values, see
184
- Country Codes. (default::obj:`US `)
184
+ Country Codes. (default: :obj:`US `)
185
185
  search_lang (str): The search language preference. The 2 or more
186
186
  character language code for which search results are provided.
187
187
  For a list of possible values, see Language Codes.
@@ -416,7 +416,7 @@ class SearchToolkit(BaseToolkit):
416
416
  query (str): The query to send to Wolfram Alpha.
417
417
  is_detailed (bool): Whether to include additional details
418
418
  including step by step information in the result.
419
- (default::obj:`False`)
419
+ (default: :obj:`False`)
420
420
 
421
421
  Returns:
422
422
  Union[str, Dict[str, Any]]: The result from Wolfram Alpha.
@@ -144,12 +144,19 @@ class OpenAITokenCounter(BaseTokenCounter):
144
144
  num_tokens += self.tokens_per_message
145
145
  for key, value in message.items():
146
146
  if not isinstance(value, list):
147
- num_tokens += len(self.encoding.encode(str(value)))
147
+ num_tokens += len(
148
+ self.encoding.encode(str(value), disallowed_special=())
149
+ )
148
150
  else:
149
151
  for item in value:
150
152
  if item["type"] == "text":
151
153
  num_tokens += len(
152
- self.encoding.encode(str(item["text"]))
154
+ self.encoding.encode(
155
+ str(
156
+ item["text"],
157
+ ),
158
+ disallowed_special=(),
159
+ )
153
160
  )
154
161
  elif item["type"] == "image_url":
155
162
  image_str: str = item["image_url"]["url"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: camel-ai
3
- Version: 0.2.12
3
+ Version: 0.2.13
4
4
  Summary: Communicative Agents for AI Society Study
5
5
  Home-page: https://www.camel-ai.org/
6
6
  License: Apache-2.0
@@ -53,6 +53,7 @@ Requires-Dist: e2b-code-interpreter (>=1.0.3,<2.0.0) ; extra == "tools" or extra
53
53
  Requires-Dist: eval-type-backport (==0.2.0)
54
54
  Requires-Dist: ffmpeg-python (>=0.2.0,<0.3.0) ; extra == "tools" or extra == "all"
55
55
  Requires-Dist: firecrawl-py (>=1.0.0,<2.0.0) ; extra == "tools" or extra == "all"
56
+ Requires-Dist: fish-audio-sdk (>=2024.12.5,<2025.0.0) ; extra == "model-platforms" or extra == "all"
56
57
  Requires-Dist: google-cloud-storage (>=2.18.0,<3.0.0) ; extra == "object-storages" or extra == "all"
57
58
  Requires-Dist: google-generativeai (>=0.6.0,<0.7.0) ; extra == "model-platforms" or extra == "all"
58
59
  Requires-Dist: googlemaps (>=4.10.0,<5.0.0) ; extra == "tools" or extra == "all"
@@ -67,7 +68,7 @@ Requires-Dist: mock (>=5,<6) ; extra == "test"
67
68
  Requires-Dist: nebula3-python (==3.8.2) ; extra == "rag" or extra == "graph-storages" or extra == "all"
68
69
  Requires-Dist: neo4j (>=5.18.0,<6.0.0) ; extra == "rag" or extra == "graph-storages" or extra == "all"
69
70
  Requires-Dist: newspaper3k (>=0.2.8,<0.3.0) ; extra == "tools" or extra == "all"
70
- Requires-Dist: nltk (==3.8.1) ; extra == "tools" or extra == "all"
71
+ Requires-Dist: nltk (==3.9.1) ; extra == "tools" or extra == "all"
71
72
  Requires-Dist: notion-client (>=2.2.1,<3.0.0) ; extra == "tools" or extra == "all"
72
73
  Requires-Dist: numpy (>=1,<2)
73
74
  Requires-Dist: openai (>=1.45.0,<2.0.0)
@@ -76,7 +77,7 @@ Requires-Dist: opencv-python (>=4,<5) ; extra == "huggingface-agent" or extra ==
76
77
  Requires-Dist: pandoc
77
78
  Requires-Dist: pathlib (>=1.0.1,<2.0.0)
78
79
  Requires-Dist: pdfplumber (>=0.11.0,<0.12.0) ; extra == "tools" or extra == "all"
79
- Requires-Dist: pillow (>=10.2.0,<11.0.0) ; extra == "tools" or extra == "all"
80
+ Requires-Dist: pillow (>=11.0.0,<12.0.0) ; extra == "tools" or extra == "all"
80
81
  Requires-Dist: prance (>=23.6.21.0,<24.0.0.0) ; extra == "tools" or extra == "all"
81
82
  Requires-Dist: praw (>=7.7.1,<8.0.0) ; extra == "tools" or extra == "all"
82
83
  Requires-Dist: protobuf (>=4,<5)
@@ -103,12 +104,12 @@ Requires-Dist: slack-sdk (>=3.27.2,<4.0.0) ; extra == "tools" or extra == "all"
103
104
  Requires-Dist: soundfile (>=0,<1) ; extra == "huggingface-agent" or extra == "all"
104
105
  Requires-Dist: stripe (>=11.3.0,<12.0.0) ; extra == "tools" or extra == "all"
105
106
  Requires-Dist: tavily-python (>=0.5.0,<0.6.0) ; extra == "search-tools" or extra == "all"
106
- Requires-Dist: textblob (>=0.18.0.post0,<0.19.0) ; extra == "tools" or extra == "all"
107
+ Requires-Dist: textblob (>=0.17.1,<0.18.0) ; extra == "tools" or extra == "all"
107
108
  Requires-Dist: tiktoken (>=0.7.0,<0.8.0)
108
109
  Requires-Dist: torch (==2.2.1) ; (platform_system == "Darwin" and platform_machine != "arm64") and (extra == "huggingface-agent" or extra == "all")
109
110
  Requires-Dist: torch (>=2,<3) ; (platform_system != "Darwin" or platform_machine == "arm64") and (extra == "huggingface-agent" or extra == "all")
110
111
  Requires-Dist: transformers (>=4,<5) ; extra == "huggingface-agent" or extra == "all"
111
- Requires-Dist: unstructured[all-docs] (>=0.14,<0.15) ; extra == "rag" or extra == "tools" or extra == "all"
112
+ Requires-Dist: unstructured[all-docs] (==0.16.11) ; extra == "rag" or extra == "all"
112
113
  Requires-Dist: wikipedia (>=1,<2) ; extra == "search-tools" or extra == "tools" or extra == "all"
113
114
  Requires-Dist: wolframalpha (>=5.0.0,<6.0.0) ; extra == "search-tools" or extra == "tools" or extra == "all"
114
115
  Requires-Dist: yt-dlp (>=2024.11.4,<2025.0.0) ; extra == "tools" or extra == "all"
@@ -262,7 +263,7 @@ conda create --name camel python=3.10
262
263
  conda activate camel
263
264
 
264
265
  # Clone github repo
265
- git clone -b v0.2.12 https://github.com/camel-ai/camel.git
266
+ git clone -b v0.2.13 https://github.com/camel-ai/camel.git
266
267
 
267
268
  # Change directory into project directory
268
269
  cd camel
@@ -441,6 +442,8 @@ Practical guides and tutorials for implementing specific functionalities in CAME
441
442
  | **[3 Ways to Ingest Data from Websites with Firecrawl](https://docs.camel-ai.org/cookbooks/ingest_data_from_websites_with_Firecrawl.html)** | Explore three methods for extracting and processing data from websites using Firecrawl. |
442
443
  | **[Data Deneration with CAMEL and Finetuning with Unsloth](https://docs.camel-ai.org/cookbooks/sft_data_generation_and_unsloth_finetuning.html)** | Learn how to generate data with CAMEL and fine-tune models effectively with Unsloth. |
443
444
  | **[Customer Service Discord Bot with Agentic RAG](https://docs.camel-ai.org/cookbooks/customer_service_Discord_bot_with_agentic_RAG.html)** | Learn how to build a robust customer service bot for Discord using Agentic RAG. |
445
+ | **[Create AI Agents that work with your PDFs using Chunkr & Mistral AI](https://docs.camel-ai.org/cookbooks/agent_with_chunkr_for_pdf_parsing.html)** | Learn how to create AI agents that work with your PDFs using Chunkr and Mistral AI. |
446
+ | **[Data Gen with Real Function Calls and Hermes Format](https://docs.camel-ai.org/cookbooks/data_gen_with_real_function_calls_and_hermes_format.html)** | Explore how to generate data with real function calls and the Hermes format. |
444
447
 
445
448
  ## Utilize Various LLMs as Backends
446
449
 
@@ -480,10 +483,10 @@ We implemented amazing research ideas from other works for you to build, compare
480
483
  We warmly invite you to use CAMEL for your impactful research.
481
484
 
482
485
  ## News
483
- 📢 Added the Workforce module to the 🐫 CAMEL framework! For more details, see the [post](https://x.com/CamelAIOrg/status/1851682063830720912). (Oct 31, 2024)
484
- - Added subprocess support for Ollama and vLLM models. (Oct, 29, 2024)
485
- - Integrated Firecrawl's Map into the 🐫 CAMEL framework. (Oct, 22, 2024)
486
- - Integrated Nvidia's Llama-3.1-Nemotron-70b-Instruct! (Oct, 17, 2024)
486
+ 📢 Added support for Qwen models, Deepseek models to the 🐫 CAMEL framework!. (Nov 28, 2024)
487
+ - Integrate SGLang into the 🐫 CAMEL framework. (Dec, 13, 2024)
488
+ - Integrated Reward Model into the 🐫 CAMEL framework. (Dec, 13, 2024)
489
+ - Added GAIA Benchmark! (Dec, 09, 2024)
487
490
  - ...
488
491
  - Released AI Society and Code dataset (April 2, 2023)
489
492
  - Initial release of `CAMEL` python library (March 21, 2023)
@@ -1,7 +1,7 @@
1
- camel/__init__.py,sha256=aJei7L6hjseNbAS47bvyPT3JanfBEJIFyFbvpCz8KYY,912
1
+ camel/__init__.py,sha256=pCIReTm4dam962sCmtLU92cJ8uPmiYeGGRtPGPw7kio,912
2
2
  camel/agents/__init__.py,sha256=LcS4m8s97-yADfznvcaAdUe9W0E9h3m6zrSc9H6m9so,1545
3
3
  camel/agents/base.py,sha256=c4bJYL3G3Z41SaFdMPMn8ZjLdFiFaVOFO6EQIfuCVR8,1124
4
- camel/agents/chat_agent.py,sha256=70QQVzQhFY5VsPdcT2TE80LDgPh32SZ4v1Ci1Nc4P_M,51468
4
+ camel/agents/chat_agent.py,sha256=-czR5ppfBLMeYp-tidH9oeLdmjXQh14U13TsJY7qHAo,51469
5
5
  camel/agents/critic_agent.py,sha256=qFVlHlQo0CVgmPWfWYLT8_oP_KyzCLFsQw_nN_vu5Bs,7487
6
6
  camel/agents/deductive_reasoner_agent.py,sha256=6BZGaq1hR6hKJuQtOfoYQnk_AkZpw_Mr7mUy2MspQgs,13540
7
7
  camel/agents/embodied_agent.py,sha256=XBxBu5ZMmSJ4B2U3Z7SMwvLlgp6yNpaBe8HNQmY9CZA,7536
@@ -52,8 +52,8 @@ camel/datahubs/models.py,sha256=e_jkKz1ShwmMLwveDOE1xGJk-w3-j1p2hSc0j-4cEuQ,903
52
52
  camel/embeddings/__init__.py,sha256=uOPul-p528_0TcCoBIe8-jhU4p1z1r5Lnsy0IFle3HQ,1200
53
53
  camel/embeddings/base.py,sha256=mxqFkWh2AfbxuVKPOqVx16fCznmuSh9QXGjaEeZHvoY,2190
54
54
  camel/embeddings/mistral_embedding.py,sha256=hU58FkRlQxTMlR0IMXln3F4M7stdX2Kbw9neAD6aZT0,3235
55
- camel/embeddings/openai_compatible_embedding.py,sha256=dCeVuWTL1LYJyUOGLWaH9t4vI-SPcabv8Xgh8WIeFDI,3048
56
- camel/embeddings/openai_embedding.py,sha256=iLrUhwHDMXYt3r6ECT4-LRGs4Nd4yiDgkgGmJZDxMKw,3602
55
+ camel/embeddings/openai_compatible_embedding.py,sha256=40QBRRmrNdw1FnTtn3cKTZCUtjFAb3jxl2NwUxXh0YY,3049
56
+ camel/embeddings/openai_embedding.py,sha256=3WqZs_iedapQbFjkQgvYBkV6dfyjbgbs8hVicRpunGw,3603
57
57
  camel/embeddings/sentence_transformers_embeddings.py,sha256=E7a8lN50CtDBsFO-NOFQ6qfCnbH41O0_kTTg7dG3sOo,2724
58
58
  camel/embeddings/vlm_embedding.py,sha256=HZFdcz1YzkFPzMj45_jaCVmDQJyccoXN561aLWlrYmo,5497
59
59
  camel/generators.py,sha256=JRqj9_m1PF4qT6UtybzTQ-KBT9MJQt18OAAYvQ_fr2o,13844
@@ -84,7 +84,7 @@ camel/memories/context_creators/__init__.py,sha256=pqzkBM2ro5JZD7RhWg05TjinphhCq
84
84
  camel/memories/context_creators/score_based.py,sha256=eNZDvLt1AV1bDXB_No0gDWDJQNczKL85E8WRjWetvxg,5379
85
85
  camel/memories/records.py,sha256=wOMlTit1xWTs32uztGQ7KQ2wdT6vgHzFdpVCiih2lBA,3680
86
86
  camel/messages/__init__.py,sha256=85FeH6KpPt8eriwJEIS_jMQdiD6pCuU_0Hwt0pA7tSE,1878
87
- camel/messages/base.py,sha256=3CHOT7jt4iB6aqD8wA4JSN4AIt0oNdsKjKE_7tzLKrU,19609
87
+ camel/messages/base.py,sha256=1jCeQn0Rs7vujjG2iqlBG449dGqM1INZVlVZGG5IY2E,19614
88
88
  camel/messages/conversion/__init__.py,sha256=8B4C-0wj-dm925YRKNyx31WYK25PWpME7Q9jPtx2jkY,1047
89
89
  camel/messages/conversion/alpaca.py,sha256=jBU2bMhzNjzptGuoasThYvFov_cYPCYt3pEfs0T7z7U,4163
90
90
  camel/messages/conversion/conversation_models.py,sha256=f2ybtYdCbILq9IYgaHkQ57yYxDdCBSspKrfaArZvNw8,5300
@@ -93,37 +93,38 @@ camel/messages/conversion/sharegpt/function_call_formatter.py,sha256=cn7e7CfmxEV
93
93
  camel/messages/conversion/sharegpt/hermes/__init__.py,sha256=mxuMSm-neaTgInIjYXuIVdC310E6jKJzM3IdtaJ4qY4,812
94
94
  camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py,sha256=zJ9q7KFFMlQ27-WuFxf4LLL9DQt2bpeGJ2IzoUzmqZg,4552
95
95
  camel/messages/func_message.py,sha256=MTkkJksMCd640QJx5pzRHI__6jJyh86u3B-02hi2Csk,5639
96
- camel/models/__init__.py,sha256=Wviku57BMkHjETiyCkpBbwGIKeEMXPl0rW8_TvL_Nvo,2326
97
- camel/models/anthropic_model.py,sha256=hahX3M0fY3mfxa9cNhNLtY_sjC-EgVJaaeNhFY2AQ_o,6500
98
- camel/models/azure_openai_model.py,sha256=--BgJfqujFBsDKoTwx8M4q69v6EnpykBh-ztc6G2gDk,6169
96
+ camel/models/__init__.py,sha256=7h04fxeP2Ze3st9Xc23uEfAPcutf-dNveWTrJoMPJn4,2393
97
+ camel/models/anthropic_model.py,sha256=JuXUsCy6bjieT6DY1TuKfbZ2ips8Y53-kvylESyw9qo,6501
98
+ camel/models/azure_openai_model.py,sha256=hjF7-nRj2XRVWZ5AtJDGeKmfu9CsFV2PYvSUnC77vCg,6170
99
99
  camel/models/base_model.py,sha256=rxRZc31cKone4OGuvXi14FI_O9TC1aBvIy8WFSlVeSI,5727
100
100
  camel/models/cohere_model.py,sha256=NpkFxnlwLWn6r00MqbS7PlP4SEp6YaQhlgO9Le2K8Js,10320
101
- camel/models/deepseek_model.py,sha256=1Y_24EyatcjHEkZ2hMj1zOXy7TeonEnDvg5uN6kfr0U,5033
102
- camel/models/gemini_model.py,sha256=dWkh50rTTlXs1399cKvLrIqg2Sa_A-CGbt1EdV0RJuc,5048
103
- camel/models/groq_model.py,sha256=TLDE7eeoqmq50G0tABeO6KquL68N6WSG3RlED2EYFEM,4961
101
+ camel/models/deepseek_model.py,sha256=RKX-lnBZDq6l4eXeARvPI0HPHRScGhBBR18NbnxNFb4,5034
102
+ camel/models/fish_audio_model.py,sha256=mid-wdV_hkxHay-vgnF3zshwdXLyO4eM31139_0BXzo,5586
103
+ camel/models/gemini_model.py,sha256=hHXYatKdNCnSpRaOh0ktv-M1uTtN8xtFtCO1RUaGUqk,5049
104
+ camel/models/groq_model.py,sha256=TY2I9nrHfvj5dwbEptx1WboidBo_SpNy_P0p5YqNB0E,4962
104
105
  camel/models/litellm_model.py,sha256=-9DcJlVBL25vsZOdA0UkEWt5G5PP8QaXXhcE2PRiwRw,5296
105
106
  camel/models/mistral_model.py,sha256=wq0oKZ0rLPEIDZPgmNiPoeDdQBo5_oISU9u-62FO6us,9772
106
107
  camel/models/model_factory.py,sha256=O8gz27WeDWm_HG1GiSAdmeHmwXJrfdIs0Hkjtv8wY6s,6142
107
108
  camel/models/model_manager.py,sha256=ji1d1S-2lwk6uDggSyTnXbalu2F5lHaZnfPBBCJwBxU,7159
108
- camel/models/nemotron_model.py,sha256=qV_uSZVEdv5Nwi5aO-Wt0gWfZgTOH14xA7B47HKHgVM,2905
109
- camel/models/nvidia_model.py,sha256=hPpcaS_TZxni1ZqMbDEm6x-qgGvBslYmNGT2E_5-1To,5194
110
- camel/models/ollama_model.py,sha256=LNylkRs_rHCrA4cHZY3dih1euVUS68rK7W2wouDzEPw,6056
109
+ camel/models/nemotron_model.py,sha256=Irzl4oCBARRvAxTS_8kIRQQIIeH-ezpFBHcRJ8o14Is,2906
110
+ camel/models/nvidia_model.py,sha256=fVU0IgXl2iZ4x2uObageXpt_Olw4xE6pYEOLI6ut0zU,5195
111
+ camel/models/ollama_model.py,sha256=uiIgXmz6EqRsi3mBh8RAWopOom6rM77H4fP_Hp8cj3U,6057
111
112
  camel/models/openai_audio_models.py,sha256=61tGMxwOwXwh9RThXcQmkTCiGPEhau85_BM_nxgIKmY,10036
112
- camel/models/openai_compatible_model.py,sha256=VkzjSlWBgHVlKAPzbLwYiKeWs7Om4rAnNYMgZjrVKRQ,4058
113
- camel/models/openai_model.py,sha256=Fy5WJN9Lm3SVexCa7RBClssSb6-uFLl1A_0jH-STzkM,6564
114
- camel/models/qwen_model.py,sha256=GKGFfVUWvWiCT9HUFgZ_fdQaFy8Z3uAhTE5Em_r-zpY,4991
113
+ camel/models/openai_compatible_model.py,sha256=NnDSj7e-SDYDGq0VTQVHCE0kRTJ2JDb62Z8z0ZcpygA,4059
114
+ camel/models/openai_model.py,sha256=FkQawaaZ4hWh_Hdm0irOr9K5vIKT5VCnflI3EAPWzZc,6565
115
+ camel/models/qwen_model.py,sha256=dK--AZe0tWjgdJIp9ssVd63NWQeBe7qAn8QQhn711Zk,4992
115
116
  camel/models/reka_model.py,sha256=lwg27dzrEOlia9-apX5Km5sHShL6Fl55C4EOr8PXjDQ,8277
116
117
  camel/models/reward/__init__.py,sha256=8tvL9Qo9YAqllhcXB5yfH9dAwuvlXKNpKL1WIM_lJ9s,912
117
118
  camel/models/reward/base_reward_model.py,sha256=erCmBCl51oFNjEHCXWxdHKIPNVJnQlNGgYBDn2bFD-Q,2064
118
119
  camel/models/reward/evaluator.py,sha256=54ev5MuQ_5Tp0-LGO59EIuIkGrVMbtXXqpBR5Ps9kCM,2426
119
- camel/models/reward/nemotron_model.py,sha256=F9Nvgy9RIvWPoE7YI3p3-xi7ZuI_sv5pqC0nNV5m1v8,3868
120
- camel/models/samba_model.py,sha256=sND841pldlPOIRGA9KPnchfe2tVTel33UGfBZ7o2LtM,14479
121
- camel/models/sglang_model.py,sha256=cYrqZNwS2sgx9DWImRg42WcT1MxaGJ5dfKXcZPZAQ20,8145
120
+ camel/models/reward/nemotron_model.py,sha256=xzIdxBycugbESfOmWwVxbAszH2peSDheAY-KxukoKnY,3869
121
+ camel/models/samba_model.py,sha256=UBXZfaX3AlgzLkNu7uMk9L0iX-Ci29pCt5ucii6GzBI,14480
122
+ camel/models/sglang_model.py,sha256=dXOPSdskfF-gK2XUkzPkbTzY1lBVyjMEV6XWl-rEN7U,8147
122
123
  camel/models/stub_model.py,sha256=TKTTryatEqCfjQ8NTco9ipj29CbLLtmWEcF_VcaWvQI,3703
123
- camel/models/togetherai_model.py,sha256=J5kK_uaF7u6l7lj69pA_7D9AOq3BcVh8Dbrx0I-d5uk,5245
124
- camel/models/vllm_model.py,sha256=OjOjbpihb4L5uU0TVunXXiOpNmzuZGjhwzcElyhLZoU,5639
125
- camel/models/yi_model.py,sha256=9MLV2O8eRmkCvErkgsaYfE7wlnAYsCnM_EoZEzM0EiM,4906
126
- camel/models/zhipuai_model.py,sha256=hLvdQ1A2VylCxnTgTSlmQXVcRSOx--TDn_-w_Vb5O64,5120
124
+ camel/models/togetherai_model.py,sha256=05sI91AAHUqacG0_8vJPOHs_LxAjsCp6W4VhAH8-RN8,5246
125
+ camel/models/vllm_model.py,sha256=e57qjaHsZ-RTCsMVdMoyM-gseJwjtxiG2ePBKO5dnOQ,5640
126
+ camel/models/yi_model.py,sha256=twHdQ1VhNicm4iTqvpF7WmbEEWslhD8CqBurSFnXxVk,4907
127
+ camel/models/zhipuai_model.py,sha256=dc36vMSKg_oDcB7ZjMcwraWB350N5IIY3kvMTN5M8cM,5121
127
128
  camel/personas/__init__.py,sha256=b2EU-unbIfCZjgq2dODf9mq0L9-VP5QXDVTjeYyvKCM,804
128
129
  camel/personas/persona.py,sha256=Ssvp8coQU_kYuDm0W0J8r5AAZyOsn8EScLhVa0HjDOs,4221
129
130
  camel/personas/persona_hub.py,sha256=v5O3BE_krz6s1OOiRhhnODuCf-2cqIw1tDCWgGG55dU,10555
@@ -155,13 +156,13 @@ camel/retrievers/vector_retriever.py,sha256=LkOKwPJIeZJp8bovpUbsCZgakrQDX19BLGbU
155
156
  camel/runtime/__init__.py,sha256=QFxG8qYixImqSmC5bLXgT4_gkC5V8nq9dr9XlY4iZZM,1125
156
157
  camel/runtime/api.py,sha256=NBSg1C0v6RqlooTIzPEDKcHNixPTaQImFvWmWsaskhc,3095
157
158
  camel/runtime/base.py,sha256=KKBLO6PwWEWBXbYaVtO9JXqBT8110iYpMhgNSIxQvYQ,1512
158
- camel/runtime/configs.py,sha256=-hmUM640bWaLpYYek68nfrOrQICk5ii11x5ZK5zLzjI,2419
159
- camel/runtime/docker_runtime.py,sha256=4OCsEzPF_FPIxhmx16p9DXd8ao90VicSeZV0Y70l7TE,13551
160
- camel/runtime/llm_guard_runtime.py,sha256=V31kNh6L2xezBs8X5_8dsTfqqlPCn4fbxsOVZXGbqX0,8098
161
- camel/runtime/remote_http_runtime.py,sha256=1t8jnwfRd8zuia9EZtUjIZ_tP9-ehPthXLp7AGnxVzI,6644
159
+ camel/runtime/configs.py,sha256=7swJ6shD5CAnQj16D_j1BWJjRDHLue8_BJcQ1-YiKJI,2431
160
+ camel/runtime/docker_runtime.py,sha256=erQiP_vlu0xQD3iVYnRxHJVI6i_7tv_yrfRS7sbR0Lc,13558
161
+ camel/runtime/llm_guard_runtime.py,sha256=n8MImZsYLXCfr6LG6BFvlC75Al16GMJMvGp4vFsob6E,8101
162
+ camel/runtime/remote_http_runtime.py,sha256=G-uYajki-QTjeUdpCoPVDjvI-Rvc69aYvG3SVc2lm6s,6649
162
163
  camel/runtime/utils/__init__.py,sha256=_4kT7j4gW9t5Zd_AbFa2mcHe8rpLB0tVlgAhQHxfwQQ,875
163
- camel/runtime/utils/function_risk_toolkit.py,sha256=rXVnh5Dm9syHvjFGMMZH5ABSIhsxIEhm2_Af5DPJWLs,2355
164
- camel/runtime/utils/ignore_risk_toolkit.py,sha256=ms9xEpHdpCnfrl3ppaAhgERcifKKoD3FcJHmWRLI2zg,2693
164
+ camel/runtime/utils/function_risk_toolkit.py,sha256=0A9IN61JSziwKYB0AtCTZByXV9A3zWDRcNATG2V2dmA,2356
165
+ camel/runtime/utils/ignore_risk_toolkit.py,sha256=kvLyF7EWEjXhlQJsmvA3JDB7An_LjtFjCaanNxOVaBE,2695
165
166
  camel/schemas/__init__.py,sha256=FIispqu0jMi7DPFg8iGsc3NdbC0daxSbWjybd72F6cA,792
166
167
  camel/schemas/base.py,sha256=S5fDiqJmNzTOhxN3Wl93gAcZnu3ke71fhZod5lq4mPI,1660
167
168
  camel/schemas/openai_converter.py,sha256=heyQesFAAjo4RF4R5BB1SPpF4mbNt9UhTvszxyJYDTM,4310
@@ -205,20 +206,20 @@ camel/terminators/base.py,sha256=xmJzERX7GdSXcxZjAHHODa0rOxRChMSRboDCNHWSscs,151
205
206
  camel/terminators/response_terminator.py,sha256=n3G5KP6Oj7-7WlRN0yFcrtLpqAJKaKS0bmhrWlFfCgQ,4982
206
207
  camel/terminators/token_limit_terminator.py,sha256=YWv6ZR8R9yI2Qnf_3xES5bEE_O5bb2CxQ0EUXfMh34c,2118
207
208
  camel/toolkits/__init__.py,sha256=NS4O1h4MwQB0g8jH1HvN__e25Y6BhgTl1wzQCXJb1xc,2574
208
- camel/toolkits/arxiv_toolkit.py,sha256=WsK8WcrYrz54tNbYb0JKrohPYhbG95115z3dkh0iupo,5666
209
- camel/toolkits/ask_news_toolkit.py,sha256=1HzyS5ZChq8E98dL0rPJAHRGJBWBxvbYbGQu3qeC3qE,23156
209
+ camel/toolkits/arxiv_toolkit.py,sha256=wDsWOpZHOE5Rib35acCq3P2adpsunQpuL9kxUYx3Tas,5672
210
+ camel/toolkits/ask_news_toolkit.py,sha256=PIFGGVHpSOXs2lg-zA6qhlHF17f1CyCjGbpud90yG8I,23158
210
211
  camel/toolkits/base.py,sha256=XnERVclg201dG7BrawwbuSeSlkz1ngIfatES1ingpkA,1264
211
212
  camel/toolkits/code_execution.py,sha256=DRJ1yHDubv93CQfgm0tSi4Tn1uvqh3eGmYGXjtd2bCA,4464
212
213
  camel/toolkits/dalle_toolkit.py,sha256=Usmw3JiJErLQgWSB1qKq_bOACNwbUTQPFc_EsVzTrGo,5115
213
214
  camel/toolkits/data_commons_toolkit.py,sha256=_LJJ83eWEHuT8VsPLsH66LSakRkxwV4AkQmktN017S4,13060
214
215
  camel/toolkits/function_tool.py,sha256=Zo2F77DeMnrsgFJh6HD8zBjUIYRSlf6WAgUAos2LSFo,29417
215
- camel/toolkits/github_toolkit.py,sha256=tZyZTlvUK6uFxhB0Acr4tVmVKV_KTitJPqBSpdXrSeg,11625
216
+ camel/toolkits/github_toolkit.py,sha256=7HCw3kBvpMPL2sMQJ7H7gIslqEDBFyepdF3JicbRs0U,11628
216
217
  camel/toolkits/google_maps_toolkit.py,sha256=a5ex5_PyhOEriv_0UloUgSpXGI7b12lwhQyewp78s1I,11948
217
- camel/toolkits/google_scholar_toolkit.py,sha256=TVU2JlNR8u-zMgasIkOGgb4C3mh1UKDhHgU33WkM2Mg,6534
218
+ camel/toolkits/google_scholar_toolkit.py,sha256=eiSBzRmmAYTMP5feDLoWIiurm0RpyY03V8ZPSRxdTCg,7120
218
219
  camel/toolkits/human_toolkit.py,sha256=4YsZrCSFaMceM1MpGa-tg5gkmbdcZrm0qe3j2JRgfE8,1829
219
220
  camel/toolkits/linkedin_toolkit.py,sha256=r1q8Ds95chC9vxtsaUYUDEitM8tDjUw_MrkpWpM4W8s,7911
220
221
  camel/toolkits/math_toolkit.py,sha256=5yVF0bKuwkZIV01uICd3TOfktXlTERjKt4DrFyz_oaE,3639
221
- camel/toolkits/meshy_toolkit.py,sha256=jvXF5HocWH1yhQk6hGoxBpYrv6s6QUp43bT6wNJVS_g,6329
222
+ camel/toolkits/meshy_toolkit.py,sha256=V02qG1TKiBOH_1Ti1FXy8aQ_OiWjpM541QJFPYfAU1Q,6331
222
223
  camel/toolkits/notion_toolkit.py,sha256=jXvPBNs_VHMDDWa59UmTZuwFgJXgRgFirlH1BK70kHw,9506
223
224
  camel/toolkits/open_api_specs/biztoc/__init__.py,sha256=OKCZrQCDwaWtXIN_2rA9FSqEvgpQRieRoHh7Ek6N16A,702
224
225
  camel/toolkits/open_api_specs/biztoc/ai-plugin.json,sha256=IJinQbLv5MFPGFwdN7PbOhwArFVExSEZdJspe-mOBIo,866
@@ -248,7 +249,7 @@ camel/toolkits/open_api_specs/web_scraper/paths/scraper.py,sha256=aWy1_ppV4NVVEZ
248
249
  camel/toolkits/open_api_toolkit.py,sha256=Venfq8JwTMQfzRzzB7AYmYUMEX35hW0BjIv_ozFMiNk,23316
249
250
  camel/toolkits/reddit_toolkit.py,sha256=tb0qwgtawgWe-PPotKVsKqMqkSiACP6k9MzKHuMbkXU,8886
250
251
  camel/toolkits/retrieval_toolkit.py,sha256=gMHk-Y-KDROGd-yX9ykfpwAf6ViO678j9Q9Ju3sfBGo,3695
251
- camel/toolkits/search_toolkit.py,sha256=L71Fp5jg7yCh5AHwdRChQ-TU_dAuGgf1zpO8lDB81CM,26249
252
+ camel/toolkits/search_toolkit.py,sha256=LmTY6yyDpJi9XOXxL96uzihZT88_tZcSLxZBRj22Nd4,26251
252
253
  camel/toolkits/slack_toolkit.py,sha256=n8cn3kZIc27B-2KMTRK6Nsdan37SwMqBiBi1PMtuUvQ,10744
253
254
  camel/toolkits/stripe_toolkit.py,sha256=TTZerSG5ktYEgZLvCqVride3cqtyPbRdiIJRlvlxzzc,9576
254
255
  camel/toolkits/twitter_toolkit.py,sha256=ioAus3aFZi2GS3K73HqzRnXY9E7hr6MidO-asLFGZRM,15586
@@ -264,8 +265,8 @@ camel/utils/async_func.py,sha256=4esRhhGrvfm-iJRloUbU-sYWyHp_mt0bBBXpwyCv6vc,155
264
265
  camel/utils/commons.py,sha256=8TB55DseOepZtwlWqHPkqCivQKNecCOfzFKnqpD2hg4,18101
265
266
  camel/utils/constants.py,sha256=MQD3bgLIq_NATp0D1iFkrwfkCwVX-PAOSXheTkkEdkY,1410
266
267
  camel/utils/response_format.py,sha256=9KrbwtOM9cA3LSjTgLiK7oKy-53_uMh1cvpyNwwJpng,2419
267
- camel/utils/token_counting.py,sha256=DOWsADpnfmmWRXyt6aoiMF20JvG9V-7y_S7gwPllhNI,15027
268
- camel_ai-0.2.12.dist-info/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
269
- camel_ai-0.2.12.dist-info/METADATA,sha256=hs4xaNHHe-bXX9H5a8J8I9UQFubAz6jCpXc-fUGb9OY,31826
270
- camel_ai-0.2.12.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
271
- camel_ai-0.2.12.dist-info/RECORD,,
268
+ camel/utils/token_counting.py,sha256=df3mcY9IJgG1zTTmQbdRc6FhB5cD3n07BoXngNpu8Sw,15305
269
+ camel_ai-0.2.13.dist-info/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
270
+ camel_ai-0.2.13.dist-info/METADATA,sha256=Reihb0rQP8mdbX_EvEB7lhN56BJfkTZADp6yxrJxnTs,32269
271
+ camel_ai-0.2.13.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
272
+ camel_ai-0.2.13.dist-info/RECORD,,