Skip to main content

Track the environmental impact of your use of AI

Project description

scope3 logo

Scope3AI Python SDK

Track the environmental impact of your use of AI !

The Scope3AI Python SDK provides an easy-to-use interface for interacting with Scope3AI's API.
It allow you to record, trace, and analyze the impact of interactions with a focus on sustainability metrics.

PyPI - Version PyPI - Python Version Pytests Coverage Status

🚀 Installation

The package scope3ai SDK is published on pypi. You can install it using pip:

pip install scope3ai

We personally use uv:

uv add scope3ai

📚 Library and SDK support Matrix

Library/SDK Text generation TTS STT Image Generation Translation
Anthropic
Cohere
OpenAI
Huggingface
LiteLLM
MistralAi

Roadmap:

  • Google
  • Langchain

✨ Getting Started

Initializing the SDK

The SDK can be initialized with your API key and custom configurations.

from scope3ai import Scope3AI

scope3 = Scope3AI.init(
    api_key="YOUR_API_KEY",  # Replace "YOUR_API_KEY" with your actual key
    api_url="https://api.scope3.ai/v1",  # Optional: Specify the API URL
    enable_debug_logging=False,  # Enable debug logging (default: False)
    sync_mode=False,  # Enable synchronous mode when sending telemetry to the API (default: False)
)

Environment variables

You can also use environment variable to setup the SDK:

  • SCOPE3AI_API_KEY: Your Scope3AI API key
  • SCOPE3AI_API_URL: The API endpoint URL. Default: https://api.scope3.ai/v1
  • SCOPE3AI_SYNC_MODE: If True, every interaction will be send synchronously to the API, otherwise it will use a background worker. Default: False
from scope3ai import Scope3AI

scope3 = Scope3AI.init()

Usage Examples

1. Using Context Management for Tracing

Within the context of a trace, all interactions are recorded and you can query the impact of the trace. As the interactions are captured and send to Scope3 AI for analysis, the impact is calculated and returned asynchronously. This will automatically wait for all traces to be processed and return the impact.

with scope3.trace() as tracer:
    # Perform your interactions
    interact()
    interact()

    # Print the impact of the recorded trace
    impact = tracer.impact()
    print(f"Total Energy Wh: {impact.total_energy_wh}")
    print(f"Total GCO2e: {impact.total_gco2e}")
    print(f"Total MLH2O: {impact.total_mlh2o}")

2. Single interaction

For a single interaction, the response is augmented with a scope3ai attribute that contains the request and impact data. The impact data is calculated asynchronously so we need to wait for the impact to be calculated and for the attribute to be ready.

client = OpenAI()
response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Hello world"}],
    stream=False,
)

response.scope3ai.wait_impact()
impact = response.scope3ai.impact
print(f"Total Energy Wh: {impact.total_energy_wh}")
print(f"Total GCO2e: {impact.total_gco2e}")
print(f"Total MLH2O: {impact.total_mlh2o}")

3. Enabling Synchronous Mode for Immediate Impact Response

In synchronous mode, the SDK will include the impact data directly in the interaction response. This is useful when you want to get the impact data immediately after the interaction without waiting.

scope3.sync_mode = True

response = interact()
impact = response.scope3ai.impact
print(f"Total Energy Wh: {impact.total_energy_wh}")
print(f"Total GCO2e: {impact.total_gco2e}")
print(f"Total MLH2O: {impact.total_mlh2o}")

🛠️ Development

This project use conventional commits and semantic versioning.

Also:

  • pre-commit for code formatting, linting and conventional commit checks
  • uv for project and dependency management.

Initial setup

$ pre-commit install
$ pre-commit install --hook-type commit-msg

Using with specific env

You can use UV_ENV_FILE or --env-file to specify the environment file to use.

$ export UV_ENV_FILE=.env
$ uv sync --all-extras --all-groups
$ uv run python -m examples.openai-sync-chat

Update typesgen.py

$ uv run datamodel-codegen \
    --input tests/api-mocks/aiapi.yaml \
    --input-file-type openapi \
    --output scope3ai/api/typesgen.py \
    --output-model-type pydantic_v2.BaseModel \
    --use-schema-description \
    --allow-extra-fields \
    && uv run ruff format scope3ai/api/typesgen.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scope3ai-0.3.0rc1.tar.gz (34.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scope3ai-0.3.0rc1-py3-none-any.whl (42.2 kB view details)

Uploaded Python 3

File details

Details for the file scope3ai-0.3.0rc1.tar.gz.

File metadata

  • Download URL: scope3ai-0.3.0rc1.tar.gz
  • Upload date:
  • Size: 34.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for scope3ai-0.3.0rc1.tar.gz
Algorithm Hash digest
SHA256 130fb6b001da6de99afff8d26296d0ce67ce9d39361d557f32d6accc4836b499
MD5 3c7e608f49a0ca2a180fff022f945fe6
BLAKE2b-256 cf5cbd93be53e7e164b07c332d2a8a67513c2a7b1fa95b245f291d6d291a0594

See more details on using hashes here.

Provenance

The following attestation bundles were made for scope3ai-0.3.0rc1.tar.gz:

Publisher: release.yml on scope3data/scope3ai-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scope3ai-0.3.0rc1-py3-none-any.whl.

File metadata

  • Download URL: scope3ai-0.3.0rc1-py3-none-any.whl
  • Upload date:
  • Size: 42.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for scope3ai-0.3.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 445b40aaef71ccb702ed1aba8699797db905149a95f4e742d4d1ce8e093c04f1
MD5 2f4b5b7d434a7afe73207b3c57c30995
BLAKE2b-256 465c6730b0fefe7305bb243c8db6afc5a0bb764af5f3728df5298056dd7cfd17

See more details on using hashes here.

Provenance

The following attestation bundles were made for scope3ai-0.3.0rc1-py3-none-any.whl:

Publisher: release.yml on scope3data/scope3ai-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page