diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 798ec10b71..96967a8153 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -27,7 +27,7 @@ body: attributes: label: What version of camel are you using? description: Run command `python3 -c 'print(__import__("camel").__version__)'` in your shell and paste the output here. - placeholder: E.g., 0.1.6.1 + placeholder: E.g., 0.1.6.2 validations: required: true diff --git a/README.md b/README.md index 1e911d64ac..6ee49032b9 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ conda create --name camel python=3.9 conda activate camel # Clone github repo -git clone -b v0.1.6.1 https://github.com/camel-ai/camel.git +git clone -b v0.1.6.2 https://github.com/camel-ai/camel.git # Change directory into project directory cd camel diff --git a/camel/__init__.py b/camel/__init__.py index eeb53d1115..b48ac378d3 100644 --- a/camel/__init__.py +++ b/camel/__init__.py @@ -12,7 +12,7 @@ # limitations under the License. # =========== Copyright 2023 @ CAMEL-AI.org. All Rights Reserved. =========== -__version__ = '0.1.6.1' +__version__ = '0.1.6.2' __all__ = [ '__version__', diff --git a/camel/agents/chat_agent.py b/camel/agents/chat_agent.py index 281684ddc1..95fc6c2e2b 100644 --- a/camel/agents/chat_agent.py +++ b/camel/agents/chat_agent.py @@ -63,14 +63,14 @@ # AgentOps decorator setting try: - from agentops import track_agent -except ImportError: - - def track_agent(): - def noop(f): - return f - - return noop + import os + + if os.getenv("AGENTOPS_API_KEY") is not None: + from agentops import track_agent + else: + raise ImportError +except (ImportError, AttributeError): + from camel.utils import track_agent class FunctionCallingRecord(BaseModel): diff --git a/camel/agents/critic_agent.py b/camel/agents/critic_agent.py index 9bac464cf4..22e80ecf9b 100644 --- a/camel/agents/critic_agent.py +++ b/camel/agents/critic_agent.py @@ -26,14 +26,14 @@ # AgentOps decorator setting try: - from agentops import track_agent -except ImportError: - - def track_agent(): - def noop(f): - return f - - return noop + import os + + if os.getenv("AGENTOPS_API_KEY") is not None: + from agentops import track_agent + else: + raise ImportError +except (ImportError, AttributeError): + from camel.utils import track_agent @track_agent(name="CriticAgent") diff --git a/camel/agents/deductive_reasoner_agent.py b/camel/agents/deductive_reasoner_agent.py index 0160f79429..892b3d2629 100644 --- a/camel/agents/deductive_reasoner_agent.py +++ b/camel/agents/deductive_reasoner_agent.py @@ -22,14 +22,14 @@ # AgentOps decorator setting try: - from agentops import track_agent -except ImportError: + import os - def track_agent(): - def noop(f): - return f - - return noop + if os.getenv("AGENTOPS_API_KEY") is not None: + from agentops import track_agent + else: + raise ImportError +except (ImportError, AttributeError): + from camel.utils import track_agent @track_agent(name="DeductiveReasonerAgent") diff --git a/camel/agents/embodied_agent.py b/camel/agents/embodied_agent.py index 71531a8c10..ce40694cf9 100644 --- a/camel/agents/embodied_agent.py +++ b/camel/agents/embodied_agent.py @@ -29,14 +29,14 @@ # AgentOps decorator setting try: - from agentops import track_agent -except ImportError: - - def track_agent(): - def noop(f): - return f - - return noop + import os + + if os.getenv("AGENTOPS_API_KEY") is not None: + from agentops import track_agent + else: + raise ImportError +except (ImportError, AttributeError): + from camel.utils import track_agent @track_agent(name="EmbodiedAgent") diff --git a/camel/agents/knowledge_graph_agent.py b/camel/agents/knowledge_graph_agent.py index 6cec4c2553..d6d9164066 100644 --- a/camel/agents/knowledge_graph_agent.py +++ b/camel/agents/knowledge_graph_agent.py @@ -31,14 +31,14 @@ # AgentOps decorator setting try: - from agentops import track_agent -except ImportError: - - def track_agent(): - def noop(f): - return f - - return noop + import os + + if os.getenv("AGENTOPS_API_KEY") is not None: + from agentops import track_agent + else: + raise ImportError +except (ImportError, AttributeError): + from camel.utils import track_agent text_prompt = """ diff --git a/camel/agents/role_assignment_agent.py b/camel/agents/role_assignment_agent.py index 58f2d09f6a..69b23503b2 100644 --- a/camel/agents/role_assignment_agent.py +++ b/camel/agents/role_assignment_agent.py @@ -22,14 +22,14 @@ # AgentOps decorator setting try: - from agentops import track_agent -except ImportError: - - def track_agent(): - def noop(f): - return f - - return noop + import os + + if os.getenv("AGENTOPS_API_KEY") is not None: + from agentops import track_agent + else: + raise ImportError +except (ImportError, AttributeError): + from camel.utils import track_agent @track_agent(name="RoleAssignmentAgent") diff --git a/camel/agents/search_agent.py b/camel/agents/search_agent.py index 0b7c8ecbba..7c469c0b42 100644 --- a/camel/agents/search_agent.py +++ b/camel/agents/search_agent.py @@ -22,14 +22,14 @@ # AgentOps decorator setting try: - from agentops import track_agent -except ImportError: - - def track_agent(): - def noop(f): - return f - - return noop + import os + + if os.getenv("AGENTOPS_API_KEY") is not None: + from agentops import track_agent + else: + raise ImportError +except (ImportError, AttributeError): + from camel.utils import track_agent @track_agent(name="SearchAgent") diff --git a/camel/agents/task_agent.py b/camel/agents/task_agent.py index 7b6a5348ce..1fe3b3ec28 100644 --- a/camel/agents/task_agent.py +++ b/camel/agents/task_agent.py @@ -22,14 +22,14 @@ # AgentOps decorator setting try: - from agentops import track_agent -except ImportError: - - def track_agent(): - def noop(f): - return f - - return noop + import os + + if os.getenv("AGENTOPS_API_KEY") is not None: + from agentops import track_agent + else: + raise ImportError +except (ImportError, AttributeError): + from camel.utils import track_agent @track_agent(name="TaskSpecifyAgent") diff --git a/camel/utils/__init__.py b/camel/utils/__init__.py index a06562af2b..5b75e54929 100644 --- a/camel/utils/__init__.py +++ b/camel/utils/__init__.py @@ -32,6 +32,7 @@ print_text_animated, text_extract_from_web, to_pascal, + track_agent, ) from .constants import Constants from .token_counting import ( @@ -74,4 +75,5 @@ 'json_to_function_code', 'agentops_decorator', 'AgentOpsMeta', + 'track_agent', ] diff --git a/camel/utils/commons.py b/camel/utils/commons.py index 039837a6ad..1b6359e060 100644 --- a/camel/utils/commons.py +++ b/camel/utils/commons.py @@ -488,8 +488,14 @@ def is_docker_running() -> bool: try: - from agentops import ToolEvent, record -except ImportError: + if os.getenv("AGENTOPS_API_KEY") is not None: + from agentops import ( + ToolEvent, + record, + ) + else: + raise ImportError +except (ImportError, AttributeError): ToolEvent = None @@ -528,7 +534,16 @@ class AgentOpsMeta(type): """ def __new__(cls, name, bases, dct): - for attr, value in dct.items(): - if callable(value) and attr != 'get_tools': - dct[attr] = agentops_decorator(value) - return super(AgentOpsMeta, cls).__new__(cls, name, bases, dct) + if ToolEvent: + for attr, value in dct.items(): + if callable(value) and attr != 'get_tools': + dct[attr] = agentops_decorator(value) + return super().__new__(cls, name, bases, dct) + + +# Mock trak agent decorator for AgentOps +def track_agent(*args, **kwargs): + def noop(f): + return f + + return noop diff --git a/docs/conf.py b/docs/conf.py index 590792269c..c905fbb420 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -27,7 +27,7 @@ project = 'CAMEL' copyright = '2023, CAMEL-AI.org' author = 'CAMEL-AI.org' -release = '0.1.6.1' +release = '0.1.6.2' html_favicon = ( 'https://raw.githubusercontent.com/camel-ai/camel/master/misc/favicon.png' diff --git a/docs/get_started/setup.md b/docs/get_started/setup.md index ba84b06a2c..583b4c02ab 100644 --- a/docs/get_started/setup.md +++ b/docs/get_started/setup.md @@ -61,7 +61,7 @@ conda create --name camel python=3.10 conda activate camel # Clone github repo -git clone -b v0.1.6.1 https://github.com/camel-ai/camel.git +git clone -b v0.1.6.2 https://github.com/camel-ai/camel.git # Change directory into project directory cd camel diff --git a/examples/bots/telegram_bot.py b/examples/bots/telegram_bot.py index 51e22a83af..32bf9f4756 100644 --- a/examples/bots/telegram_bot.py +++ b/examples/bots/telegram_bot.py @@ -20,7 +20,9 @@ # Conditionally import telebot types only for type checking if TYPE_CHECKING: - from telebot.types import Message # type: ignore[import-untyped] + from telebot.types import ( + Message, # type: ignore[import-not-found] + ) class TelegramBot: @@ -49,7 +51,7 @@ def __init__( else: self.token = telegram_token - import telebot # type: ignore[import-untyped] + import telebot # type: ignore[import-not-found] self.bot = telebot.TeleBot(token=self.token) diff --git a/examples/observability/agentops_track_roleplaying_with_function.py b/examples/observability/agentops_track_roleplaying_with_function.py index 79da934e2b..db5127199b 100644 --- a/examples/observability/agentops_track_roleplaying_with_function.py +++ b/examples/observability/agentops_track_roleplaying_with_function.py @@ -25,7 +25,7 @@ from camel.utils import print_text_animated # Initialize agentops -agentops.init(tags=["CAMEL X AgentOps1"]) +agentops.init(tags=["CAMEL X AgentOps"]) # Import toolkits after init of agentops so that the tool useage would be # tracked diff --git a/poetry.lock b/poetry.lock index 05ec70390e..1cef13824e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -426,13 +426,13 @@ files = [ [[package]] name = "babel" -version = "2.15.0" +version = "2.16.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" files = [ - {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, - {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, + {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, + {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, ] [package.extras] @@ -4472,13 +4472,13 @@ image = ["Pillow"] [[package]] name = "pdfplumber" -version = "0.11.2" +version = "0.11.3" description = "Plumb a PDF for detailed information about each char, rectangle, and line." optional = true python-versions = ">=3.8" files = [ - {file = "pdfplumber-0.11.2-py3-none-any.whl", hash = "sha256:024a7e0f8f4e7bbec8e1f6f694faeaa7b9fe33a0c1f9edd9d3f77298d9146b87"}, - {file = "pdfplumber-0.11.2.tar.gz", hash = "sha256:f237ce88e9918358f3848f4bae469358ca121ca412098e370908878ec9da699a"}, + {file = "pdfplumber-0.11.3-py3-none-any.whl", hash = "sha256:4f3e13795d18b2e53dfc4cd667a3bc2478cd6975fc9a188881376265d599c5a6"}, + {file = "pdfplumber-0.11.3.tar.gz", hash = "sha256:43a3cac33d2135ce00ac59ad5bc3813a33afe0f513d9284c0e8cb6e447ed6e53"}, ] [package.dependencies] diff --git a/pyproject.toml b/pyproject.toml index 19719c4e2f..1f2e8102ed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "camel-ai" -version = "0.1.6.1" +version = "0.1.6.2" authors = ["CAMEL-AI.org"] description = "Communicative Agents for AI Society Study" readme = "README.md"