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.
Files changed (73) hide show
  1. revenium_middleware/__init__.py +184 -0
  2. revenium_middleware/_core/__init__.py +65 -0
  3. revenium_middleware/_core/config.py +165 -0
  4. revenium_middleware/_core/context.py +109 -0
  5. revenium_middleware/_core/decorators.py +202 -0
  6. revenium_middleware/_core/metering.py +207 -0
  7. revenium_middleware/_core/prompt_extraction.py +55 -0
  8. revenium_middleware/_core/subscriber.py +51 -0
  9. revenium_middleware/_core/trace_fields.py +265 -0
  10. revenium_middleware/anthropic/__init__.py +108 -0
  11. revenium_middleware/anthropic/bedrock_adapter.py +753 -0
  12. revenium_middleware/anthropic/config.py +29 -0
  13. revenium_middleware/anthropic/middleware.py +1070 -0
  14. revenium_middleware/anthropic/prompt_extractor.py +178 -0
  15. revenium_middleware/anthropic/provider.py +141 -0
  16. revenium_middleware/anthropic/summary_printer.py +286 -0
  17. revenium_middleware/anthropic/trace_fields.py +158 -0
  18. revenium_middleware/google/__init__.py +114 -0
  19. revenium_middleware/google/common/__init__.py +127 -0
  20. revenium_middleware/google/common/exceptions.py +137 -0
  21. revenium_middleware/google/common/protocols.py +192 -0
  22. revenium_middleware/google/common/summary_printer.py +271 -0
  23. revenium_middleware/google/common/trace_fields.py +205 -0
  24. revenium_middleware/google/common/types.py +208 -0
  25. revenium_middleware/google/common/utils.py +1111 -0
  26. revenium_middleware/google/config.py +64 -0
  27. revenium_middleware/google/google_ai/__init__.py +53 -0
  28. revenium_middleware/google/google_ai/middleware.py +667 -0
  29. revenium_middleware/google/google_ai/provider.py +135 -0
  30. revenium_middleware/google/prompt_extractor.py +396 -0
  31. revenium_middleware/google/vertex_ai/__init__.py +56 -0
  32. revenium_middleware/google/vertex_ai/middleware.py +1162 -0
  33. revenium_middleware/google/vertex_ai/provider.py +99 -0
  34. revenium_middleware/litellm/__init__.py +25 -0
  35. revenium_middleware/litellm/client/__init__.py +81 -0
  36. revenium_middleware/litellm/client/config.py +53 -0
  37. revenium_middleware/litellm/client/context.py +198 -0
  38. revenium_middleware/litellm/client/decorators.py +912 -0
  39. revenium_middleware/litellm/client/hooks.py +192 -0
  40. revenium_middleware/litellm/client/integrations/__init__.py +26 -0
  41. revenium_middleware/litellm/client/integrations/crewai.py +446 -0
  42. revenium_middleware/litellm/client/middleware.py +321 -0
  43. revenium_middleware/litellm/client/summary_printer.py +314 -0
  44. revenium_middleware/litellm/client/trace_fields.py +51 -0
  45. revenium_middleware/litellm/client/validation.py +207 -0
  46. revenium_middleware/litellm/proxy/__init__.py +25 -0
  47. revenium_middleware/litellm/proxy/middleware.py +217 -0
  48. revenium_middleware/ollama/__init__.py +28 -0
  49. revenium_middleware/ollama/middleware.py +569 -0
  50. revenium_middleware/ollama/trace_fields.py +63 -0
  51. revenium_middleware/openai/__init__.py +23 -0
  52. revenium_middleware/openai/azure_config.py +169 -0
  53. revenium_middleware/openai/azure_model_resolver.py +219 -0
  54. revenium_middleware/openai/config.py +45 -0
  55. revenium_middleware/openai/exceptions.py +115 -0
  56. revenium_middleware/openai/langchain/__init__.py +114 -0
  57. revenium_middleware/openai/langchain/_utils.py +129 -0
  58. revenium_middleware/openai/langchain/unified_handler.py +526 -0
  59. revenium_middleware/openai/middleware.py +1451 -0
  60. revenium_middleware/openai/prompt_extractor.py +173 -0
  61. revenium_middleware/openai/provider.py +170 -0
  62. revenium_middleware/openai/summary_printer.py +292 -0
  63. revenium_middleware/openai/trace_fields.py +98 -0
  64. revenium_middleware/perplexity/__init__.py +97 -0
  65. revenium_middleware/perplexity/middleware.py +379 -0
  66. revenium_middleware/perplexity/perplexity_sdk.py +256 -0
  67. revenium_middleware/perplexity/provider.py +84 -0
  68. revenium_middleware/perplexity/trace_fields.py +25 -0
  69. revenium_python_sdk-0.1.0.dist-info/METADATA +252 -0
  70. revenium_python_sdk-0.1.0.dist-info/RECORD +73 -0
  71. revenium_python_sdk-0.1.0.dist-info/WHEEL +5 -0
  72. revenium_python_sdk-0.1.0.dist-info/licenses/LICENSE +21 -0
  73. 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
+ ]