camel-ai 0.2.9__py3-none-any.whl → 0.2.11__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 +10 -5
- camel/agents/__init__.py +4 -4
- camel/agents/base.py +4 -4
- camel/agents/chat_agent.py +106 -42
- camel/agents/critic_agent.py +4 -4
- camel/agents/deductive_reasoner_agent.py +8 -5
- 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 +13 -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 -7
- camel/configs/nvidia_config.py +70 -0
- 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 +14 -5
- 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 +8 -5
- 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 +11 -6
- 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 +11 -6
- 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 -7
- camel/loaders/jina_url_reader.py +4 -4
- camel/loaders/unstructured_io.py +4 -4
- camel/logger.py +112 -0
- 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 +118 -11
- camel/messages/conversion/__init__.py +31 -0
- camel/messages/conversion/alpaca.py +122 -0
- camel/messages/conversion/conversation_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 +13 -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 +13 -4
- camel/models/model_manager.py +212 -0
- camel/models/nemotron_model.py +4 -4
- camel/models/nvidia_model.py +141 -0
- 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 +43 -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 +26 -9
- 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 +8 -5
- camel/societies/role_playing.py +4 -4
- 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 +16 -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 +57 -10
- 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 +53 -0
- camel/toolkits/linkedin_toolkit.py +4 -4
- camel/toolkits/math_toolkit.py +4 -7
- camel/toolkits/meshy_toolkit.py +185 -0
- 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 +13 -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 +118 -15
- 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 +26 -9
- camel/utils/constants.py +4 -4
- camel/utils/response_format.py +63 -0
- camel/utils/token_counting.py +8 -5
- {camel_ai-0.2.9.dist-info → camel_ai-0.2.11.dist-info}/METADATA +108 -56
- camel_ai-0.2.11.dist-info/RECORD +252 -0
- camel_ai-0.2.9.dist-info/RECORD +0 -215
- {camel_ai-0.2.9.dist-info → camel_ai-0.2.11.dist-info}/LICENSE +0 -0
- {camel_ai-0.2.9.dist-info → camel_ai-0.2.11.dist-info}/WHEEL +0 -0
|
@@ -1,24 +1,22 @@
|
|
|
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, Optional
|
|
17
17
|
|
|
18
18
|
from pydantic import BaseModel
|
|
19
19
|
|
|
20
|
-
from camel.utils import api_keys_required
|
|
21
|
-
|
|
22
20
|
|
|
23
21
|
class Firecrawl:
|
|
24
22
|
r"""Firecrawl allows you to turn entire websites into LLM-ready markdown.
|
|
@@ -32,7 +30,6 @@ class Firecrawl:
|
|
|
32
30
|
https://docs.firecrawl.dev/introduction
|
|
33
31
|
"""
|
|
34
32
|
|
|
35
|
-
@api_keys_required("FIRECRAWL_API_KEY")
|
|
36
33
|
def __init__(
|
|
37
34
|
self,
|
|
38
35
|
api_key: Optional[str] = None,
|
camel/loaders/jina_url_reader.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
|
import os
|
|
16
16
|
from typing import Any, Optional
|
camel/loaders/unstructured_io.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
|
import uuid
|
|
15
15
|
import warnings
|
|
16
16
|
from typing import (
|
camel/logger.py
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
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 logging
|
|
16
|
+
import os
|
|
17
|
+
import sys
|
|
18
|
+
|
|
19
|
+
# Create a private logger
|
|
20
|
+
_logger = logging.getLogger('camel')
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _configure_library_logging():
|
|
24
|
+
if os.environ.get('CAMEL_LOGGING_DISABLED', 'False').lower() == 'true':
|
|
25
|
+
return
|
|
26
|
+
|
|
27
|
+
if not logging.root.handlers and not _logger.handlers:
|
|
28
|
+
logging.basicConfig(
|
|
29
|
+
level=os.environ.get('LOGLEVEL', 'INFO').upper(),
|
|
30
|
+
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
|
31
|
+
stream=sys.stdout,
|
|
32
|
+
)
|
|
33
|
+
logging.setLoggerClass(logging.Logger)
|
|
34
|
+
_logger.info("Camel library logging has been configured.")
|
|
35
|
+
else:
|
|
36
|
+
_logger.debug("Existing logger configuration found, using that.")
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def disable_logging():
|
|
40
|
+
r"""Disable all logging for the Camel library.
|
|
41
|
+
|
|
42
|
+
This function sets the log level to a value higher than CRITICAL,
|
|
43
|
+
effectively disabling all log messages, and adds a NullHandler to
|
|
44
|
+
suppress any potential warnings about no handlers being found.
|
|
45
|
+
"""
|
|
46
|
+
os.environ['CAMEL_LOGGING_DISABLED'] = 'true'
|
|
47
|
+
_logger.setLevel(logging.CRITICAL + 1)
|
|
48
|
+
# Avoid adding multiple NullHandlers
|
|
49
|
+
if not any(
|
|
50
|
+
isinstance(handler, logging.NullHandler)
|
|
51
|
+
for handler in _logger.handlers
|
|
52
|
+
):
|
|
53
|
+
_logger.addHandler(logging.NullHandler())
|
|
54
|
+
_logger.debug("Logging has been disabled.")
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def enable_logging():
|
|
58
|
+
r"""Enable logging for the Camel library.
|
|
59
|
+
|
|
60
|
+
This function re-enables logging if it was previously disabled,
|
|
61
|
+
and configures the library logging using the default settings.
|
|
62
|
+
If the logging is already configured,
|
|
63
|
+
this function does not change its configuration.
|
|
64
|
+
"""
|
|
65
|
+
os.environ['CAMEL_LOGGING_DISABLED'] = 'false'
|
|
66
|
+
_configure_library_logging()
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def set_log_level(level):
|
|
70
|
+
r"""Set the logging level for the Camel library.
|
|
71
|
+
|
|
72
|
+
Args:
|
|
73
|
+
level (Union[str, int]): The logging level to set. This can be a string
|
|
74
|
+
(e.g., 'INFO') or a logging level constant (e.g., logging.INFO,
|
|
75
|
+
logging.DEBUG).
|
|
76
|
+
See https://docs.python.org/3/library/logging.html#levels
|
|
77
|
+
|
|
78
|
+
Raises:
|
|
79
|
+
ValueError: If the provided level is not a valid logging level.
|
|
80
|
+
"""
|
|
81
|
+
valid_levels = ['NOTSET', 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
|
|
82
|
+
if isinstance(level, str):
|
|
83
|
+
if level.upper() not in valid_levels:
|
|
84
|
+
raise ValueError(
|
|
85
|
+
f"Invalid logging level."
|
|
86
|
+
f" Choose from: {', '.join(valid_levels)}"
|
|
87
|
+
)
|
|
88
|
+
level = level.upper()
|
|
89
|
+
elif not isinstance(level, int):
|
|
90
|
+
raise ValueError(
|
|
91
|
+
"Logging level must be an option from the logging module."
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
_logger.setLevel(level)
|
|
95
|
+
_logger.debug(f"Logging level set to: {logging.getLevelName(level)}")
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def get_logger(name):
|
|
99
|
+
r"""Get a logger with the specified name, prefixed with 'camel.'.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
name (str): The name to be appended to 'camel.' to create the logger.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
logging.Logger: A logger instance with the name 'camel.{name}'.
|
|
106
|
+
"""
|
|
107
|
+
return logging.getLogger(f'camel.{name}')
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
# Lazy configuration: Only configure logging if explicitly enabled.
|
|
111
|
+
if os.environ.get('CAMEL_LOGGING_DISABLED', 'False').strip().lower() != 'true':
|
|
112
|
+
_configure_library_logging()
|
camel/memories/__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 .agent_memories import (
|
|
16
16
|
ChatHistoryMemory,
|
camel/memories/agent_memories.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 typing import List, Optional
|
|
16
16
|
|
camel/memories/base.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 abc import ABC, abstractmethod
|
|
16
16
|
from typing import List, Tuple
|
|
@@ -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 .chat_history_block import ChatHistoryBlock
|
|
16
16
|
from .vectordb_block import VectorDBBlock
|
|
@@ -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 warnings
|
|
15
15
|
from typing import List, Optional
|
|
16
16
|
|
|
@@ -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 typing import List, Optional
|
|
16
16
|
|
|
@@ -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 .score_based import ScoreBasedContextCreator
|
|
16
16
|
|
|
@@ -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 typing import List, Tuple
|
|
15
15
|
|
|
16
16
|
from pydantic import BaseModel
|
camel/memories/records.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 dataclasses import asdict
|
|
16
16
|
from typing import Any, ClassVar, Dict
|
camel/messages/__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 camel.types import (
|
|
15
15
|
ChatCompletionAssistantMessageParam,
|
|
16
16
|
ChatCompletionFunctionMessageParam,
|
|
@@ -19,12 +19,24 @@ from camel.types import (
|
|
|
19
19
|
ChatCompletionUserMessageParam,
|
|
20
20
|
)
|
|
21
21
|
|
|
22
|
+
from .conversion import (
|
|
23
|
+
HermesFunctionFormatter,
|
|
24
|
+
ShareGPTMessage,
|
|
25
|
+
)
|
|
26
|
+
from .conversion.conversation_models import (
|
|
27
|
+
ShareGPTConversation,
|
|
28
|
+
)
|
|
29
|
+
from .conversion.sharegpt.function_call_formatter import (
|
|
30
|
+
FunctionCallFormatter,
|
|
31
|
+
)
|
|
32
|
+
|
|
22
33
|
OpenAISystemMessage = ChatCompletionSystemMessageParam
|
|
23
34
|
OpenAIAssistantMessage = ChatCompletionAssistantMessageParam
|
|
24
35
|
OpenAIUserMessage = ChatCompletionUserMessageParam
|
|
25
36
|
OpenAIFunctionMessage = ChatCompletionFunctionMessageParam
|
|
26
37
|
OpenAIMessage = ChatCompletionMessageParam
|
|
27
38
|
|
|
39
|
+
|
|
28
40
|
from .base import BaseMessage # noqa: E402
|
|
29
41
|
from .func_message import FunctionCallingMessage # noqa: E402
|
|
30
42
|
|
|
@@ -34,6 +46,10 @@ __all__ = [
|
|
|
34
46
|
'OpenAIUserMessage',
|
|
35
47
|
'OpenAIFunctionMessage',
|
|
36
48
|
'OpenAIMessage',
|
|
49
|
+
'FunctionCallFormatter',
|
|
50
|
+
'HermesFunctionFormatter',
|
|
51
|
+
'ShareGPTConversation',
|
|
52
|
+
'ShareGPTMessage',
|
|
37
53
|
'BaseMessage',
|
|
38
54
|
'FunctionCallingMessage',
|
|
39
55
|
]
|
camel/messages/base.py
CHANGED
|
@@ -1,30 +1,35 @@
|
|
|
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 base64
|
|
15
15
|
import io
|
|
16
|
+
import re
|
|
16
17
|
from dataclasses import dataclass
|
|
17
|
-
from typing import Any, Dict, List, Literal, Optional, Tuple, Union
|
|
18
|
+
from typing import Any, Dict, List, Literal, Optional, Tuple, Type, Union
|
|
18
19
|
|
|
19
20
|
import numpy as np
|
|
20
21
|
from PIL import Image
|
|
22
|
+
from pydantic import BaseModel
|
|
21
23
|
|
|
22
24
|
from camel.messages import (
|
|
25
|
+
FunctionCallFormatter,
|
|
26
|
+
HermesFunctionFormatter,
|
|
23
27
|
OpenAIAssistantMessage,
|
|
24
28
|
OpenAIMessage,
|
|
25
29
|
OpenAISystemMessage,
|
|
26
30
|
OpenAIUserMessage,
|
|
27
31
|
)
|
|
32
|
+
from camel.messages.conversion import ShareGPTMessage
|
|
28
33
|
from camel.prompts import CodePrompt, TextPrompt
|
|
29
34
|
from camel.types import (
|
|
30
35
|
OpenAIBackendRole,
|
|
@@ -47,24 +52,27 @@ class BaseMessage:
|
|
|
47
52
|
for the message.
|
|
48
53
|
content (str): The content of the message.
|
|
49
54
|
video_bytes (Optional[bytes]): Optional bytes of a video associated
|
|
50
|
-
with the message.
|
|
55
|
+
with the message. (default::obj:`None`)
|
|
51
56
|
image_list (Optional[List[Image.Image]]): Optional list of PIL Image
|
|
52
|
-
objects associated with the message.
|
|
57
|
+
objects associated with the message. (default::obj:`None`)
|
|
53
58
|
image_detail (Literal["auto", "low", "high"]): Detail level of the
|
|
54
|
-
images associated with the message.
|
|
59
|
+
images associated with the message. (default::obj:`auto`)
|
|
55
60
|
video_detail (Literal["auto", "low", "high"]): Detail level of the
|
|
56
|
-
videos associated with the message.
|
|
61
|
+
videos associated with the message. (default::obj:`low`)
|
|
62
|
+
parsed: Optional[Union[Type[BaseModel], dict]]: Optional object which
|
|
63
|
+
is parsed from the content. (default::obj:`None`)
|
|
57
64
|
"""
|
|
58
65
|
|
|
59
66
|
role_name: str
|
|
60
67
|
role_type: RoleType
|
|
61
|
-
meta_dict: Optional[Dict[str,
|
|
68
|
+
meta_dict: Optional[Dict[str, Any]]
|
|
62
69
|
content: str
|
|
63
70
|
|
|
64
71
|
video_bytes: Optional[bytes] = None
|
|
65
72
|
image_list: Optional[List[Image.Image]] = None
|
|
66
73
|
image_detail: Literal["auto", "low", "high"] = "auto"
|
|
67
74
|
video_detail: Literal["auto", "low", "high"] = "low"
|
|
75
|
+
parsed: Optional[Union[Type[BaseModel], dict]] = None
|
|
68
76
|
|
|
69
77
|
@classmethod
|
|
70
78
|
def make_user_message(
|
|
@@ -271,6 +279,106 @@ class BaseMessage:
|
|
|
271
279
|
|
|
272
280
|
return text_prompts, code_prompts
|
|
273
281
|
|
|
282
|
+
@classmethod
|
|
283
|
+
def from_sharegpt(
|
|
284
|
+
cls,
|
|
285
|
+
message: ShareGPTMessage,
|
|
286
|
+
function_format: Optional[FunctionCallFormatter[Any, Any]] = None,
|
|
287
|
+
role_mapping=None,
|
|
288
|
+
) -> "BaseMessage":
|
|
289
|
+
r"""Convert ShareGPT message to BaseMessage or FunctionCallingMessage.
|
|
290
|
+
Note tool calls and responses have an 'assistant' role in CAMEL
|
|
291
|
+
|
|
292
|
+
Args:
|
|
293
|
+
message (ShareGPTMessage): ShareGPT message to convert.
|
|
294
|
+
function_format (FunctionCallFormatter, optional): Function call
|
|
295
|
+
formatter to use. (default: :obj:`HermesFunctionFormatter()`.
|
|
296
|
+
role_mapping (Dict[str, List[str, RoleType]], optional): Role
|
|
297
|
+
mapping to use. Defaults to a CAMEL specific mapping.
|
|
298
|
+
|
|
299
|
+
Returns:
|
|
300
|
+
BaseMessage: Converted message.
|
|
301
|
+
"""
|
|
302
|
+
from camel.messages import FunctionCallingMessage
|
|
303
|
+
|
|
304
|
+
if role_mapping is None:
|
|
305
|
+
role_mapping = {
|
|
306
|
+
"system": ["system", RoleType.USER],
|
|
307
|
+
"human": ["user", RoleType.USER],
|
|
308
|
+
"gpt": ["assistant", RoleType.ASSISTANT],
|
|
309
|
+
"tool": ["assistant", RoleType.ASSISTANT],
|
|
310
|
+
}
|
|
311
|
+
role_name, role_type = role_mapping[message.from_]
|
|
312
|
+
|
|
313
|
+
if function_format is None:
|
|
314
|
+
function_format = HermesFunctionFormatter()
|
|
315
|
+
|
|
316
|
+
# Check if this is a function-related message
|
|
317
|
+
if message.from_ == "gpt":
|
|
318
|
+
func_info = function_format.extract_tool_calls(message.value)
|
|
319
|
+
if (
|
|
320
|
+
func_info and len(func_info) == 1
|
|
321
|
+
): # TODO: Handle multiple tool calls
|
|
322
|
+
# Including cleaned content is useful to
|
|
323
|
+
# remind consumers of non-considered content
|
|
324
|
+
clean_content = re.sub(
|
|
325
|
+
r"<tool_call>.*?</tool_call>",
|
|
326
|
+
"",
|
|
327
|
+
message.value,
|
|
328
|
+
flags=re.DOTALL,
|
|
329
|
+
).strip()
|
|
330
|
+
|
|
331
|
+
return FunctionCallingMessage(
|
|
332
|
+
role_name=role_name,
|
|
333
|
+
role_type=role_type,
|
|
334
|
+
meta_dict=None,
|
|
335
|
+
content=clean_content,
|
|
336
|
+
func_name=func_info[0].__dict__["name"],
|
|
337
|
+
args=func_info[0].__dict__["arguments"],
|
|
338
|
+
)
|
|
339
|
+
elif message.from_ == "tool":
|
|
340
|
+
func_r_info = function_format.extract_tool_response(message.value)
|
|
341
|
+
if func_r_info:
|
|
342
|
+
return FunctionCallingMessage(
|
|
343
|
+
role_name=role_name,
|
|
344
|
+
role_type=role_type,
|
|
345
|
+
meta_dict=None,
|
|
346
|
+
content="",
|
|
347
|
+
func_name=func_r_info.__dict__["name"],
|
|
348
|
+
result=func_r_info.__dict__["content"],
|
|
349
|
+
)
|
|
350
|
+
|
|
351
|
+
# Regular message
|
|
352
|
+
return cls(
|
|
353
|
+
role_name=role_name,
|
|
354
|
+
role_type=role_type,
|
|
355
|
+
meta_dict=None,
|
|
356
|
+
content=message.value,
|
|
357
|
+
)
|
|
358
|
+
|
|
359
|
+
def to_sharegpt(
|
|
360
|
+
self,
|
|
361
|
+
function_format: Optional[FunctionCallFormatter] = None,
|
|
362
|
+
) -> ShareGPTMessage:
|
|
363
|
+
r"""Convert BaseMessage to ShareGPT message
|
|
364
|
+
|
|
365
|
+
Args:
|
|
366
|
+
function_format (FunctionCallFormatter): Function call formatter
|
|
367
|
+
to use. Defaults to Hermes.
|
|
368
|
+
"""
|
|
369
|
+
|
|
370
|
+
if function_format is None:
|
|
371
|
+
function_format = HermesFunctionFormatter()
|
|
372
|
+
|
|
373
|
+
# Convert role type to ShareGPT 'from' field
|
|
374
|
+
if self.role_type == RoleType.USER:
|
|
375
|
+
from_ = "system" if self.role_name == "system" else "human"
|
|
376
|
+
else: # RoleType.ASSISTANT
|
|
377
|
+
from_ = "gpt"
|
|
378
|
+
|
|
379
|
+
# Function conversion code in FunctionCallingMessage
|
|
380
|
+
return ShareGPTMessage(from_=from_, value=self.content) # type: ignore[call-arg]
|
|
381
|
+
|
|
274
382
|
def to_openai_message(
|
|
275
383
|
self,
|
|
276
384
|
role_at_backend: OpenAIBackendRole,
|
|
@@ -315,7 +423,6 @@ class BaseMessage:
|
|
|
315
423
|
"text": self.content,
|
|
316
424
|
}
|
|
317
425
|
)
|
|
318
|
-
|
|
319
426
|
if self.image_list and len(self.image_list) > 0:
|
|
320
427
|
for image in self.image_list:
|
|
321
428
|
if image.format is None:
|