diff --git a/README.md b/README.md index 69ebdb4..a43e5c8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -GenAI Impact +Ecologits ============ -**GenAI Impact** tracks and estimates the energy consumption and environmental impacts of using generative AI models through APIs. +**Ecologits** tracks and estimates the energy consumption and environmental impacts of using generative AI models through APIs. ## ⚙️ Installation @@ -11,10 +11,10 @@ Coming soon... ## 🚀 Usage ```python -from genai_impact import Tracer +from ecologits import Ecologits from openai import OpenAI -Tracer.init() +Ecologits.init() client = OpenAI( api_key="", @@ -33,7 +33,7 @@ print(response.impacts) # Impacts(energy=0.025, energy_unit='Wh', ...) -See package documentation on [GenAI Impact]() +See package documentation on [Ecologits]() ## 💪 Contributing diff --git a/ecologits/__init__.py b/ecologits/__init__.py new file mode 100644 index 0000000..e2d5a1d --- /dev/null +++ b/ecologits/__init__.py @@ -0,0 +1,3 @@ +from .ecologits import Ecologits + +__all__ = ["Ecologits"] diff --git a/genai_impact/data/models.csv b/ecologits/data/models.csv similarity index 100% rename from genai_impact/data/models.csv rename to ecologits/data/models.csv diff --git a/genai_impact/tracer.py b/ecologits/ecologits.py similarity index 69% rename from genai_impact/tracer.py rename to ecologits/ecologits.py index 7f56bcc..d714de9 100644 --- a/genai_impact/tracer.py +++ b/ecologits/ecologits.py @@ -1,17 +1,17 @@ import importlib.util -from genai_impact.exceptions import TracerInitializationError +from ecologits.exceptions import TracerInitializationError -class Tracer: +class Ecologits: initialized = False @staticmethod def init() -> None: - if Tracer.initialized: + if Ecologits.initialized: raise TracerInitializationError() init_instruments() - Tracer.initialized = True + Ecologits.initialized = True def init_instruments() -> None: @@ -22,7 +22,7 @@ def init_instruments() -> None: def init_openai_instrumentor() -> None: if importlib.util.find_spec("openai") is not None: - from genai_impact.tracers.openai_tracer import OpenAIInstrumentor + from ecologits.tracers.openai_tracer import OpenAIInstrumentor instrumentor = OpenAIInstrumentor() instrumentor.instrument() @@ -30,7 +30,7 @@ def init_openai_instrumentor() -> None: def init_anthropic_instrumentor() -> None: if importlib.util.find_spec("anthropic") is not None: - from genai_impact.tracers.anthropic_tracer import AnthropicInstrumentor + from ecologits.tracers.anthropic_tracer import AnthropicInstrumentor instrumentor = AnthropicInstrumentor() instrumentor.instrument() @@ -38,7 +38,7 @@ def init_anthropic_instrumentor() -> None: def init_mistralai_instrumentor() -> None: if importlib.util.find_spec("mistralai") is not None: - from genai_impact.tracers.mistralai_tracer import MistralAIInstrumentor + from ecologits.tracers.mistralai_tracer import MistralAIInstrumentor instrumentor = MistralAIInstrumentor() instrumentor.instrument() diff --git a/ecologits/exceptions.py b/ecologits/exceptions.py new file mode 100644 index 0000000..770ced0 --- /dev/null +++ b/ecologits/exceptions.py @@ -0,0 +1,7 @@ +class EcologitsError(Exception): + pass + + +class TracerInitializationError(EcologitsError): + """Tracer is initialized twice""" + pass diff --git a/genai_impact/impacts/__init__.py b/ecologits/impacts/__init__.py similarity index 100% rename from genai_impact/impacts/__init__.py rename to ecologits/impacts/__init__.py diff --git a/genai_impact/impacts/dag.py b/ecologits/impacts/dag.py similarity index 100% rename from genai_impact/impacts/dag.py rename to ecologits/impacts/dag.py diff --git a/genai_impact/impacts/llm.py b/ecologits/impacts/llm.py similarity index 98% rename from genai_impact/impacts/llm.py rename to ecologits/impacts/llm.py index 5d34163..a60c8eb 100644 --- a/genai_impact/impacts/llm.py +++ b/ecologits/impacts/llm.py @@ -1,8 +1,8 @@ from math import ceil from typing import Optional -from genai_impact.impacts.dag import DAG -from genai_impact.impacts.models import GWP, PE, ADPe, Embodied, Energy, Impacts, Usage +from ecologits.impacts.dag import DAG +from ecologits.impacts.models import GWP, PE, ADPe, Embodied, Energy, Impacts, Usage MODEL_QUANTIZATION_BITS = 4 diff --git a/genai_impact/impacts/models.py b/ecologits/impacts/models.py similarity index 100% rename from genai_impact/impacts/models.py rename to ecologits/impacts/models.py diff --git a/genai_impact/model_repository.py b/ecologits/model_repository.py similarity index 100% rename from genai_impact/model_repository.py rename to ecologits/model_repository.py diff --git a/genai_impact/tracers/__init__.py b/ecologits/tracers/__init__.py similarity index 100% rename from genai_impact/tracers/__init__.py rename to ecologits/tracers/__init__.py diff --git a/genai_impact/tracers/anthropic_tracer.py b/ecologits/tracers/anthropic_tracer.py similarity index 98% rename from genai_impact/tracers/anthropic_tracer.py rename to ecologits/tracers/anthropic_tracer.py index ab0ec13..603d3d8 100644 --- a/genai_impact/tracers/anthropic_tracer.py +++ b/ecologits/tracers/anthropic_tracer.py @@ -5,8 +5,8 @@ from typing_extensions import override from wrapt import wrap_function_wrapper -from genai_impact.impacts.models import Impacts -from genai_impact.tracers.utils import compute_llm_impacts +from ecologits.impacts.models import Impacts +from ecologits.tracers.utils import compute_llm_impacts try: from anthropic import Anthropic, AsyncAnthropic diff --git a/genai_impact/tracers/mistralai_tracer.py b/ecologits/tracers/mistralai_tracer.py similarity index 97% rename from genai_impact/tracers/mistralai_tracer.py rename to ecologits/tracers/mistralai_tracer.py index b6c0704..7687ee9 100644 --- a/genai_impact/tracers/mistralai_tracer.py +++ b/ecologits/tracers/mistralai_tracer.py @@ -3,8 +3,8 @@ from wrapt import wrap_function_wrapper -from genai_impact.impacts.models import Impacts -from genai_impact.tracers.utils import compute_llm_impacts +from ecologits.impacts.models import Impacts +from ecologits.tracers.utils import compute_llm_impacts try: from mistralai.async_client import MistralAsyncClient diff --git a/genai_impact/tracers/openai_tracer.py b/ecologits/tracers/openai_tracer.py similarity index 98% rename from genai_impact/tracers/openai_tracer.py rename to ecologits/tracers/openai_tracer.py index bc264bf..0453d0b 100644 --- a/genai_impact/tracers/openai_tracer.py +++ b/ecologits/tracers/openai_tracer.py @@ -7,8 +7,8 @@ from openai.types.chat import ChatCompletionChunk as _ChatCompletionChunk from wrapt import wrap_function_wrapper -from genai_impact.impacts import Impacts -from genai_impact.tracers.utils import compute_llm_impacts +from ecologits.impacts import Impacts +from ecologits.tracers.utils import compute_llm_impacts PROVIDER = "openai" diff --git a/genai_impact/tracers/utils.py b/ecologits/tracers/utils.py similarity index 84% rename from genai_impact/tracers/utils.py rename to ecologits/tracers/utils.py index 535d5af..17ee548 100644 --- a/genai_impact/tracers/utils.py +++ b/ecologits/tracers/utils.py @@ -1,8 +1,8 @@ from typing import Optional -from genai_impact.impacts.llm import compute_llm_impacts as _compute_llm_impacts -from genai_impact.impacts.models import Impacts -from genai_impact.model_repository import models +from ecologits.impacts.llm import compute_llm_impacts as _compute_llm_impacts +from ecologits.impacts.models import Impacts +from ecologits.model_repository import models def _avg(value_range: tuple) -> float: diff --git a/genai_impact/__init__.py b/genai_impact/__init__.py deleted file mode 100644 index a135463..0000000 --- a/genai_impact/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .tracer import Tracer - -__all__ = ["Tracer"] diff --git a/genai_impact/exceptions.py b/genai_impact/exceptions.py deleted file mode 100644 index 689c8f0..0000000 --- a/genai_impact/exceptions.py +++ /dev/null @@ -1,7 +0,0 @@ -class GenAIImpactError(Exception): - pass - - -class TracerInitializationError(GenAIImpactError): - """Tracer is initialized twice""" - pass diff --git a/pyproject.toml b/pyproject.toml index 7bc8ee8..8f5e8b5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,9 +3,9 @@ requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.poetry] -name = "genai_impact" +name = "ecologits" version = "0.1.0" -description = "GenAI Impact projet" +description = "Ecologits tracks and estimates the energy consumption and environmental impacts of using generative AI models through APIs." authors = ["DataForGood"] license = "MIT" readme = "README.md" diff --git a/tests/conftest.py b/tests/conftest.py index 5c744e2..cbe2de0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,7 +2,7 @@ import pytest -from genai_impact import Tracer +from ecologits import Ecologits @pytest.fixture(autouse=True) @@ -28,4 +28,4 @@ def vcr_config(): @pytest.fixture(scope="session") def tracer_init(): - Tracer.init() + Ecologits.init() diff --git a/tests/test_compute_llm_impacts.py b/tests/test_compute_llm_impacts.py index 91203ce..05a0f15 100644 --- a/tests/test_compute_llm_impacts.py +++ b/tests/test_compute_llm_impacts.py @@ -1,6 +1,6 @@ import pytest -from genai_impact.impacts.llm import compute_llm_impacts +from ecologits.impacts.llm import compute_llm_impacts @pytest.mark.parametrize( diff --git a/tests/test_model_repository.py b/tests/test_model_repository.py index 51c3f92..442be61 100644 --- a/tests/test_model_repository.py +++ b/tests/test_model_repository.py @@ -1,4 +1,4 @@ -from genai_impact.model_repository import ModelRepository, Model +from ecologits.model_repository import ModelRepository, Model def test_create_model_repository_default(): diff --git a/tests/test_tracer.py b/tests/test_tracer.py index 7a0a5e8..784d422 100644 --- a/tests/test_tracer.py +++ b/tests/test_tracer.py @@ -1,8 +1,8 @@ import pytest -from genai_impact import Tracer -from genai_impact.exceptions import GenAIImpactError +from ecologits import Ecologits +from ecologits.exceptions import EcologitsError def test_double_init(tracer_init): - with pytest.raises(GenAIImpactError) as e: - Tracer.init() # Second initialization + with pytest.raises(EcologitsError) as e: + Ecologits.init() # Second initialization