datarobot-genai 0.1.72__tar.gz → 0.1.74__tar.gz

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 (101) hide show
  1. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/PKG-INFO +1 -1
  2. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/pyproject.toml +1 -1
  3. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/custom_model.py +0 -32
  4. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/utils/auth.py +16 -1
  5. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/.gitignore +0 -0
  6. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/AUTHORS +0 -0
  7. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/LICENSE +0 -0
  8. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/README.md +0 -0
  9. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/__init__.py +0 -0
  10. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/__init__.py +0 -0
  11. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/agents/__init__.py +0 -0
  12. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/agents/base.py +0 -0
  13. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/chat/__init__.py +0 -0
  14. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/chat/auth.py +0 -0
  15. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/chat/client.py +0 -0
  16. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/chat/responses.py +0 -0
  17. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/cli/__init__.py +0 -0
  18. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/cli/agent_environment.py +0 -0
  19. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/cli/agent_kernel.py +0 -0
  20. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/mcp/__init__.py +0 -0
  21. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/mcp/common.py +0 -0
  22. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/telemetry_agent.py +0 -0
  23. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/utils/__init__.py +0 -0
  24. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/core/utils/urls.py +0 -0
  25. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/crewai/__init__.py +0 -0
  26. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/crewai/agent.py +0 -0
  27. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/crewai/base.py +0 -0
  28. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/crewai/events.py +0 -0
  29. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/crewai/mcp.py +0 -0
  30. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/__init__.py +0 -0
  31. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/__init__.py +0 -0
  32. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/auth.py +0 -0
  33. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/clients.py +0 -0
  34. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/config.py +0 -0
  35. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/config_utils.py +0 -0
  36. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/constants.py +0 -0
  37. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/credentials.py +0 -0
  38. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dr_mcp_server.py +0 -0
  39. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dr_mcp_server_logo.py +0 -0
  40. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_prompts/__init__.py +0 -0
  41. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_prompts/controllers.py +0 -0
  42. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_prompts/dr_lib.py +0 -0
  43. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_prompts/register.py +0 -0
  44. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_prompts/utils.py +0 -0
  45. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/__init__.py +0 -0
  46. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/__init__.py +0 -0
  47. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/__init__.py +0 -0
  48. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/base.py +0 -0
  49. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/default.py +0 -0
  50. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/drum.py +0 -0
  51. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/config.py +0 -0
  52. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/controllers.py +0 -0
  53. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/metadata.py +0 -0
  54. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/register.py +0 -0
  55. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/schemas/drum_agentic_fallback_schema.json +0 -0
  56. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/schemas/drum_prediction_fallback_schema.json +0 -0
  57. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/register.py +0 -0
  58. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/dynamic_tools/schema.py +0 -0
  59. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/exceptions.py +0 -0
  60. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/logging.py +0 -0
  61. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/mcp_instance.py +0 -0
  62. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/mcp_server_tools.py +0 -0
  63. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/memory_management/__init__.py +0 -0
  64. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/memory_management/manager.py +0 -0
  65. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/memory_management/memory_tools.py +0 -0
  66. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/routes.py +0 -0
  67. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/routes_utils.py +0 -0
  68. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/server_life_cycle.py +0 -0
  69. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/telemetry.py +0 -0
  70. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/tool_filter.py +0 -0
  71. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/core/utils.py +0 -0
  72. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/server.py +0 -0
  73. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/test_utils/__init__.py +0 -0
  74. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/test_utils/integration_mcp_server.py +0 -0
  75. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/test_utils/mcp_utils_ete.py +0 -0
  76. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/test_utils/mcp_utils_integration.py +0 -0
  77. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/test_utils/openai_llm_mcp_client.py +0 -0
  78. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/test_utils/tool_base_ete.py +0 -0
  79. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/test_utils/utils.py +0 -0
  80. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/tools/__init__.py +0 -0
  81. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/tools/predictive/__init__.py +0 -0
  82. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/tools/predictive/data.py +0 -0
  83. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/tools/predictive/deployment.py +0 -0
  84. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/tools/predictive/deployment_info.py +0 -0
  85. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/tools/predictive/model.py +0 -0
  86. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/tools/predictive/predict.py +0 -0
  87. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/tools/predictive/predict_realtime.py +0 -0
  88. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/tools/predictive/project.py +0 -0
  89. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/drmcp/tools/predictive/training.py +0 -0
  90. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/langgraph/__init__.py +0 -0
  91. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/langgraph/agent.py +0 -0
  92. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/langgraph/mcp.py +0 -0
  93. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/llama_index/__init__.py +0 -0
  94. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/llama_index/agent.py +0 -0
  95. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/llama_index/base.py +0 -0
  96. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/llama_index/mcp.py +0 -0
  97. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/nat/__init__.py +0 -0
  98. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/nat/agent.py +0 -0
  99. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/nat/datarobot_llm_clients.py +0 -0
  100. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/nat/datarobot_llm_providers.py +0 -0
  101. {datarobot_genai-0.1.72 → datarobot_genai-0.1.74}/src/datarobot_genai/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datarobot-genai
3
- Version: 0.1.72
3
+ Version: 0.1.74
4
4
  Summary: Generic helpers for GenAI
