chore: Move simulation related modules to a sub-package in evaluation

Co-authored-by: Keyur Joshi <keyurj@google.com>
PiperOrigin-RevId: 838904075
This commit is contained in:
Keyur Joshi
2025-12-01 13:15:38 -08:00
committed by Copybara-Service
parent cb19d0714c
commit dd827af2ee
16 changed files with 67 additions and 41 deletions
+1 -1
View File
@@ -627,7 +627,7 @@ def cli_eval(
from ..evaluation.local_eval_set_results_manager import LocalEvalSetResultsManager
from ..evaluation.local_eval_sets_manager import load_eval_set_from_file
from ..evaluation.local_eval_sets_manager import LocalEvalSetsManager
from ..evaluation.user_simulator_provider import UserSimulatorProvider
from ..evaluation.simulation.user_simulator_provider import UserSimulatorProvider
from .cli_eval import _collect_eval_results
from .cli_eval import _collect_inferences
from .cli_eval import get_root_agent
+1 -1
View File
@@ -50,7 +50,7 @@ from .eval_sets_manager import EvalSetsManager
from .evaluator import EvalStatus
from .in_memory_eval_sets_manager import InMemoryEvalSetsManager
from .local_eval_sets_manager import convert_eval_set_to_pydantic_schema
from .user_simulator_provider import UserSimulatorProvider
from .simulation.user_simulator_provider import UserSimulatorProvider
logger = logging.getLogger("google_adk." + __name__)
+1 -1
View File
@@ -27,7 +27,7 @@ from pydantic import Field
from ..evaluation.eval_metrics import EvalMetric
from .eval_metrics import BaseCriterion
from .eval_metrics import Threshold
from .user_simulator import BaseUserSimulatorConfig
from .simulation.user_simulator import BaseUserSimulatorConfig
logger = logging.getLogger("google_adk." + __name__)
@@ -45,9 +45,9 @@ from .eval_case import InvocationEvents
from .eval_case import SessionInput
from .eval_set import EvalSet
from .request_intercepter_plugin import _RequestIntercepterPlugin
from .user_simulator import Status as UserSimulatorStatus
from .user_simulator import UserSimulator
from .user_simulator_provider import UserSimulatorProvider
from .simulation.user_simulator import Status as UserSimulatorStatus
from .simulation.user_simulator import UserSimulator
from .simulation.user_simulator_provider import UserSimulatorProvider
_USER_AUTHOR = "user"
_DEFAULT_AUTHOR = "agent"
@@ -55,7 +55,7 @@ from .evaluator import EvaluationResult
from .evaluator import PerInvocationResult
from .metric_evaluator_registry import DEFAULT_METRIC_EVALUATOR_REGISTRY
from .metric_evaluator_registry import MetricEvaluatorRegistry
from .user_simulator_provider import UserSimulatorProvider
from .simulation.user_simulator_provider import UserSimulatorProvider
logger = logging.getLogger('google_adk.' + __name__)
@@ -0,0 +1,13 @@
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
@@ -22,14 +22,14 @@ from google.genai import types as genai_types
from pydantic import Field
from typing_extensions import override
from ..events.event import Event
from ..models.llm_request import LlmRequest
from ..models.registry import LLMRegistry
from ..utils.context_utils import Aclosing
from ..utils.feature_decorator import experimental
from ._retry_options_utils import add_default_retry_options_if_not_present
from .conversation_scenarios import ConversationScenario
from .evaluator import Evaluator
from ...events.event import Event
from ...models.llm_request import LlmRequest
from ...models.registry import LLMRegistry
from ...utils.context_utils import Aclosing
from ...utils.feature_decorator import experimental
from .._retry_options_utils import add_default_retry_options_if_not_present
from ..conversation_scenarios import ConversationScenario
from ..evaluator import Evaluator
from .user_simulator import BaseUserSimulatorConfig
from .user_simulator import NextUserMessage
from .user_simulator import Status
@@ -19,10 +19,10 @@ from typing import Optional
from typing_extensions import override
from ..events.event import Event
from ..utils.feature_decorator import experimental
from .eval_case import StaticConversation
from .evaluator import Evaluator
from ...events.event import Event
from ...utils.feature_decorator import experimental
from ..eval_case import StaticConversation
from ..evaluator import Evaluator
from .user_simulator import BaseUserSimulatorConfig
from .user_simulator import NextUserMessage
from .user_simulator import Status
@@ -26,10 +26,10 @@ from pydantic import Field
from pydantic import model_validator
from pydantic import ValidationError
from ..events.event import Event
from ..utils.feature_decorator import experimental
from .common import EvalBaseModel
from .evaluator import Evaluator
from ...events.event import Event
from ...utils.feature_decorator import experimental
from ..common import EvalBaseModel
from ..evaluator import Evaluator
class BaseUserSimulatorConfig(BaseModel):
@@ -16,8 +16,8 @@ from __future__ import annotations
from typing import Optional
from ..utils.feature_decorator import experimental
from .eval_case import EvalCase
from ...utils.feature_decorator import experimental
from ..eval_case import EvalCase
from .llm_backed_user_simulator import LlmBackedUserSimulator
from .static_user_simulator import StaticUserSimulator
from .user_simulator import BaseUserSimulatorConfig
@@ -0,0 +1,13 @@
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
@@ -15,9 +15,9 @@
from __future__ import annotations
from google.adk.evaluation import conversation_scenarios
from google.adk.evaluation.llm_backed_user_simulator import LlmBackedUserSimulator
from google.adk.evaluation.llm_backed_user_simulator import LlmBackedUserSimulatorConfig
from google.adk.evaluation.user_simulator import Status
from google.adk.evaluation.simulation.llm_backed_user_simulator import LlmBackedUserSimulator
from google.adk.evaluation.simulation.llm_backed_user_simulator import LlmBackedUserSimulatorConfig
from google.adk.evaluation.simulation.user_simulator import Status
from google.adk.events.event import Event
from google.genai import types
import pytest
@@ -112,7 +112,7 @@ async def to_async_iter(items):
def mock_llm_agent(mocker):
"""Provides a mock LLM agent."""
mock_llm_registry_cls = mocker.patch(
"google.adk.evaluation.llm_backed_user_simulator.LLMRegistry"
"google.adk.evaluation.simulation.llm_backed_user_simulator.LLMRegistry"
)
mock_llm_registry = mocker.MagicMock()
mock_llm_registry_cls.return_value = mock_llm_registry
@@ -14,9 +14,9 @@
from __future__ import annotations
from google.adk.evaluation import static_user_simulator
from google.adk.evaluation import user_simulator
from google.adk.evaluation.eval_case import Invocation
from google.adk.evaluation.simulation import static_user_simulator
from google.adk.evaluation.simulation import user_simulator
from google.genai import types
import pytest
@@ -14,8 +14,8 @@
from __future__ import annotations
from google.adk.evaluation.user_simulator import NextUserMessage
from google.adk.evaluation.user_simulator import Status
from google.adk.evaluation.simulation.user_simulator import NextUserMessage
from google.adk.evaluation.simulation.user_simulator import Status
from google.genai.types import Content
import pytest
@@ -16,10 +16,10 @@ from __future__ import annotations
from google.adk.evaluation import conversation_scenarios
from google.adk.evaluation import eval_case
from google.adk.evaluation import user_simulator_provider
from google.adk.evaluation.llm_backed_user_simulator import LlmBackedUserSimulator
from google.adk.evaluation.llm_backed_user_simulator import LlmBackedUserSimulatorConfig
from google.adk.evaluation.static_user_simulator import StaticUserSimulator
from google.adk.evaluation.simulation import user_simulator_provider
from google.adk.evaluation.simulation.llm_backed_user_simulator import LlmBackedUserSimulator
from google.adk.evaluation.simulation.llm_backed_user_simulator import LlmBackedUserSimulatorConfig
from google.adk.evaluation.simulation.static_user_simulator import StaticUserSimulator
from google.genai import types
import pytest
@@ -52,7 +52,7 @@ class TestUserSimulatorProvider:
def test_provide_llm_backed_user_simulator(self, mocker):
"""Tests the case when a LlmBackedUserSimulator should be provided."""
mock_llm_registry = mocker.patch(
'google.adk.evaluation.llm_backed_user_simulator.LLMRegistry',
'google.adk.evaluation.simulation.llm_backed_user_simulator.LLMRegistry',
autospec=True,
)
mock_llm_registry.return_value.resolve.return_value = mocker.Mock()
@@ -18,9 +18,9 @@ from google.adk.evaluation.app_details import AgentDetails
from google.adk.evaluation.app_details import AppDetails
from google.adk.evaluation.evaluation_generator import EvaluationGenerator
from google.adk.evaluation.request_intercepter_plugin import _RequestIntercepterPlugin
from google.adk.evaluation.user_simulator import NextUserMessage
from google.adk.evaluation.user_simulator import Status as UserSimulatorStatus
from google.adk.evaluation.user_simulator import UserSimulator
from google.adk.evaluation.simulation.user_simulator import NextUserMessage
from google.adk.evaluation.simulation.user_simulator import Status as UserSimulatorStatus
from google.adk.evaluation.simulation.user_simulator import UserSimulator
from google.adk.events.event import Event
from google.adk.models.llm_request import LlmRequest
from google.genai import types