From 87007b9452021f1544a1ee6ced17c21926f4f51e Mon Sep 17 00:00:00 2001 From: jsonbailey Date: Fri, 1 May 2026 17:21:59 -0500 Subject: [PATCH] refactor: remove deprecated ModelResponse, StructuredResponse, AgentResult and compat shims --- packages/sdk/server-ai/src/ldai/__init__.py | 2 - .../sdk/server-ai/src/ldai/managed_model.py | 4 +- .../server-ai/src/ldai/providers/__init__.py | 6 --- .../src/ldai/providers/agent_runner.py | 6 +-- .../src/ldai/providers/ai_provider.py | 50 +------------------ .../src/ldai/providers/model_runner.py | 22 ++------ .../sdk/server-ai/src/ldai/providers/types.py | 42 ---------------- 7 files changed, 11 insertions(+), 121 deletions(-) diff --git a/packages/sdk/server-ai/src/ldai/__init__.py b/packages/sdk/server-ai/src/ldai/__init__.py index 56d780d3..f949c29b 100644 --- a/packages/sdk/server-ai/src/ldai/__init__.py +++ b/packages/sdk/server-ai/src/ldai/__init__.py @@ -35,7 +35,6 @@ AgentGraphResult, AgentGraphRunner, AgentGraphRunnerResult, - AgentResult, AgentRunner, GraphMetrics, GraphMetricSummary, @@ -53,7 +52,6 @@ 'Evaluator', 'AgentRunner', 'AgentGraphRunner', - 'AgentResult', 'AgentGraphResult', 'AgentGraphRunnerResult', 'GraphMetrics', diff --git a/packages/sdk/server-ai/src/ldai/managed_model.py b/packages/sdk/server-ai/src/ldai/managed_model.py index 94605eab..04db0d77 100644 --- a/packages/sdk/server-ai/src/ldai/managed_model.py +++ b/packages/sdk/server-ai/src/ldai/managed_model.py @@ -4,7 +4,7 @@ from ldai import log from ldai.models import AICompletionConfig, LDMessage from ldai.providers.runner import Runner -from ldai.providers.types import JudgeResult, ManagedResult +from ldai.providers.types import JudgeResult, ManagedResult, RunnerResult from ldai.tracker import LDAIConfigTracker @@ -46,7 +46,7 @@ async def run(self, prompt: str) -> ManagedResult: config_messages = self._ai_config.messages or [] all_messages = config_messages + self._messages - result = await tracker.track_metrics_of_async( + result: RunnerResult = await tracker.track_metrics_of_async( lambda r: r.metrics, lambda: self._model_runner.run(all_messages), ) diff --git a/packages/sdk/server-ai/src/ldai/providers/__init__.py b/packages/sdk/server-ai/src/ldai/providers/__init__.py index 22dce784..e616f0c4 100644 --- a/packages/sdk/server-ai/src/ldai/providers/__init__.py +++ b/packages/sdk/server-ai/src/ldai/providers/__init__.py @@ -7,16 +7,13 @@ from ldai.providers.types import ( AgentGraphResult, AgentGraphRunnerResult, - AgentResult, GraphMetrics, GraphMetricSummary, JudgeResult, LDAIMetrics, ManagedGraphResult, ManagedResult, - ModelResponse, RunnerResult, - StructuredResponse, ToolRegistry, ) @@ -25,7 +22,6 @@ 'AgentGraphResult', 'AgentGraphRunner', 'AgentGraphRunnerResult', - 'AgentResult', 'AgentRunner', 'GraphMetrics', 'GraphMetricSummary', @@ -33,11 +29,9 @@ 'LDAIMetrics', 'ManagedGraphResult', 'ManagedResult', - 'ModelResponse', 'ModelRunner', 'Runner', 'RunnerFactory', 'RunnerResult', - 'StructuredResponse', 'ToolRegistry', ] diff --git a/packages/sdk/server-ai/src/ldai/providers/agent_runner.py b/packages/sdk/server-ai/src/ldai/providers/agent_runner.py index cba7e156..79f05c4a 100644 --- a/packages/sdk/server-ai/src/ldai/providers/agent_runner.py +++ b/packages/sdk/server-ai/src/ldai/providers/agent_runner.py @@ -1,6 +1,6 @@ from typing import Any, Protocol, runtime_checkable -from ldai.providers.types import AgentResult +from ldai.providers.types import RunnerResult @runtime_checkable @@ -18,11 +18,11 @@ class AgentRunner(Protocol): the caller just passes input. """ - async def run(self, input: Any) -> AgentResult: + async def run(self, input: Any) -> RunnerResult: """ Run the agent with the given input. :param input: The input to the agent (string prompt or structured input) - :return: AgentResult containing the output, raw response, and metrics + :return: RunnerResult containing the agent's content, metrics, and optional raw/parsed fields """ ... diff --git a/packages/sdk/server-ai/src/ldai/providers/ai_provider.py b/packages/sdk/server-ai/src/ldai/providers/ai_provider.py index 6e2cb6c0..eb3183a3 100644 --- a/packages/sdk/server-ai/src/ldai/providers/ai_provider.py +++ b/packages/sdk/server-ai/src/ldai/providers/ai_provider.py @@ -1,9 +1,8 @@ from abc import ABC -from typing import Any, Dict, List, Optional +from typing import Any, Optional from ldai import log -from ldai.models import LDMessage -from ldai.providers.types import ModelResponse, StructuredResponse, ToolRegistry +from ldai.providers.types import ToolRegistry class AIProvider(ABC): @@ -16,51 +15,6 @@ class AIProvider(ABC): create_model(), create_agent(), and create_agent_graph(). """ - async def invoke_model(self, messages: List[LDMessage]) -> ModelResponse: - """ - Invoke the chat model with an array of messages. - - Default implementation takes no action and returns a placeholder response. - Provider implementations should override this method. - - :param messages: Array of LDMessage objects representing the conversation - :return: ModelResponse containing the model's response - """ - log.warning('invoke_model not implemented by this provider') - - from ldai.models import LDMessage - from ldai.providers.types import LDAIMetrics - - return ModelResponse( - message=LDMessage(role='assistant', content=''), - metrics=LDAIMetrics(success=False, usage=None), - ) - - async def invoke_structured_model( - self, - messages: List[LDMessage], - response_structure: Dict[str, Any], - ) -> StructuredResponse: - """ - Invoke the chat model with structured output support. - - Default implementation takes no action and returns a placeholder response. - Provider implementations should override this method. - - :param messages: Array of LDMessage objects representing the conversation - :param response_structure: Dictionary of output configurations keyed by output name - :return: StructuredResponse containing the structured data - """ - log.warning('invoke_structured_model not implemented by this provider') - - from ldai.providers.types import LDAIMetrics - - return StructuredResponse( - data={}, - raw_response='', - metrics=LDAIMetrics(success=False, usage=None), - ) - def create_model(self, config: Any) -> Optional[Any]: """ Create a configured model executor for the given AI config. diff --git a/packages/sdk/server-ai/src/ldai/providers/model_runner.py b/packages/sdk/server-ai/src/ldai/providers/model_runner.py index 5f00887c..83caa00d 100644 --- a/packages/sdk/server-ai/src/ldai/providers/model_runner.py +++ b/packages/sdk/server-ai/src/ldai/providers/model_runner.py @@ -1,7 +1,7 @@ -from typing import Any, Dict, List, Protocol, runtime_checkable +from typing import List, Protocol, runtime_checkable from ldai.models import LDMessage -from ldai.providers.types import ModelResponse, StructuredResponse +from ldai.providers.types import RunnerResult @runtime_checkable @@ -14,25 +14,11 @@ class ModelRunner(Protocol): and with what parameters — the caller just passes messages. """ - async def invoke_model(self, messages: List[LDMessage]) -> ModelResponse: + async def invoke_model(self, messages: List[LDMessage]) -> RunnerResult: """ Invoke the model with an array of messages. :param messages: Array of LDMessage objects representing the conversation - :return: ModelResponse containing the model's response and metrics - """ - ... - - async def invoke_structured_model( - self, - messages: List[LDMessage], - response_structure: Dict[str, Any], - ) -> StructuredResponse: - """ - Invoke the model with structured output support. - - :param messages: Array of LDMessage objects representing the conversation - :param response_structure: Dictionary defining the JSON schema for output structure - :return: StructuredResponse containing the structured data + :return: RunnerResult containing the model's response and metrics """ ... diff --git a/packages/sdk/server-ai/src/ldai/providers/types.py b/packages/sdk/server-ai/src/ldai/providers/types.py index 5bb8ce47..b537acec 100644 --- a/packages/sdk/server-ai/src/ldai/providers/types.py +++ b/packages/sdk/server-ai/src/ldai/providers/types.py @@ -6,7 +6,6 @@ from dataclasses import dataclass, field from typing import Any, Callable, Dict, List, Optional -from ldai.models import LDMessage from ldai.tracker import LDAIMetricSummary, TokenUsage # Type alias for a registry of tools available to an agent. @@ -87,33 +86,6 @@ class ManagedResult: """Optional asyncio Task that resolves to the list of :class:`JudgeResult` instances when awaited.""" -@dataclass -class ModelResponse: - """ - Response from a model invocation. - - .. deprecated:: - Use :class:`RunnerResult` (from a runner) and :class:`ManagedResult` - (from the managed layer) instead. - """ - message: LDMessage - metrics: LDAIMetrics - evaluations: Optional[asyncio.Task[List[JudgeResult]]] = None - - -@dataclass -class StructuredResponse: - """ - Structured response from AI models. - - .. deprecated:: - Structured output is now represented by :attr:`RunnerResult.parsed`. - """ - data: Dict[str, Any] - raw_response: str - metrics: LDAIMetrics - - @dataclass class GraphMetrics: """Contains raw metrics from a single agent graph run.""" @@ -234,20 +206,6 @@ def to_dict(self) -> Dict[str, Any]: return result -@dataclass -class AgentResult: - """ - Result from a single-agent run. - - .. deprecated:: - Use :class:`ManagedResult` (managed layer) or :class:`RunnerResult` - (runner layer) instead. - """ - output: str - raw: Any - metrics: LDAIMetrics - - @dataclass class AgentGraphResult: """Contains the result of an agent graph run."""