camel-ai 0.2.8__py3-none-any.whl → 0.2.10__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 +5 -5
- camel/agents/__init__.py +4 -4
- camel/agents/base.py +4 -4
- camel/agents/chat_agent.py +32 -37
- camel/agents/critic_agent.py +4 -4
- camel/agents/deductive_reasoner_agent.py +4 -4
- camel/agents/embodied_agent.py +4 -4
- camel/agents/knowledge_graph_agent.py +4 -4
- camel/agents/role_assignment_agent.py +4 -4
- camel/agents/search_agent.py +4 -4
- camel/agents/task_agent.py +4 -4
- camel/agents/tool_agents/__init__.py +4 -4
- camel/agents/tool_agents/base.py +4 -4
- camel/agents/tool_agents/hugging_face_tool_agent.py +4 -4
- camel/bots/__init__.py +4 -4
- camel/bots/discord_app.py +4 -4
- camel/bots/slack/__init__.py +4 -4
- camel/bots/slack/models.py +4 -4
- camel/bots/slack/slack_app.py +4 -4
- camel/bots/telegram_bot.py +4 -4
- camel/configs/__init__.py +10 -4
- camel/configs/anthropic_config.py +4 -4
- camel/configs/base_config.py +4 -4
- camel/configs/cohere_config.py +76 -0
- camel/configs/deepseek_config.py +134 -0
- camel/configs/gemini_config.py +85 -127
- camel/configs/groq_config.py +4 -4
- camel/configs/litellm_config.py +4 -4
- camel/configs/mistral_config.py +4 -4
- camel/configs/ollama_config.py +4 -4
- camel/configs/openai_config.py +32 -7
- camel/configs/qwen_config.py +4 -4
- camel/configs/reka_config.py +4 -4
- camel/configs/samba_config.py +4 -4
- camel/configs/togetherai_config.py +4 -4
- camel/configs/vllm_config.py +4 -4
- camel/configs/yi_config.py +4 -4
- camel/configs/zhipuai_config.py +4 -4
- camel/embeddings/__init__.py +6 -4
- camel/embeddings/base.py +4 -4
- camel/embeddings/mistral_embedding.py +4 -4
- camel/embeddings/openai_compatible_embedding.py +91 -0
- camel/embeddings/openai_embedding.py +4 -4
- camel/embeddings/sentence_transformers_embeddings.py +4 -4
- camel/embeddings/vlm_embedding.py +4 -4
- camel/generators.py +4 -4
- camel/human.py +4 -4
- camel/interpreters/__init__.py +4 -4
- camel/interpreters/base.py +4 -4
- camel/interpreters/docker_interpreter.py +4 -4
- camel/interpreters/internal_python_interpreter.py +4 -4
- camel/interpreters/interpreter_error.py +4 -4
- camel/interpreters/ipython_interpreter.py +4 -4
- camel/interpreters/subprocess_interpreter.py +4 -4
- camel/loaders/__init__.py +4 -4
- camel/loaders/apify_reader.py +4 -4
- camel/loaders/base_io.py +4 -4
- camel/loaders/chunkr_reader.py +4 -4
- camel/loaders/firecrawl_reader.py +4 -4
- camel/loaders/jina_url_reader.py +4 -4
- camel/loaders/unstructured_io.py +4 -4
- camel/memories/__init__.py +4 -4
- camel/memories/agent_memories.py +4 -4
- camel/memories/base.py +4 -4
- camel/memories/blocks/__init__.py +4 -4
- camel/memories/blocks/chat_history_block.py +4 -4
- camel/memories/blocks/vectordb_block.py +4 -4
- camel/memories/context_creators/__init__.py +4 -4
- camel/memories/context_creators/score_based.py +4 -4
- camel/memories/records.py +4 -4
- camel/messages/__init__.py +20 -4
- camel/messages/base.py +108 -4
- camel/messages/conversion/__init__.py +29 -0
- camel/messages/conversion/models.py +178 -0
- camel/messages/conversion/sharegpt/__init__.py +20 -0
- camel/messages/conversion/sharegpt/function_call_formatter.py +49 -0
- camel/messages/conversion/sharegpt/hermes/__init__.py +19 -0
- camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +128 -0
- camel/messages/func_message.py +50 -4
- camel/models/__init__.py +8 -4
- camel/models/anthropic_model.py +4 -4
- camel/models/azure_openai_model.py +4 -4
- camel/models/base_model.py +4 -4
- camel/models/cohere_model.py +282 -0
- camel/models/deepseek_model.py +139 -0
- camel/models/gemini_model.py +61 -146
- camel/models/groq_model.py +4 -4
- camel/models/litellm_model.py +4 -4
- camel/models/mistral_model.py +4 -4
- camel/models/model_factory.py +10 -4
- camel/models/nemotron_model.py +4 -4
- camel/models/ollama_model.py +4 -4
- camel/models/openai_audio_models.py +4 -4
- camel/models/openai_compatible_model.py +4 -4
- camel/models/openai_model.py +42 -4
- camel/models/qwen_model.py +4 -4
- camel/models/reka_model.py +4 -4
- camel/models/samba_model.py +6 -5
- camel/models/stub_model.py +4 -4
- camel/models/togetherai_model.py +4 -4
- camel/models/vllm_model.py +4 -4
- camel/models/yi_model.py +4 -4
- camel/models/zhipuai_model.py +4 -4
- camel/personas/__init__.py +17 -0
- camel/personas/persona.py +103 -0
- camel/personas/persona_hub.py +293 -0
- camel/prompts/__init__.py +6 -4
- camel/prompts/ai_society.py +4 -4
- camel/prompts/base.py +4 -4
- camel/prompts/code.py +4 -4
- camel/prompts/evaluation.py +4 -4
- camel/prompts/generate_text_embedding_data.py +4 -4
- camel/prompts/image_craft.py +4 -4
- camel/prompts/misalignment.py +4 -4
- camel/prompts/multi_condition_image_craft.py +4 -4
- camel/prompts/object_recognition.py +4 -4
- camel/prompts/persona_hub.py +61 -0
- camel/prompts/prompt_templates.py +4 -4
- camel/prompts/role_description_prompt_template.py +4 -4
- camel/prompts/solution_extraction.py +4 -4
- camel/prompts/task_prompt_template.py +4 -4
- camel/prompts/translation.py +4 -4
- camel/prompts/video_description_prompt.py +4 -4
- camel/responses/__init__.py +4 -4
- camel/responses/agent_responses.py +4 -4
- camel/retrievers/__init__.py +4 -4
- camel/retrievers/auto_retriever.py +4 -4
- camel/retrievers/base.py +4 -4
- camel/retrievers/bm25_retriever.py +4 -4
- camel/retrievers/cohere_rerank_retriever.py +7 -9
- camel/retrievers/vector_retriever.py +4 -4
- camel/runtime/__init__.py +29 -0
- camel/runtime/api.py +93 -0
- camel/runtime/base.py +45 -0
- camel/runtime/configs.py +56 -0
- camel/runtime/docker_runtime.py +404 -0
- camel/runtime/llm_guard_runtime.py +199 -0
- camel/runtime/remote_http_runtime.py +204 -0
- camel/runtime/utils/__init__.py +20 -0
- camel/runtime/utils/function_risk_toolkit.py +58 -0
- camel/runtime/utils/ignore_risk_toolkit.py +72 -0
- camel/schemas/__init__.py +17 -0
- camel/schemas/base.py +45 -0
- camel/schemas/openai_converter.py +116 -0
- camel/societies/__init__.py +4 -4
- camel/societies/babyagi_playing.py +4 -4
- camel/societies/role_playing.py +7 -14
- camel/societies/workforce/__init__.py +4 -4
- camel/societies/workforce/base.py +4 -4
- camel/societies/workforce/prompts.py +4 -4
- camel/societies/workforce/role_playing_worker.py +4 -4
- camel/societies/workforce/single_agent_worker.py +4 -4
- camel/societies/workforce/task_channel.py +4 -4
- camel/societies/workforce/utils.py +4 -4
- camel/societies/workforce/worker.py +4 -4
- camel/societies/workforce/workforce.py +7 -7
- camel/storages/__init__.py +4 -4
- camel/storages/graph_storages/__init__.py +4 -4
- camel/storages/graph_storages/base.py +4 -4
- camel/storages/graph_storages/graph_element.py +4 -4
- camel/storages/graph_storages/nebula_graph.py +4 -4
- camel/storages/graph_storages/neo4j_graph.py +4 -4
- camel/storages/key_value_storages/__init__.py +4 -4
- camel/storages/key_value_storages/base.py +4 -4
- camel/storages/key_value_storages/in_memory.py +4 -4
- camel/storages/key_value_storages/json.py +4 -4
- camel/storages/key_value_storages/redis.py +4 -4
- camel/storages/object_storages/__init__.py +4 -4
- camel/storages/object_storages/amazon_s3.py +4 -4
- camel/storages/object_storages/azure_blob.py +4 -4
- camel/storages/object_storages/base.py +4 -4
- camel/storages/object_storages/google_cloud.py +4 -4
- camel/storages/vectordb_storages/__init__.py +4 -4
- camel/storages/vectordb_storages/base.py +4 -4
- camel/storages/vectordb_storages/milvus.py +4 -4
- camel/storages/vectordb_storages/qdrant.py +4 -4
- camel/tasks/__init__.py +4 -4
- camel/tasks/task.py +4 -4
- camel/tasks/task_prompt.py +4 -4
- camel/terminators/__init__.py +4 -4
- camel/terminators/base.py +4 -4
- camel/terminators/response_terminator.py +4 -4
- camel/terminators/token_limit_terminator.py +4 -4
- camel/toolkits/__init__.py +13 -17
- camel/toolkits/arxiv_toolkit.py +4 -4
- camel/toolkits/ask_news_toolkit.py +7 -18
- camel/toolkits/base.py +4 -4
- camel/toolkits/code_execution.py +20 -7
- camel/toolkits/dalle_toolkit.py +4 -7
- camel/toolkits/data_commons_toolkit.py +4 -4
- camel/toolkits/function_tool.py +220 -69
- camel/toolkits/github_toolkit.py +4 -4
- camel/toolkits/google_maps_toolkit.py +4 -4
- camel/toolkits/google_scholar_toolkit.py +4 -4
- camel/toolkits/human_toolkit.py +52 -0
- camel/toolkits/linkedin_toolkit.py +4 -4
- camel/toolkits/math_toolkit.py +4 -7
- camel/toolkits/notion_toolkit.py +4 -4
- camel/toolkits/open_api_specs/biztoc/__init__.py +4 -4
- camel/toolkits/open_api_specs/coursera/__init__.py +4 -4
- camel/toolkits/open_api_specs/create_qr_code/__init__.py +4 -4
- camel/toolkits/open_api_specs/klarna/__init__.py +4 -4
- camel/toolkits/open_api_specs/nasa_apod/__init__.py +4 -4
- camel/toolkits/open_api_specs/outschool/__init__.py +4 -4
- camel/toolkits/open_api_specs/outschool/paths/__init__.py +4 -4
- camel/toolkits/open_api_specs/outschool/paths/get_classes.py +4 -4
- camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +4 -4
- camel/toolkits/open_api_specs/security_config.py +4 -4
- camel/toolkits/open_api_specs/speak/__init__.py +4 -4
- camel/toolkits/open_api_specs/web_scraper/__init__.py +4 -4
- camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +4 -4
- camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +4 -4
- camel/toolkits/open_api_toolkit.py +4 -4
- camel/toolkits/reddit_toolkit.py +4 -4
- camel/toolkits/retrieval_toolkit.py +4 -4
- camel/toolkits/search_toolkit.py +49 -29
- camel/toolkits/slack_toolkit.py +4 -4
- camel/toolkits/twitter_toolkit.py +10 -13
- camel/toolkits/video_toolkit.py +211 -0
- camel/toolkits/weather_toolkit.py +4 -7
- camel/toolkits/whatsapp_toolkit.py +6 -6
- camel/types/__init__.py +6 -4
- camel/types/enums.py +77 -7
- camel/types/openai_types.py +6 -4
- camel/types/unified_model_type.py +9 -4
- camel/utils/__init__.py +35 -33
- camel/utils/async_func.py +4 -4
- camel/utils/commons.py +4 -4
- camel/utils/constants.py +4 -4
- camel/utils/response_format.py +63 -0
- camel/utils/token_counting.py +4 -4
- {camel_ai-0.2.8.dist-info → camel_ai-0.2.10.dist-info}/METADATA +108 -56
- camel_ai-0.2.10.dist-info/RECORD +246 -0
- camel_ai-0.2.8.dist-info/RECORD +0 -215
- {camel_ai-0.2.8.dist-info → camel_ai-0.2.10.dist-info}/LICENSE +0 -0
- {camel_ai-0.2.8.dist-info → camel_ai-0.2.10.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,211 @@
|
|
|
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 io
|
|
16
|
+
import logging
|
|
17
|
+
import re
|
|
18
|
+
import tempfile
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
from typing import List, Optional
|
|
21
|
+
|
|
22
|
+
from PIL import Image
|
|
23
|
+
|
|
24
|
+
from camel.toolkits.base import BaseToolkit
|
|
25
|
+
from camel.toolkits.function_tool import FunctionTool
|
|
26
|
+
from camel.utils import dependencies_required
|
|
27
|
+
|
|
28
|
+
logger = logging.getLogger(__name__)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _standardize_url(url: str) -> str:
|
|
32
|
+
r"""Standardize the given URL."""
|
|
33
|
+
# Special case for YouTube embed URLs
|
|
34
|
+
if "youtube.com/embed/" in url:
|
|
35
|
+
match = re.search(r"embed/([a-zA-Z0-9_-]+)", url)
|
|
36
|
+
if match:
|
|
37
|
+
return f"https://www.youtube.com/watch?v={match.group(1)}"
|
|
38
|
+
else:
|
|
39
|
+
raise ValueError(f"Invalid YouTube URL: {url}")
|
|
40
|
+
|
|
41
|
+
return url
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _capture_screenshot(video_file: str, timestamp: float) -> Image.Image:
|
|
45
|
+
r"""Capture a screenshot from a video file at a specific timestamp.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
video_file (str): The path to the video file.
|
|
49
|
+
timestamp (float): The time in seconds from which to capture the
|
|
50
|
+
screenshot.
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
Image.Image: The captured screenshot in the form of Image.Image.
|
|
54
|
+
"""
|
|
55
|
+
import ffmpeg
|
|
56
|
+
|
|
57
|
+
try:
|
|
58
|
+
out, _ = (
|
|
59
|
+
ffmpeg.input(video_file, ss=timestamp)
|
|
60
|
+
.filter('scale', 320, -1)
|
|
61
|
+
.output('pipe:', vframes=1, format='image2', vcodec='png')
|
|
62
|
+
.run(capture_stdout=True, capture_stderr=True)
|
|
63
|
+
)
|
|
64
|
+
except ffmpeg.Error as e:
|
|
65
|
+
raise RuntimeError(f"Failed to capture screenshot: {e.stderr}")
|
|
66
|
+
|
|
67
|
+
return Image.open(io.BytesIO(out))
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class VideoDownloaderToolkit(BaseToolkit):
|
|
71
|
+
r"""A class for downloading videos and optionally splitting them into
|
|
72
|
+
chunks.
|
|
73
|
+
|
|
74
|
+
Args:
|
|
75
|
+
download_directory (Optional[str], optional): The directory where the
|
|
76
|
+
video will be downloaded to. If not provided, video will be stored
|
|
77
|
+
in a temporary directory and will be cleaned up after use.
|
|
78
|
+
(default: :obj:`None`)
|
|
79
|
+
cookies_path (Optional[str], optional): The path to the cookies file
|
|
80
|
+
for the video service in Netscape format. (default: :obj:`None`)
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
@dependencies_required("yt_dlp", "ffmpeg")
|
|
84
|
+
def __init__(
|
|
85
|
+
self,
|
|
86
|
+
download_directory: Optional[str] = None,
|
|
87
|
+
cookies_path: Optional[str] = None,
|
|
88
|
+
) -> None:
|
|
89
|
+
self._cleanup = download_directory is None
|
|
90
|
+
self._cookies_path = cookies_path
|
|
91
|
+
|
|
92
|
+
self._download_directory = Path(
|
|
93
|
+
download_directory or tempfile.mkdtemp()
|
|
94
|
+
).resolve()
|
|
95
|
+
|
|
96
|
+
try:
|
|
97
|
+
self._download_directory.mkdir(parents=True, exist_ok=True)
|
|
98
|
+
except FileExistsError:
|
|
99
|
+
raise ValueError(
|
|
100
|
+
f"{self._download_directory} is not a valid directory."
|
|
101
|
+
)
|
|
102
|
+
except OSError as e:
|
|
103
|
+
raise ValueError(
|
|
104
|
+
f"Error creating directory {self._download_directory}: {e}"
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
logger.info(f"Video will be downloaded to {self._download_directory}")
|
|
108
|
+
|
|
109
|
+
def __del__(self) -> None:
|
|
110
|
+
r"""Deconstructor for the VideoDownloaderToolkit class.
|
|
111
|
+
|
|
112
|
+
Cleans up the downloaded video if they are stored in a temporary
|
|
113
|
+
directory.
|
|
114
|
+
"""
|
|
115
|
+
import shutil
|
|
116
|
+
|
|
117
|
+
if self._cleanup:
|
|
118
|
+
shutil.rmtree(self._download_directory, ignore_errors=True)
|
|
119
|
+
|
|
120
|
+
def _download_video(self, url: str) -> str:
|
|
121
|
+
r"""Download the video and optionally split it into chunks.
|
|
122
|
+
|
|
123
|
+
yt-dlp will detect if the video is downloaded automatically so there
|
|
124
|
+
is no need to check if the video exists.
|
|
125
|
+
|
|
126
|
+
Returns:
|
|
127
|
+
str: The path to the downloaded video file.
|
|
128
|
+
"""
|
|
129
|
+
import yt_dlp
|
|
130
|
+
|
|
131
|
+
video_template = self._download_directory / "%(title)s.%(ext)s"
|
|
132
|
+
ydl_opts = {
|
|
133
|
+
'format': 'bestvideo+bestaudio/best',
|
|
134
|
+
'outtmpl': str(video_template),
|
|
135
|
+
'force_generic_extractor': True,
|
|
136
|
+
'cookiefile': self._cookies_path,
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
try:
|
|
140
|
+
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
|
141
|
+
# Download the video and get the filename
|
|
142
|
+
logger.info(f"Downloading video from {url}...")
|
|
143
|
+
info = ydl.extract_info(url, download=True)
|
|
144
|
+
return ydl.prepare_filename(info)
|
|
145
|
+
except yt_dlp.utils.DownloadError as e:
|
|
146
|
+
raise RuntimeError(f"Failed to download video from {url}: {e}")
|
|
147
|
+
|
|
148
|
+
def get_video_bytes(
|
|
149
|
+
self,
|
|
150
|
+
video_url: str,
|
|
151
|
+
) -> bytes:
|
|
152
|
+
r"""Download video by the URL, and return the content in bytes.
|
|
153
|
+
|
|
154
|
+
Args:
|
|
155
|
+
video_url (str): The URL of the video to download.
|
|
156
|
+
|
|
157
|
+
Returns:
|
|
158
|
+
bytes: The video file content in bytes.
|
|
159
|
+
"""
|
|
160
|
+
url = _standardize_url(video_url)
|
|
161
|
+
video_file = self._download_video(url)
|
|
162
|
+
|
|
163
|
+
with open(video_file, 'rb') as f:
|
|
164
|
+
video_bytes = f.read()
|
|
165
|
+
|
|
166
|
+
return video_bytes
|
|
167
|
+
|
|
168
|
+
def get_video_screenshots(
|
|
169
|
+
self, video_url: str, amount: int
|
|
170
|
+
) -> List[Image.Image]:
|
|
171
|
+
r"""Capture screenshots from the video at specified timestamps or by
|
|
172
|
+
dividing the video into equal parts if an integer is provided.
|
|
173
|
+
|
|
174
|
+
Args:
|
|
175
|
+
video_url (str): The URL of the video to take screenshots.
|
|
176
|
+
amount (int): the amount of evenly split screenshots to capture.
|
|
177
|
+
|
|
178
|
+
Returns:
|
|
179
|
+
List[Image.Image]: A list of screenshots as Image.Image.
|
|
180
|
+
"""
|
|
181
|
+
import ffmpeg
|
|
182
|
+
|
|
183
|
+
url = _standardize_url(video_url)
|
|
184
|
+
video_file = self._download_video(url)
|
|
185
|
+
|
|
186
|
+
# Get the video length
|
|
187
|
+
try:
|
|
188
|
+
probe = ffmpeg.probe(video_file)
|
|
189
|
+
video_length = float(probe['format']['duration'])
|
|
190
|
+
except ffmpeg.Error as e:
|
|
191
|
+
raise RuntimeError(f"Failed to determine video length: {e.stderr}")
|
|
192
|
+
|
|
193
|
+
interval = video_length / (amount + 1)
|
|
194
|
+
timestamps = [i * interval for i in range(1, amount + 1)]
|
|
195
|
+
|
|
196
|
+
images = [_capture_screenshot(video_file, ts) for ts in timestamps]
|
|
197
|
+
|
|
198
|
+
return images
|
|
199
|
+
|
|
200
|
+
def get_tools(self) -> List[FunctionTool]:
|
|
201
|
+
r"""Returns a list of FunctionTool objects representing the
|
|
202
|
+
functions in the toolkit.
|
|
203
|
+
|
|
204
|
+
Returns:
|
|
205
|
+
List[FunctionTool]: A list of FunctionTool objects representing
|
|
206
|
+
the functions in the toolkit.
|
|
207
|
+
"""
|
|
208
|
+
return [
|
|
209
|
+
FunctionTool(self.get_video_bytes),
|
|
210
|
+
FunctionTool(self.get_video_screenshots),
|
|
211
|
+
]
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Licensed under the Apache License, Version 2.0 (the
|
|
1
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
5
5
|
#
|
|
6
6
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
7
7
|
#
|
|
8
8
|
# Unless required by applicable law or agreed to in writing, software
|
|
9
|
-
# distributed under the License is distributed on an
|
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
#
|
|
13
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import os
|
|
15
15
|
from typing import List, Literal
|
|
16
16
|
|
|
@@ -168,6 +168,3 @@ class WeatherToolkit(BaseToolkit):
|
|
|
168
168
|
return [
|
|
169
169
|
FunctionTool(self.get_weather_data),
|
|
170
170
|
]
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
WEATHER_FUNCS: List[FunctionTool] = WeatherToolkit().get_tools()
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Licensed under the Apache License, Version 2.0 (the
|
|
1
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
5
5
|
#
|
|
6
6
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
7
7
|
#
|
|
8
8
|
# Unless required by applicable law or agreed to in writing, software
|
|
9
|
-
# distributed under the License is distributed on an
|
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
#
|
|
13
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
|
|
15
15
|
import os
|
|
16
16
|
from typing import Any, Dict, List, Union
|
|
@@ -163,11 +163,11 @@ class WhatsAppToolkit(BaseToolkit):
|
|
|
163
163
|
return f"Failed to retrieve business profile: {e!s}"
|
|
164
164
|
|
|
165
165
|
def get_tools(self) -> List[FunctionTool]:
|
|
166
|
-
r"""Returns a list of
|
|
166
|
+
r"""Returns a list of FunctionTool objects representing the
|
|
167
167
|
functions in the toolkit.
|
|
168
168
|
|
|
169
169
|
Returns:
|
|
170
|
-
List[
|
|
170
|
+
List[FunctionTool]: A list of FunctionTool objects for the
|
|
171
171
|
toolkit methods.
|
|
172
172
|
"""
|
|
173
173
|
return [
|
camel/types/__init__.py
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Licensed under the Apache License, Version 2.0 (the
|
|
1
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
5
5
|
#
|
|
6
6
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
7
7
|
#
|
|
8
8
|
# Unless required by applicable law or agreed to in writing, software
|
|
9
|
-
# distributed under the License is distributed on an
|
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
#
|
|
13
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
from .enums import (
|
|
15
15
|
AudioModelType,
|
|
16
16
|
EmbeddingModelType,
|
|
@@ -40,6 +40,7 @@ from .openai_types import (
|
|
|
40
40
|
Choice,
|
|
41
41
|
CompletionUsage,
|
|
42
42
|
NotGiven,
|
|
43
|
+
ParsedChatCompletion,
|
|
43
44
|
)
|
|
44
45
|
from .unified_model_type import UnifiedModelType
|
|
45
46
|
|
|
@@ -71,4 +72,5 @@ __all__ = [
|
|
|
71
72
|
'UnifiedModelType',
|
|
72
73
|
'NOT_GIVEN',
|
|
73
74
|
'NotGiven',
|
|
75
|
+
'ParsedChatCompletion',
|
|
74
76
|
]
|
camel/types/enums.py
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Licensed under the Apache License, Version 2.0 (the
|
|
1
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
5
5
|
#
|
|
6
6
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
7
7
|
#
|
|
8
8
|
# Unless required by applicable law or agreed to in writing, software
|
|
9
|
-
# distributed under the License is distributed on an
|
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
#
|
|
13
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
|
+
import os
|
|
14
15
|
from enum import Enum, EnumMeta
|
|
15
16
|
from typing import cast
|
|
16
17
|
|
|
@@ -26,7 +27,7 @@ class RoleType(Enum):
|
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
class ModelType(UnifiedModelType, Enum):
|
|
29
|
-
DEFAULT = "gpt-4o-mini"
|
|
30
|
+
DEFAULT = os.getenv("DEFAULT_MODEL_TYPE", "gpt-4o-mini")
|
|
30
31
|
|
|
31
32
|
GPT_3_5_TURBO = "gpt-3.5-turbo"
|
|
32
33
|
GPT_4 = "gpt-4"
|
|
@@ -69,6 +70,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
69
70
|
# Gemini models
|
|
70
71
|
GEMINI_1_5_FLASH = "gemini-1.5-flash"
|
|
71
72
|
GEMINI_1_5_PRO = "gemini-1.5-pro"
|
|
73
|
+
GEMINI_EXP_1114 = "gemini-exp-1114"
|
|
72
74
|
|
|
73
75
|
# Mistral AI models
|
|
74
76
|
MISTRAL_3B = "ministral-3b-latest"
|
|
@@ -87,6 +89,13 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
87
89
|
REKA_FLASH = "reka-flash"
|
|
88
90
|
REKA_EDGE = "reka-edge"
|
|
89
91
|
|
|
92
|
+
# Cohere models
|
|
93
|
+
COHERE_COMMAND_R_PLUS = "command-r-plus"
|
|
94
|
+
COHERE_COMMAND_R = "command-r"
|
|
95
|
+
COHERE_COMMAND_LIGHT = "command-light"
|
|
96
|
+
COHERE_COMMAND = "command"
|
|
97
|
+
COHERE_COMMAND_NIGHTLY = "command-nightly"
|
|
98
|
+
|
|
90
99
|
# Qwen models (Aliyun)
|
|
91
100
|
QWEN_MAX = "qwen-max"
|
|
92
101
|
QWEN_PLUS = "qwen-plus"
|
|
@@ -97,6 +106,11 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
97
106
|
QWEN_MATH_PLUS = "qwen-math-plus"
|
|
98
107
|
QWEN_MATH_TURBO = "qwen-math-turbo"
|
|
99
108
|
QWEN_CODER_TURBO = "qwen-coder-turbo"
|
|
109
|
+
QWEN_2_5_CODER_32B = "qwen2.5-coder-32b-instruct"
|
|
110
|
+
QWEN_2_5_72B = "qwen2.5-72b-instruct"
|
|
111
|
+
QWEN_2_5_32B = "qwen2.5-32b-instruct"
|
|
112
|
+
QWEN_2_5_14B = "qwen2.5-14b-instruct"
|
|
113
|
+
QWEN_QWQ_32B = "qwq-32b-preview"
|
|
100
114
|
|
|
101
115
|
# Yi models (01-ai)
|
|
102
116
|
YI_LIGHTNING = "yi-lightning"
|
|
@@ -109,6 +123,9 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
109
123
|
YI_LARGE_RAG = "yi-large-rag"
|
|
110
124
|
YI_LARGE_FC = "yi-large-fc"
|
|
111
125
|
|
|
126
|
+
# DeepSeek models
|
|
127
|
+
DEEPSEEK_CHAT = "deepseek-chat"
|
|
128
|
+
|
|
112
129
|
def __str__(self):
|
|
113
130
|
return self.value
|
|
114
131
|
|
|
@@ -227,6 +244,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
227
244
|
return self in {
|
|
228
245
|
ModelType.GEMINI_1_5_FLASH,
|
|
229
246
|
ModelType.GEMINI_1_5_PRO,
|
|
247
|
+
ModelType.GEMINI_EXP_1114,
|
|
230
248
|
}
|
|
231
249
|
|
|
232
250
|
@property
|
|
@@ -242,6 +260,21 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
242
260
|
ModelType.REKA_FLASH,
|
|
243
261
|
}
|
|
244
262
|
|
|
263
|
+
@property
|
|
264
|
+
def is_cohere(self) -> bool:
|
|
265
|
+
r"""Returns whether this type of models is a Cohere model.
|
|
266
|
+
|
|
267
|
+
Returns:
|
|
268
|
+
bool: Whether this type of models is Cohere.
|
|
269
|
+
"""
|
|
270
|
+
return self in {
|
|
271
|
+
ModelType.COHERE_COMMAND_R_PLUS,
|
|
272
|
+
ModelType.COHERE_COMMAND_R,
|
|
273
|
+
ModelType.COHERE_COMMAND_LIGHT,
|
|
274
|
+
ModelType.COHERE_COMMAND,
|
|
275
|
+
ModelType.COHERE_COMMAND_NIGHTLY,
|
|
276
|
+
}
|
|
277
|
+
|
|
245
278
|
@property
|
|
246
279
|
def is_yi(self) -> bool:
|
|
247
280
|
r"""Returns whether this type of models is Yi model.
|
|
@@ -273,6 +306,17 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
273
306
|
ModelType.QWEN_MATH_PLUS,
|
|
274
307
|
ModelType.QWEN_MATH_TURBO,
|
|
275
308
|
ModelType.QWEN_CODER_TURBO,
|
|
309
|
+
ModelType.QWEN_2_5_CODER_32B,
|
|
310
|
+
ModelType.QWEN_2_5_72B,
|
|
311
|
+
ModelType.QWEN_2_5_32B,
|
|
312
|
+
ModelType.QWEN_2_5_14B,
|
|
313
|
+
ModelType.QWEN_QWQ_32B,
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
@property
|
|
317
|
+
def is_deepseek(self) -> bool:
|
|
318
|
+
return self in {
|
|
319
|
+
ModelType.DEEPSEEK_CHAT,
|
|
276
320
|
}
|
|
277
321
|
|
|
278
322
|
@property
|
|
@@ -292,6 +336,8 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
292
336
|
ModelType.REKA_FLASH,
|
|
293
337
|
ModelType.QWEN_MATH_PLUS,
|
|
294
338
|
ModelType.QWEN_MATH_TURBO,
|
|
339
|
+
ModelType.COHERE_COMMAND,
|
|
340
|
+
ModelType.COHERE_COMMAND_LIGHT,
|
|
295
341
|
}:
|
|
296
342
|
return 4_096
|
|
297
343
|
elif self in {
|
|
@@ -324,9 +370,13 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
324
370
|
ModelType.YI_LARGE_FC,
|
|
325
371
|
ModelType.QWEN_MAX,
|
|
326
372
|
ModelType.QWEN_VL_MAX,
|
|
373
|
+
ModelType.QWEN_QWQ_32B,
|
|
327
374
|
}:
|
|
328
375
|
return 32_768
|
|
329
|
-
elif self in {
|
|
376
|
+
elif self in {
|
|
377
|
+
ModelType.MISTRAL_MIXTRAL_8x22B,
|
|
378
|
+
ModelType.DEEPSEEK_CHAT,
|
|
379
|
+
}:
|
|
330
380
|
return 64_000
|
|
331
381
|
elif self in {
|
|
332
382
|
ModelType.CLAUDE_2_0,
|
|
@@ -344,6 +394,13 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
344
394
|
ModelType.MISTRAL_PIXTRAL_12B,
|
|
345
395
|
ModelType.MISTRAL_8B,
|
|
346
396
|
ModelType.MISTRAL_3B,
|
|
397
|
+
ModelType.QWEN_2_5_CODER_32B,
|
|
398
|
+
ModelType.QWEN_2_5_72B,
|
|
399
|
+
ModelType.QWEN_2_5_32B,
|
|
400
|
+
ModelType.QWEN_2_5_14B,
|
|
401
|
+
ModelType.COHERE_COMMAND_R,
|
|
402
|
+
ModelType.COHERE_COMMAND_R_PLUS,
|
|
403
|
+
ModelType.COHERE_COMMAND_NIGHTLY,
|
|
347
404
|
}:
|
|
348
405
|
return 128_000
|
|
349
406
|
elif self in {
|
|
@@ -371,6 +428,7 @@ class ModelType(UnifiedModelType, Enum):
|
|
|
371
428
|
elif self in {
|
|
372
429
|
ModelType.GEMINI_1_5_FLASH,
|
|
373
430
|
ModelType.GEMINI_1_5_PRO,
|
|
431
|
+
ModelType.GEMINI_EXP_1114, # Not given in docs, assuming the same
|
|
374
432
|
}:
|
|
375
433
|
return 1_048_576
|
|
376
434
|
elif self in {
|
|
@@ -505,7 +563,7 @@ class OpenAPIName(Enum):
|
|
|
505
563
|
|
|
506
564
|
|
|
507
565
|
class ModelPlatformType(Enum):
|
|
508
|
-
DEFAULT = "openai"
|
|
566
|
+
DEFAULT = os.getenv("DEFAULT_MODEL_PLATFORM_TYPE", "openai")
|
|
509
567
|
|
|
510
568
|
OPENAI = "openai"
|
|
511
569
|
AZURE = "azure"
|
|
@@ -521,8 +579,10 @@ class ModelPlatformType(Enum):
|
|
|
521
579
|
TOGETHER = "together"
|
|
522
580
|
OPENAI_COMPATIBLE_MODEL = "openai-compatible-model"
|
|
523
581
|
SAMBA = "samba-nova"
|
|
582
|
+
COHERE = "cohere"
|
|
524
583
|
YI = "lingyiwanwu"
|
|
525
584
|
QWEN = "tongyi-qianwen"
|
|
585
|
+
DEEPSEEK = "deepseek"
|
|
526
586
|
|
|
527
587
|
@property
|
|
528
588
|
def is_openai(self) -> bool:
|
|
@@ -595,6 +655,11 @@ class ModelPlatformType(Enum):
|
|
|
595
655
|
r"""Returns whether this platform is Samba Nova."""
|
|
596
656
|
return self is ModelPlatformType.SAMBA
|
|
597
657
|
|
|
658
|
+
@property
|
|
659
|
+
def is_cohere(self) -> bool:
|
|
660
|
+
r"""Returns whether this platform is Cohere."""
|
|
661
|
+
return self is ModelPlatformType.COHERE
|
|
662
|
+
|
|
598
663
|
@property
|
|
599
664
|
def is_yi(self) -> bool:
|
|
600
665
|
r"""Returns whether this platform is Yi."""
|
|
@@ -605,6 +670,11 @@ class ModelPlatformType(Enum):
|
|
|
605
670
|
r"""Returns whether this platform is Qwen."""
|
|
606
671
|
return self is ModelPlatformType.QWEN
|
|
607
672
|
|
|
673
|
+
@property
|
|
674
|
+
def is_deepseek(self) -> bool:
|
|
675
|
+
r"""Returns whether this platform is DeepSeek."""
|
|
676
|
+
return self is ModelPlatformType.DEEPSEEK
|
|
677
|
+
|
|
608
678
|
|
|
609
679
|
class AudioModelType(Enum):
|
|
610
680
|
TTS_1 = "tts-1"
|
camel/types/openai_types.py
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Licensed under the Apache License, Version 2.0 (the
|
|
1
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
5
5
|
#
|
|
6
6
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
7
7
|
#
|
|
8
8
|
# Unless required by applicable law or agreed to in writing, software
|
|
9
|
-
# distributed under the License is distributed on an
|
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
#
|
|
13
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
# isort: skip_file
|
|
15
15
|
from openai.types.chat.chat_completion import ChatCompletion, Choice
|
|
16
16
|
from openai.types.chat.chat_completion_assistant_message_param import (
|
|
@@ -31,6 +31,7 @@ from openai.types.chat.chat_completion_user_message_param import (
|
|
|
31
31
|
ChatCompletionUserMessageParam,
|
|
32
32
|
)
|
|
33
33
|
from openai.types.completion_usage import CompletionUsage
|
|
34
|
+
from openai.types.chat import ParsedChatCompletion
|
|
34
35
|
from openai._types import NOT_GIVEN, NotGiven
|
|
35
36
|
|
|
36
37
|
Choice = Choice
|
|
@@ -45,3 +46,4 @@ ChatCompletionFunctionMessageParam = ChatCompletionFunctionMessageParam
|
|
|
45
46
|
CompletionUsage = CompletionUsage
|
|
46
47
|
NOT_GIVEN = NOT_GIVEN
|
|
47
48
|
NotGiven = NotGiven
|
|
49
|
+
ParsedChatCompletion = ParsedChatCompletion
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Licensed under the Apache License, Version 2.0 (the
|
|
1
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
5
5
|
#
|
|
6
6
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
7
7
|
#
|
|
8
8
|
# Unless required by applicable law or agreed to in writing, software
|
|
9
|
-
# distributed under the License is distributed on an
|
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
#
|
|
13
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import logging
|
|
15
15
|
from threading import Lock
|
|
16
16
|
from typing import TYPE_CHECKING, ClassVar, Dict, Union, cast
|
|
@@ -98,6 +98,11 @@ class UnifiedModelType(str):
|
|
|
98
98
|
r"""Returns whether the model is a Reka model."""
|
|
99
99
|
return True
|
|
100
100
|
|
|
101
|
+
@property
|
|
102
|
+
def is_cohere(self) -> bool:
|
|
103
|
+
r"""Returns whether the model is a Cohere model."""
|
|
104
|
+
return True
|
|
105
|
+
|
|
101
106
|
@property
|
|
102
107
|
def is_yi(self) -> bool:
|
|
103
108
|
r"""Returns whether the model is a Yi model."""
|
camel/utils/__init__.py
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Licensed under the Apache License, Version 2.0 (the
|
|
1
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
5
5
|
#
|
|
6
6
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
7
7
|
#
|
|
8
8
|
# Unless required by applicable law or agreed to in writing, software
|
|
9
|
-
# distributed under the License is distributed on an
|
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
#
|
|
13
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
|
|
15
15
|
from .commons import (
|
|
16
16
|
AgentOpsMeta,
|
|
@@ -36,6 +36,7 @@ from .commons import (
|
|
|
36
36
|
track_agent,
|
|
37
37
|
)
|
|
38
38
|
from .constants import Constants
|
|
39
|
+
from .response_format import get_pydantic_model
|
|
39
40
|
from .token_counting import (
|
|
40
41
|
AnthropicTokenCounter,
|
|
41
42
|
BaseTokenCounter,
|
|
@@ -47,33 +48,34 @@ from .token_counting import (
|
|
|
47
48
|
)
|
|
48
49
|
|
|
49
50
|
__all__ = [
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
51
|
+
"print_text_animated",
|
|
52
|
+
"get_prompt_template_key_words",
|
|
53
|
+
"get_first_int",
|
|
54
|
+
"download_tasks",
|
|
55
|
+
"get_task_list",
|
|
56
|
+
"check_server_running",
|
|
57
|
+
"AnthropicTokenCounter",
|
|
58
|
+
"get_system_information",
|
|
59
|
+
"to_pascal",
|
|
60
|
+
"get_model_encoding",
|
|
61
|
+
"BaseTokenCounter",
|
|
62
|
+
"OpenAITokenCounter",
|
|
63
|
+
"LiteLLMTokenCounter",
|
|
64
|
+
"Constants",
|
|
65
|
+
"text_extract_from_web",
|
|
66
|
+
"create_chunks",
|
|
67
|
+
"dependencies_required",
|
|
68
|
+
"api_keys_required",
|
|
69
|
+
"is_docker_running",
|
|
70
|
+
"GeminiTokenCounter",
|
|
71
|
+
"MistralTokenCounter",
|
|
72
|
+
"get_pydantic_major_version",
|
|
73
|
+
"get_pydantic_object_schema",
|
|
74
|
+
"func_string_to_callable",
|
|
75
|
+
"json_to_function_code",
|
|
76
|
+
"agentops_decorator",
|
|
77
|
+
"AgentOpsMeta",
|
|
78
|
+
"track_agent",
|
|
79
|
+
"handle_http_error",
|
|
80
|
+
"get_pydantic_model",
|
|
79
81
|
]
|