5
5
  Project-URL: Homepage, https://github.com/datarobot-oss/datarobot-genai
6
6
  Author: DataRobot, Inc.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "datarobot-genai"
7
- version = "0.1.72"
7
+ version = "0.1.74"
8
8
  description = "Generic helpers for GenAI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10, <3.13"
@@ -26,7 +26,6 @@ from concurrent.futures import ThreadPoolExecutor
26
26
  from typing import Any
27
27
  from typing import Literal
28
28
 
29
- from datarobot_drum import RuntimeParameters
30
29
  from openai.types.chat import CompletionCreateParams
31
30
  from openai.types.chat.completion_create_params import CompletionCreateParamsNonStreaming
32
31
  from openai.types.chat.completion_create_params import CompletionCreateParamsStreaming
@@ -41,26 +40,6 @@ from datarobot_genai.core.telemetry_agent import instrument
41
40
  logger = logging.getLogger(__name__)
42
41
 
43
42
 
44
- def maybe_set_env_from_runtime_parameters(key: str) -> None:
45
- """Set an environment variable from a DRUM Runtime Parameter if it exists.
46
-
47
- This is safe to call outside of the DataRobot runtime. If the parameter is not available,
48
- the function does nothing.
49
- """
50
- runtime_parameter_placeholder_value = "SET_VIA_PULUMI_OR_MANUALLY"
51
- try:
52
- runtime_parameter_value = RuntimeParameters.get(key)
53
- if (
54
- runtime_parameter_value
55
- and len(runtime_parameter_value) > 0
56
- and runtime_parameter_value != runtime_parameter_placeholder_value
57
- ):
58
- os.environ[key] = runtime_parameter_value
59
- except ValueError:
60
- # Local dev: runtime parameters may be unavailable
61
- pass
62
-
63
-
64
43
  def load_model() -> tuple[ThreadPoolExecutor, asyncio.AbstractEventLoop]:
65
44
  """Initialize a dedicated event loop within a worker thread.
66
45
 
@@ -83,7 +62,6 @@ def chat_entrypoint(
83
62
  load_model_result: tuple[ThreadPoolExecutor, asyncio.AbstractEventLoop],
84
63
  *,
85
64
  work_dir: str | None = None,
86
- runtime_parameter_keys: list[str] | None = None,
87
65
  framework: Literal["crewai", "langgraph", "llamaindex", "nat"] | None = None,
88
66
  **kwargs: Any,
89
67
  ) -> CustomModelChatResponse | Iterator[CustomModelStreamingResponse]:
@@ -103,10 +81,6 @@ def chat_entrypoint(
103
81
  work_dir : Optional[str]
104
82
  Working directory to ``chdir`` into before invoking the agent. This is useful
105
83
  when relative paths are used in agent templates.
106
- runtime_parameter_keys : Optional[List[str]]
107
- Runtime parameter keys (DataRobot custom model) to propagate into env. When
108
- ``None``, defaults to
109
- ``['EXTERNAL_MCP_URL', 'MCP_DEPLOYMENT_ID']``.
110
84
  framework : Optional[Literal["crewai", "langgraph", "llamaindex", "nat"]]
111
85
  When provided, idempotently instruments HTTP clients, OpenAI SDK, and the
112
86
  given framework. If omitted, general instrumentation is still applied.
@@ -129,12 +103,6 @@ def chat_entrypoint(
129
103
  except Exception as e:
130
104
  logger.warning(f"Failed to change working directory to {work_dir}: {e}")
131
105
 
132
- # Load MCP runtime parameters and session secret if configured
133
- if runtime_parameter_keys is None:
134
- runtime_parameter_keys = ["EXTERNAL_MCP_URL", "MCP_DEPLOYMENT_ID"]
135
- for key in runtime_parameter_keys:
136
- maybe_set_env_from_runtime_parameters(key)
137
-
138
106
  # Retrieve authorization context using all supported methods for downstream agents/tools
139
107
  completion_create_params["authorization_context"] = resolve_authorization_context(
140
108
  completion_create_params, **kwargs
@@ -74,7 +74,22 @@ class AuthContextHeaderHandler:
74
74
  if algorithm is None:
75
75
  raise ValueError("Algorithm None is not allowed. Use a secure algorithm like HS256.")
76
76
 
77
- self.secret_key = secret_key or AuthContextConfig().session_secret_key
77
+ # Get secret key from parameter, config, or environment variable
78
+ # Handle the case where AuthContextConfig() initialization fails due to
79
+ # a bug in the datarobot package when SESSION_SECRET_KEY is not set
80
+ if secret_key:
81
+ self.secret_key = secret_key
82
+ else:
83
+ try:
84
+ config = AuthContextConfig()
85
+ self.secret_key = config.session_secret_key or ""
86
+ except (TypeError, AttributeError, Exception):
87
+ # Fallback to reading environment variable directly if config initialization fails
88
+ # This can happen when SESSION_SECRET_KEY is not set and the datarobot package's
89
+ # getenv function encounters a bug with None values
90
+ # it tries to check if "apiToken" in payload: when payload is None
91
+ self.secret_key = ""
92
+
78
93
  self.algorithm = algorithm
79
94
  self.validate_signature = validate_signature
80
95