From c3e2ca3ed711f40efa2d3e6cfaa4aaf72883bda1 Mon Sep 17 00:00:00 2001 From: evelynmitchell Date: Mon, 25 Dec 2023 17:23:54 -0700 Subject: [PATCH] delete phoenix --- docs/swarms/utils/phoenix_tracer.md | 128 --------------- mkdocs.yml | 1 - playground/demos/logistics/logistics.py | 8 - playground/demos/optimize_llm_stack/vortex.py | 4 - .../demos/swarm_of_mma_manufacturing/main.py | 1 - swarms/utils/__init__.py | 3 - swarms/utils/phoenix_handler.py | 52 ------ tests/utils/test_phoenix_handler.py | 152 ------------------ 8 files changed, 349 deletions(-) delete mode 100644 docs/swarms/utils/phoenix_tracer.md delete mode 100644 swarms/utils/phoenix_handler.py delete mode 100644 tests/utils/test_phoenix_handler.py diff --git a/docs/swarms/utils/phoenix_tracer.md b/docs/swarms/utils/phoenix_tracer.md deleted file mode 100644 index 97ed422a..00000000 --- a/docs/swarms/utils/phoenix_tracer.md +++ /dev/null @@ -1,128 +0,0 @@ -# Phoenix Trace Decorator Documentation - -## Introduction - -Welcome to the documentation for the `phoenix_trace_decorator` module. This module provides a convenient decorator for tracing Python functions and capturing exceptions using Phoenix, a versatile tracing and monitoring tool. Phoenix allows you to gain insights into the execution of your code, capture errors, and monitor performance. - -## Table of Contents - -1. [Installation](#installation) -2. [Getting Started](#getting-started) -3. [Decorator Usage](#decorator-usage) -4. [Examples](#examples) -5. [Best Practices](#best-practices) -6. [References](#references) - -## 1. Installation - -Before using the `phoenix_trace_decorator`, you need to install the Swarms library. You can install Phoenix using pip: - -```bash -pip install swarms -``` - -## 2. Getting Started - -Phoenix is a powerful tracing and monitoring tool, and the `phoenix_trace_decorator` simplifies the process of tracing functions and capturing exceptions within your Python code. To begin, ensure that Phoenix is installed, and then import the `phoenix_trace_decorator` module into your Python script. - -```python -from swarms import phoenix_trace_decorator -``` - -## 3. Decorator Usage - -The `phoenix_trace_decorator` module provides a decorator, `phoenix_trace_decorator`, which can be applied to functions you want to trace. The decorator takes a single argument, a docstring that describes the purpose of the function being traced. - -Here is the basic structure of using the decorator: - -```python -@phoenix_trace_decorator("Description of the function") -def my_function(param1, param2): - # Function implementation - pass -``` - -## 4. Examples - -Let's explore some practical examples of using the `phoenix_trace_decorator` in your code. - -### Example 1: Basic Tracing - -In this example, we'll trace a simple function and print a message. - -```python -@phoenix_trace_decorator("Tracing a basic function") -def hello_world(): - print("Hello, World!") - -# Call the decorated function -hello_world() -``` - -### Example 2: Tracing a Function with Parameters - -You can use the decorator with functions that have parameters. - -```python -@phoenix_trace_decorator("Tracing a function with parameters") -def add_numbers(a, b): - result = a + b - print(f"Result: {result}") - -# Call the decorated function with parameters -add_numbers(2, 3) -``` - -### Example 3: Tracing Nested Calls - -The decorator can also trace nested function calls. - -```python -@phoenix_trace_decorator("Outer function") -def outer_function(): - print("Outer function") - - @phoenix_trace_decorator("Inner function") - def inner_function(): - print("Inner function") - - inner_function() - -# Call the decorated functions -outer_function() -``` - -### Example 4: Exception Handling - -Phoenix can capture exceptions and provide detailed information about them. - -```python -@phoenix_trace_decorator("Function with exception handling") -def divide(a, b): - try: - result = a / b - except ZeroDivisionError as e: - raise ValueError("Division by zero") from e - -# Call the decorated function with an exception -try: - divide(5, 0) -except ValueError as e: - print(f"Error: {e}") -``` - -## 5. Best Practices - -When using the `phoenix_trace_decorator`, consider the following best practices: - -- Use meaningful docstrings to describe the purpose of the traced functions. -- Keep your tracing focused on critical parts of your code. -- Make sure Phoenix is properly configured and running before using the decorator. - -## 6. References - -For more information on Phoenix and advanced usage, please refer to the [Phoenix Documentation](https://phoenix-docs.readthedocs.io/en/latest/). - ---- - -By following this documentation, you can effectively use the `phoenix_trace_decorator` to trace your Python functions, capture exceptions, and gain insights into the execution of your code. This tool is valuable for debugging, performance optimization, and monitoring the health of your applications. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index eeb64c04..ac04b759 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -109,7 +109,6 @@ nav: - PGVectorStore: "swarms/memory/pg.md" - ShortTermMemory: "swarms/memory/short_term_memory.md" - swarms.utils: - - phoenix_trace_decorator: "swarms/utils/phoenix_tracer.md" - math_eval: "swarms/utils/math_eval.md" - Guides: - Overview: "examples/index.md" diff --git a/playground/demos/logistics/logistics.py b/playground/demos/logistics/logistics.py index 0e09f910..108ec702 100644 --- a/playground/demos/logistics/logistics.py +++ b/playground/demos/logistics/logistics.py @@ -12,7 +12,6 @@ from swarms.prompts.logistics import ( Efficiency_Agent_Prompt, ) -# from swarms.utils.phoenix_handler import phoenix_trace_decorator # from swarms.utils.banana_wrapper import banana load_dotenv() @@ -26,7 +25,6 @@ llm = GPT4VisionAPI(openai_api_key=api_key) factory_image = "factory_image1.jpg" # Initialize agents with respective prompts -# @phoenix_trace_decorator("This function is an agent and is traced by Phoenix.") health_security_agent = Agent( llm=llm, sop=Health_Security_Agent_Prompt, @@ -34,7 +32,6 @@ health_security_agent = Agent( multi_modal=True, ) -# @phoenix_trace_decorator("This function is an agent and is traced by Phoenix.") quality_control_agent = Agent( llm=llm, sop=Quality_Control_Agent_Prompt, @@ -42,7 +39,6 @@ quality_control_agent = Agent( multi_modal=True, ) -# @phoenix_trace_decorator("This function is an agent and is traced by Phoenix.") productivity_agent = Agent( llm=llm, sop=Productivity_Agent_Prompt, @@ -50,17 +46,14 @@ productivity_agent = Agent( multi_modal=True, ) -# @phoenix_trace_decorator("This function is an agent and is traced by Phoenix.") safety_agent = Agent( llm=llm, sop=Safety_Agent_Prompt, max_loops=1, multi_modal=True ) -# @phoenix_trace_decorator("This function is an agent and is traced by Phoenix.") security_agent = Agent( llm=llm, sop=Security_Agent_Prompt, max_loops=1, multi_modal=True ) -# @phoenix_trace_decorator("This function is an agent and is traced by Phoenix.") sustainability_agent = Agent( llm=llm, sop=Sustainability_Agent_Prompt, @@ -68,7 +61,6 @@ sustainability_agent = Agent( multi_modal=True, ) -# @phoenix_trace_decorator("This function is an agent and is traced by Phoenix.") efficiency_agent = Agent( llm=llm, sop=Efficiency_Agent_Prompt, diff --git a/playground/demos/optimize_llm_stack/vortex.py b/playground/demos/optimize_llm_stack/vortex.py index 438c1451..57846a67 100644 --- a/playground/demos/optimize_llm_stack/vortex.py +++ b/playground/demos/optimize_llm_stack/vortex.py @@ -6,7 +6,6 @@ from dotenv import load_dotenv from swarms.models import OpenAIChat from swarms.structs import Agent -# from swarms.utils.phoenix_handler import phoenix_trace_decorator # import modal load_dotenv() @@ -23,9 +22,6 @@ llm = OpenAIChat( # Agent -# @phoenix_trace_decorator( -# "This function is an agent and is traced by Phoenix." -# ) # @stub.function(gpu="any") agent = Agent( llm=llm, diff --git a/playground/demos/swarm_of_mma_manufacturing/main.py b/playground/demos/swarm_of_mma_manufacturing/main.py index 37938608..05b0e8e5 100644 --- a/playground/demos/swarm_of_mma_manufacturing/main.py +++ b/playground/demos/swarm_of_mma_manufacturing/main.py @@ -20,7 +20,6 @@ from termcolor import colored from swarms.models import GPT4VisionAPI from swarms.structs import Agent -from swarms.utils.phoenix_handler import phoenix_trace_decorator load_dotenv() api_key = os.getenv("OPENAI_API_KEY") diff --git a/swarms/utils/__init__.py b/swarms/utils/__init__.py index 9ddbd324..107c0488 100644 --- a/swarms/utils/__init__.py +++ b/swarms/utils/__init__.py @@ -6,13 +6,10 @@ from swarms.utils.parse_code import ( from swarms.utils.pdf_to_text import pdf_to_text from swarms.utils.math_eval import math_eval -# from swarms.utils.phoenix_handler import phoenix_trace_decorator - __all__ = [ "display_markdown_message", "SubprocessCodeInterpreter", "extract_code_in_backticks_in_string", "pdf_to_text", - # "phoenix_trace_decorator", "math_eval", ] diff --git a/swarms/utils/phoenix_handler.py b/swarms/utils/phoenix_handler.py deleted file mode 100644 index 329d3f2a..00000000 --- a/swarms/utils/phoenix_handler.py +++ /dev/null @@ -1,52 +0,0 @@ -import functools -import traceback -import phoenix as px - - -def phoenix_trace_decorator(doc_string): - """Phoenix trace decorator. - - - Args: - doc_string (_type_): doc string for the function - - - Example: - >>> @phoenix_trace_decorator( - >>> "This is a doc string" - >>> ) - >>> def test_function(): - >>> print("Hello world") - >>> - >>> test_function() - - - # Example of using the decorator - @phoenix_trace_decorator("This function does XYZ and is traced by Phoenix.") - def my_function(param1, param2): - # Function implementation - pass - """ - - def decorator(func): - @functools.wraps(func) - def wrapper(*args, **kwargs): - # Start phoenix session for tracing - session = px.active_session() or px.launch_app() - - try: - # Attempt to execute the function - result = func(*args, **kwargs) - return result - except Exception as error: - error_info = traceback.format_exc() - session.trace_exception( - exception=error, error_info=error_info - ) - raise - - # Atteach docs to wrapper func - wrapper.__doc__ = doc_string - return wrapper - - return decorator diff --git a/tests/utils/test_phoenix_handler.py b/tests/utils/test_phoenix_handler.py deleted file mode 100644 index 3b6915b9..00000000 --- a/tests/utils/test_phoenix_handler.py +++ /dev/null @@ -1,152 +0,0 @@ -# Import necessary modules and functions for testing -import functools -import subprocess -import sys -import traceback - -import pytest - -# Try importing phoenix and handle exceptions -try: - import phoenix as px -except Exception as error: - print(f"Error importing phoenix: {error}") - print("Please install phoenix: pip install phoenix") - subprocess.run( - [sys.executable, "-m", "pip", "install", "arize-mlflow"] - ) - -# Import the code to be tested -from swarms.utils.phoenix_handler import phoenix_trace_decorator - - -# Define a fixture for Phoenix session -@pytest.fixture(scope="function") -def phoenix_session(): - session = px.active_session() or px.launch_app() - yield session - session.stop() - - -# Define test cases for the phoenix_trace_decorator function -def test_phoenix_trace_decorator_documentation(): - """Test if phoenix_trace_decorator has a docstring.""" - assert phoenix_trace_decorator.__doc__ is not None - - -def test_phoenix_trace_decorator_functionality( - capsys, phoenix_session -): - """Test the functionality of phoenix_trace_decorator.""" - - # Define a function to be decorated - @phoenix_trace_decorator("This is a test function.") - def test_function(): - print("Hello, Phoenix!") - - # Execute the decorated function - test_function() - - # Capture the printed output - captured = capsys.readouterr() - assert captured.out == "Hello, Phoenix!\n" - - -def test_phoenix_trace_decorator_exception_handling(phoenix_session): - """Test if phoenix_trace_decorator handles exceptions correctly.""" - - # Define a function that raises an exception - @phoenix_trace_decorator("This function raises an exception.") - def exception_function(): - raise ValueError("An error occurred.") - - # Execute the decorated function - with pytest.raises(ValueError): - exception_function() - - # Check if the exception was traced by Phoenix - traces = phoenix_session.get_traces() - assert len(traces) == 1 - assert traces[0].get("error") is not None - assert traces[0].get("error_info") is not None - - -# Define test cases for phoenix_trace_decorator -def test_phoenix_trace_decorator_docstring(): - """Test if phoenix_trace_decorator's inner function has a docstring.""" - - @phoenix_trace_decorator("This is a test function.") - def test_function(): - """Test function docstring.""" - pass - - assert test_function.__doc__ is not None - - -def test_phoenix_trace_decorator_functionality_with_params( - capsys, phoenix_session -): - """Test the functionality of phoenix_trace_decorator with parameters.""" - - # Define a function with parameters to be decorated - @phoenix_trace_decorator("This function takes parameters.") - def param_function(a, b): - result = a + b - print(f"Result: {result}") - - # Execute the decorated function with parameters - param_function(2, 3) - - # Capture the printed output - captured = capsys.readouterr() - assert captured.out == "Result: 5\n" - - -def test_phoenix_trace_decorator_nested_calls( - capsys, phoenix_session -): - """Test nested calls of phoenix_trace_decorator.""" - - # Define a nested function with decorators - @phoenix_trace_decorator("Outer function") - def outer_function(): - print("Outer function") - - @phoenix_trace_decorator("Inner function") - def inner_function(): - print("Inner function") - - inner_function() - - # Execute the decorated functions - outer_function() - - # Capture the printed output - captured = capsys.readouterr() - assert "Outer function" in captured.out - assert "Inner function" in captured.out - - -def test_phoenix_trace_decorator_nested_exception_handling( - phoenix_session, -): - """Test exception handling with nested phoenix_trace_decorators.""" - - # Define a function with nested decorators and an exception - @phoenix_trace_decorator("Outer function") - def outer_function(): - @phoenix_trace_decorator("Inner function") - def inner_function(): - raise ValueError("Inner error") - - inner_function() - - # Execute the decorated functions - with pytest.raises(ValueError): - outer_function() - - # Check if both exceptions were traced by Phoenix - traces = phoenix_session.get_traces() - assert len(traces) == 2 - assert "Outer function" in traces[0].get("error_info") - assert "Inner function" in traces[1].get("error_info")