revenium-python-sdk 0.1.0__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.
- revenium_middleware/__init__.py +184 -0
- revenium_middleware/_core/__init__.py +65 -0
- revenium_middleware/_core/config.py +165 -0
- revenium_middleware/_core/context.py +109 -0
- revenium_middleware/_core/decorators.py +202 -0
- revenium_middleware/_core/metering.py +207 -0
- revenium_middleware/_core/prompt_extraction.py +55 -0
- revenium_middleware/_core/subscriber.py +51 -0
- revenium_middleware/_core/trace_fields.py +265 -0
- revenium_middleware/anthropic/__init__.py +108 -0
- revenium_middleware/anthropic/bedrock_adapter.py +753 -0
- revenium_middleware/anthropic/config.py +29 -0
- revenium_middleware/anthropic/middleware.py +1070 -0
- revenium_middleware/anthropic/prompt_extractor.py +178 -0
- revenium_middleware/anthropic/provider.py +141 -0
- revenium_middleware/anthropic/summary_printer.py +286 -0
- revenium_middleware/anthropic/trace_fields.py +158 -0
- revenium_middleware/google/__init__.py +114 -0
- revenium_middleware/google/common/__init__.py +127 -0
- revenium_middleware/google/common/exceptions.py +137 -0
- revenium_middleware/google/common/protocols.py +192 -0
- revenium_middleware/google/common/summary_printer.py +271 -0
- revenium_middleware/google/common/trace_fields.py +205 -0
- revenium_middleware/google/common/types.py +208 -0
- revenium_middleware/google/common/utils.py +1111 -0
- revenium_middleware/google/config.py +64 -0
- revenium_middleware/google/google_ai/__init__.py +53 -0
- revenium_middleware/google/google_ai/middleware.py +667 -0
- revenium_middleware/google/google_ai/provider.py +135 -0
- revenium_middleware/google/prompt_extractor.py +396 -0
- revenium_middleware/google/vertex_ai/__init__.py +56 -0
- revenium_middleware/google/vertex_ai/middleware.py +1162 -0
- revenium_middleware/google/vertex_ai/provider.py +99 -0
- revenium_middleware/litellm/__init__.py +25 -0
- revenium_middleware/litellm/client/__init__.py +81 -0
- revenium_middleware/litellm/client/config.py +53 -0
- revenium_middleware/litellm/client/context.py +198 -0
- revenium_middleware/litellm/client/decorators.py +912 -0
- revenium_middleware/litellm/client/hooks.py +192 -0
- revenium_middleware/litellm/client/integrations/__init__.py +26 -0
- revenium_middleware/litellm/client/integrations/crewai.py +446 -0
- revenium_middleware/litellm/client/middleware.py +321 -0
- revenium_middleware/litellm/client/summary_printer.py +314 -0
- revenium_middleware/litellm/client/trace_fields.py +51 -0
- revenium_middleware/litellm/client/validation.py +207 -0
- revenium_middleware/litellm/proxy/__init__.py +25 -0
- revenium_middleware/litellm/proxy/middleware.py +217 -0
- revenium_middleware/ollama/__init__.py +28 -0
- revenium_middleware/ollama/middleware.py +569 -0
- revenium_middleware/ollama/trace_fields.py +63 -0
- revenium_middleware/openai/__init__.py +23 -0
- revenium_middleware/openai/azure_config.py +169 -0
- revenium_middleware/openai/azure_model_resolver.py +219 -0
- revenium_middleware/openai/config.py +45 -0
- revenium_middleware/openai/exceptions.py +115 -0
- revenium_middleware/openai/langchain/__init__.py +114 -0
- revenium_middleware/openai/langchain/_utils.py +129 -0
- revenium_middleware/openai/langchain/unified_handler.py +526 -0
- revenium_middleware/openai/middleware.py +1451 -0
- revenium_middleware/openai/prompt_extractor.py +173 -0
- revenium_middleware/openai/provider.py +170 -0
- revenium_middleware/openai/summary_printer.py +292 -0
- revenium_middleware/openai/trace_fields.py +98 -0
- revenium_middleware/perplexity/__init__.py +97 -0
- revenium_middleware/perplexity/middleware.py +379 -0
- revenium_middleware/perplexity/perplexity_sdk.py +256 -0
- revenium_middleware/perplexity/provider.py +84 -0
- revenium_middleware/perplexity/trace_fields.py +25 -0
- revenium_python_sdk-0.1.0.dist-info/METADATA +252 -0
- revenium_python_sdk-0.1.0.dist-info/RECORD +73 -0
- revenium_python_sdk-0.1.0.dist-info/WHEEL +5 -0
- revenium_python_sdk-0.1.0.dist-info/licenses/LICENSE +21 -0
- revenium_python_sdk-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Configuration for Revenium Google middleware.
|
|
3
|
+
|
|
4
|
+
Extends shared core config with Google-specific settings.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import logging
|
|
8
|
+
import os
|
|
9
|
+
|
|
10
|
+
from revenium_middleware._core.config import ( # noqa: F401
|
|
11
|
+
Config as _CoreConfig,
|
|
12
|
+
SecurityConfig,
|
|
13
|
+
SummaryFormat,
|
|
14
|
+
get_config_value,
|
|
15
|
+
is_debug_enabled,
|
|
16
|
+
get_timeout_config,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _parse_max_prompt_length() -> int:
|
|
21
|
+
"""Parse MAX_PROMPT_LENGTH from env var with safe fallback."""
|
|
22
|
+
default_value = 10000
|
|
23
|
+
env_value = os.getenv("REVENIUM_MAX_PROMPT_LENGTH", str(default_value))
|
|
24
|
+
try:
|
|
25
|
+
parsed = int(env_value)
|
|
26
|
+
if parsed <= 0:
|
|
27
|
+
logger = logging.getLogger("revenium_middleware.config")
|
|
28
|
+
logger.warning(
|
|
29
|
+
f"REVENIUM_MAX_PROMPT_LENGTH must be positive, got {parsed}. "
|
|
30
|
+
f"Using default: {default_value}"
|
|
31
|
+
)
|
|
32
|
+
return default_value
|
|
33
|
+
if parsed > 1_000_000:
|
|
34
|
+
logger = logging.getLogger("revenium_middleware.config")
|
|
35
|
+
logger.warning(
|
|
36
|
+
f"REVENIUM_MAX_PROMPT_LENGTH too large ({parsed}), "
|
|
37
|
+
f"capping at 1,000,000 characters"
|
|
38
|
+
)
|
|
39
|
+
return 1_000_000
|
|
40
|
+
return parsed
|
|
41
|
+
except (ValueError, TypeError) as e:
|
|
42
|
+
logger = logging.getLogger("revenium_middleware.config")
|
|
43
|
+
logger.warning(
|
|
44
|
+
f"Invalid REVENIUM_MAX_PROMPT_LENGTH value '{env_value}': {e}. "
|
|
45
|
+
f"Using default: {default_value}"
|
|
46
|
+
)
|
|
47
|
+
return default_value
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class Config(_CoreConfig):
|
|
51
|
+
"""Google-specific configuration extending core config."""
|
|
52
|
+
|
|
53
|
+
# Provider-specific environment variables
|
|
54
|
+
ENV_GOOGLE_API_KEY: str = "GOOGLE_API_KEY"
|
|
55
|
+
ENV_GOOGLE_CLOUD_PROJECT: str = "GOOGLE_CLOUD_PROJECT"
|
|
56
|
+
ENV_GOOGLE_APPLICATION_CREDENTIALS: str = "GOOGLE_APPLICATION_CREDENTIALS"
|
|
57
|
+
|
|
58
|
+
# Region environment variables
|
|
59
|
+
ENV_GCP_REGION: str = "GCP_REGION"
|
|
60
|
+
ENV_GOOGLE_CLOUD_REGION: str = "GOOGLE_CLOUD_REGION"
|
|
61
|
+
|
|
62
|
+
# Google overrides MAX_PROMPT_LENGTH with env-var-configurable parser (default 10000)
|
|
63
|
+
ENV_REVENIUM_MAX_PROMPT_LENGTH: str = "REVENIUM_MAX_PROMPT_LENGTH"
|
|
64
|
+
MAX_PROMPT_LENGTH: int = _parse_max_prompt_length()
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Google AI SDK middleware for Revenium.
|
|
3
|
+
|
|
4
|
+
This module provides middleware for the Google AI SDK (google-genai package),
|
|
5
|
+
supporting both Gemini Developer API and Vertex AI endpoints through the
|
|
6
|
+
unified google-genai interface.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import logging
|
|
10
|
+
|
|
11
|
+
logger = logging.getLogger(__name__)
|
|
12
|
+
|
|
13
|
+
# Import provider (no SDK dependency)
|
|
14
|
+
from . import provider
|
|
15
|
+
|
|
16
|
+
from .provider import (
|
|
17
|
+
detect_provider,
|
|
18
|
+
get_provider_metadata,
|
|
19
|
+
is_vertex_ai_endpoint,
|
|
20
|
+
get_or_detect_provider,
|
|
21
|
+
reset_provider_cache,
|
|
22
|
+
GoogleAIEndpoint,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
# Conditionally import middleware (requires google-genai SDK)
|
|
26
|
+
try:
|
|
27
|
+
import google.genai # noqa: F401
|
|
28
|
+
from . import middleware
|
|
29
|
+
from .middleware import (
|
|
30
|
+
extract_google_ai_usage_data,
|
|
31
|
+
create_google_ai_metering_call,
|
|
32
|
+
handle_streaming_response,
|
|
33
|
+
)
|
|
34
|
+
except ImportError:
|
|
35
|
+
logger.debug("Google AI SDK (google-genai) not available, middleware not loaded")
|
|
36
|
+
middleware = None # type: ignore
|
|
37
|
+
extract_google_ai_usage_data = None # type: ignore
|
|
38
|
+
create_google_ai_metering_call = None # type: ignore
|
|
39
|
+
handle_streaming_response = None # type: ignore
|
|
40
|
+
|
|
41
|
+
__all__ = [
|
|
42
|
+
# Middleware functions
|
|
43
|
+
"extract_google_ai_usage_data",
|
|
44
|
+
"create_google_ai_metering_call",
|
|
45
|
+
"handle_streaming_response",
|
|
46
|
+
# Provider functions
|
|
47
|
+
"detect_provider",
|
|
48
|
+
"get_provider_metadata",
|
|
49
|
+
"is_vertex_ai_endpoint",
|
|
50
|
+
"get_or_detect_provider",
|
|
51
|
+
"reset_provider_cache",
|
|
52
|
+
"GoogleAIEndpoint",
|
|
53
|
+
]
|