diff --git a/src/app/endpoints/conversations_v2.py b/src/app/endpoints/conversations_v2.py index 9ba282072..1f61220da 100644 --- a/src/app/endpoints/conversations_v2.py +++ b/src/app/endpoints/conversations_v2.py @@ -6,6 +6,7 @@ from authentication import get_auth_dependency from authorization.middleware import authorize +from cache.cache_entry import CacheEntry from configuration import configuration from log import get_logger from models.api.requests import ConversationUpdateRequest @@ -24,7 +25,6 @@ ConversationsListResponseV2, ConversationUpdateResponse, ) -from models.cache_entry import CacheEntry from models.common import ( ConversationTurn, Message, diff --git a/src/app/endpoints/responses.py b/src/app/endpoints/responses.py index 56a98c188..18ebfd12a 100644 --- a/src/app/endpoints/responses.py +++ b/src/app/endpoints/responses.py @@ -54,8 +54,8 @@ ) from models.api.responses.successful import ResponsesResponse from models.common.moderation import ShieldModerationBlocked +from models.common.responses.contexts import ResponsesContext from models.common.responses.responses_api_params import ResponsesApiParams -from models.common.responses.responses_context import ResponsesContext from models.common.turn_summary import TurnSummary from models.config import Action from observability import ResponsesEventData, build_responses_event, send_splunk_event diff --git a/src/app/endpoints/rlsapi_v1.py b/src/app/endpoints/rlsapi_v1.py index 08555a4d5..e9ecd0c85 100644 --- a/src/app/endpoints/rlsapi_v1.py +++ b/src/app/endpoints/rlsapi_v1.py @@ -26,6 +26,7 @@ from constants import ENDPOINT_PATH_INFER from log import get_logger from metrics import recording +from models.api.requests.rlsapi import RlsapiV1InferRequest, RlsapiV1SystemInfo from models.api.responses.constants import UNAUTHORIZED_OPENAPI_EXAMPLES from models.api.responses.error import ( ForbiddenResponse, @@ -37,9 +38,11 @@ UnauthorizedResponse, UnprocessableEntityResponse, ) +from models.api.responses.successful.rlsapi import ( + RlsapiV1InferData, + RlsapiV1InferResponse, +) from models.config import Action -from models.rlsapi.requests import RlsapiV1InferRequest, RlsapiV1SystemInfo -from models.rlsapi.responses import RlsapiV1InferData, RlsapiV1InferResponse from observability import InferenceEventData, build_inference_event, send_splunk_event from utils.endpoints import check_configuration_loaded from utils.query import ( diff --git a/src/app/endpoints/streaming_query.py b/src/app/endpoints/streaming_query.py index 6079d2aa4..18be5ce1f 100644 --- a/src/app/endpoints/streaming_query.py +++ b/src/app/endpoints/streaming_query.py @@ -74,10 +74,10 @@ UnprocessableEntityResponse, ) from models.api.responses.successful import StreamingQueryResponse +from models.common.responses.contexts import ResponseGeneratorContext from models.common.responses.responses_api_params import ResponsesApiParams from models.common.turn_summary import ReferencedDocument, TurnSummary from models.config import Action -from models.context import ResponseGeneratorContext from utils.conversations import append_turn_items_to_conversation from utils.endpoints import ( check_configuration_loaded, diff --git a/src/cache/README.md b/src/cache/README.md index ad45a75d5..9e24fe312 100644 --- a/src/cache/README.md +++ b/src/cache/README.md @@ -6,6 +6,9 @@ Various cache implementations. ## [cache.py](cache.py) Abstract class that is parent for all cache implementations. +## [cache_entry.py](cache_entry.py) +Pydantic model for a conversation history cache entry. + ## [cache_error.py](cache_error.py) Any exception that can occur during cache operations. diff --git a/src/cache/cache.py b/src/cache/cache.py index b0122ada9..be1d10f13 100644 --- a/src/cache/cache.py +++ b/src/cache/cache.py @@ -2,7 +2,7 @@ from abc import ABC, abstractmethod -from models.cache_entry import CacheEntry +from cache.cache_entry import CacheEntry from models.common import ConversationData from utils.suid import check_suid diff --git a/src/models/cache_entry.py b/src/cache/cache_entry.py similarity index 100% rename from src/models/cache_entry.py rename to src/cache/cache_entry.py diff --git a/src/cache/in_memory_cache.py b/src/cache/in_memory_cache.py index cf2b85a76..f15fb0754 100644 --- a/src/cache/in_memory_cache.py +++ b/src/cache/in_memory_cache.py @@ -1,8 +1,8 @@ """In-memory cache implementation.""" from cache.cache import Cache +from cache.cache_entry import CacheEntry from log import get_logger -from models.cache_entry import CacheEntry from models.common import ConversationData from models.config import InMemoryCacheConfig from utils.connection_decorator import connection diff --git a/src/cache/noop_cache.py b/src/cache/noop_cache.py index e7426885b..f032cb96d 100644 --- a/src/cache/noop_cache.py +++ b/src/cache/noop_cache.py @@ -1,8 +1,8 @@ """No-operation cache implementation.""" from cache.cache import Cache +from cache.cache_entry import CacheEntry from log import get_logger -from models.cache_entry import CacheEntry from models.common import ConversationData from utils.connection_decorator import connection diff --git a/src/cache/postgres_cache.py b/src/cache/postgres_cache.py index b51b06893..cb840fb7a 100644 --- a/src/cache/postgres_cache.py +++ b/src/cache/postgres_cache.py @@ -6,9 +6,9 @@ from psycopg2.extensions import AsIs from cache.cache import Cache +from cache.cache_entry import CacheEntry from cache.cache_error import CacheError from log import get_logger -from models.cache_entry import CacheEntry from models.common import ConversationData from models.common.turn_summary import ( ReferencedDocument, diff --git a/src/cache/sqlite_cache.py b/src/cache/sqlite_cache.py index ee1c4c2e4..2e0d56f8b 100644 --- a/src/cache/sqlite_cache.py +++ b/src/cache/sqlite_cache.py @@ -5,9 +5,9 @@ from time import time from cache.cache import Cache +from cache.cache_entry import CacheEntry from cache.cache_error import CacheError from log import get_logger -from models.cache_entry import CacheEntry from models.common import ConversationData from models.common.turn_summary import ( ReferencedDocument, diff --git a/src/models/README.md b/src/models/README.md index 5a5c65b8c..8a3903da2 100644 --- a/src/models/README.md +++ b/src/models/README.md @@ -3,15 +3,9 @@ ## [__init__.py](__init__.py) Pydantic models. -## [cache_entry.py](cache_entry.py) -Model for conversation history cache entry. - ## [config.py](config.py) Model with service configuration. -## [context.py](context.py) -Context objects for internal operations. - ## [api/](api/) Models for API request and response bodies. @@ -20,6 +14,3 @@ Shared models and types used across endpoints. ## [database/](database/) SQLAlchemy ORM models. - -## [rlsapi/](rlsapi/) -Models for the rlsapi v1 API surface. diff --git a/src/models/__init__.py b/src/models/__init__.py index 7e7e0baec..35c898295 100644 --- a/src/models/__init__.py +++ b/src/models/__init__.py @@ -1 +1,11 @@ """Pydantic models.""" + +from models import api, common, database +from models.config import Configuration + +__all__ = [ + "Configuration", + "api", + "common", + "database", +] diff --git a/src/models/api/README.md b/src/models/api/README.md index 29e945e42..b680b19b2 100644 --- a/src/models/api/README.md +++ b/src/models/api/README.md @@ -3,5 +3,8 @@ ## [__init__.py](__init__.py) Typed HTTP API models (OpenAPI-oriented) for FastAPI routes. Exposes the [`responses`](responses/README.md) subpackage. +## [requests/](requests/) +REST request body models, including [`requests/rlsapi.py`](requests/rlsapi.py) for the rlsapi v1 surface. + ## [responses/](responses/README.md) HTTP response shapes (successful payloads, errors, and OpenAPI description constants). diff --git a/src/models/api/requests/__init__.py b/src/models/api/requests/__init__.py index 296bed7ed..93c31f16f 100644 --- a/src/models/api/requests/__init__.py +++ b/src/models/api/requests/__init__.py @@ -7,6 +7,14 @@ from models.api.requests.prompts import PromptCreateRequest, PromptUpdateRequest from models.api.requests.query import QueryRequest, StreamingInterruptRequest from models.api.requests.responses_openai import ResponsesRequest +from models.api.requests.rlsapi import ( + RlsapiV1Attachment, + RlsapiV1CLA, + RlsapiV1Context, + RlsapiV1InferRequest, + RlsapiV1SystemInfo, + RlsapiV1Terminal, +) from models.api.requests.vector_stores import ( VectorStoreCreateRequest, VectorStoreFileCreateRequest, @@ -23,6 +31,12 @@ "PromptUpdateRequest", "QueryRequest", "ResponsesRequest", + "RlsapiV1Attachment", + "RlsapiV1CLA", + "RlsapiV1Context", + "RlsapiV1InferRequest", + "RlsapiV1SystemInfo", + "RlsapiV1Terminal", "StreamingInterruptRequest", "VectorStoreCreateRequest", "VectorStoreFileCreateRequest", diff --git a/src/models/rlsapi/requests.py b/src/models/api/requests/rlsapi.py similarity index 100% rename from src/models/rlsapi/requests.py rename to src/models/api/requests/rlsapi.py diff --git a/src/models/api/responses/successful/README.md b/src/models/api/responses/successful/README.md index bdcf4ac2c..af3c15000 100644 --- a/src/models/api/responses/successful/README.md +++ b/src/models/api/responses/successful/README.md @@ -33,5 +33,8 @@ Successful response models for synchronous query and streaming query documentati ## [responses_openai.py](responses_openai.py) Successful response model for the OpenAI-compatible Responses API. +## [rlsapi.py](rlsapi.py) +Successful response payloads for the rlsapi v1 `/infer` endpoint. + ## [vector_stores.py](vector_stores.py) Successful responses for vector stores and vector store files. diff --git a/src/models/api/responses/successful/__init__.py b/src/models/api/responses/successful/__init__.py index d84bf2197..93bb988e1 100644 --- a/src/models/api/responses/successful/__init__.py +++ b/src/models/api/responses/successful/__init__.py @@ -45,6 +45,10 @@ StreamingQueryResponse, ) from models.api.responses.successful.responses_openai import ResponsesResponse +from models.api.responses.successful.rlsapi import ( + RlsapiV1InferData, + RlsapiV1InferResponse, +) from models.api.responses.successful.vector_stores import ( FileResponse, VectorStoreDeleteResponse, @@ -83,6 +87,8 @@ "RAGListResponse", "ReadinessResponse", "ResponsesResponse", + "RlsapiV1InferData", + "RlsapiV1InferResponse", "ShieldsResponse", "StatusResponse", "StreamingInterruptResponse", diff --git a/src/models/rlsapi/responses.py b/src/models/api/responses/successful/rlsapi.py similarity index 100% rename from src/models/rlsapi/responses.py rename to src/models/api/responses/successful/rlsapi.py diff --git a/src/models/common/responses/README.md b/src/models/common/responses/README.md index b9c9eccb0..9608310f0 100644 --- a/src/models/common/responses/README.md +++ b/src/models/common/responses/README.md @@ -3,6 +3,6 @@ ## [responses_api_params.py](responses_api_params.py) Request parameter model for Llama Stack responses API calls. -## [responses_context.py](responses_context.py) -Request-scoped context model for the responses endpoint pipeline. +## [contexts.py](contexts.py) +Context models for pipeline and streaming. diff --git a/src/models/common/responses/__init__.py b/src/models/common/responses/__init__.py index 6cdf7e5c7..d71f6c026 100644 --- a/src/models/common/responses/__init__.py +++ b/src/models/common/responses/__init__.py @@ -1,7 +1,7 @@ """Shared models for the OpenAI-compatible Responses API pipeline.""" +from models.common.responses.contexts import ResponsesContext from models.common.responses.responses_api_params import ResponsesApiParams -from models.common.responses.responses_context import ResponsesContext from models.common.responses.responses_conversation_context import ( ResponsesConversationContext, ) diff --git a/src/models/common/responses/responses_context.py b/src/models/common/responses/contexts.py similarity index 53% rename from src/models/common/responses/responses_context.py rename to src/models/common/responses/contexts.py index be082e163..89ec455d2 100644 --- a/src/models/common/responses/responses_context.py +++ b/src/models/common/responses/contexts.py @@ -1,5 +1,6 @@ -"""Request-scoped context model for the responses endpoint pipeline.""" +"""Context objects for the responses endpoint pipeline and streaming query generators.""" +from dataclasses import dataclass, field from datetime import datetime from typing import Optional @@ -7,6 +8,7 @@ from llama_stack_client import AsyncLlamaStackClient from pydantic import BaseModel, ConfigDict, Field +from models.api.requests import QueryRequest from models.common.moderation import ShieldModerationResult from models.common.turn_summary import RAGContext @@ -53,3 +55,49 @@ class ResponsesContext(BaseModel): default=False, description="Whether to generate a topic summary for new conversations", ) + + +@dataclass +class ResponseGeneratorContext: # pylint: disable=too-many-instance-attributes + """ + Context object for response generator creation. + + This class groups all the parameters needed to create a response generator + for streaming query endpoints, reducing function parameter count from 10 to 1. + + Attributes: + conversation_id: The conversation identifier + request_id: Unique identifier for the streaming request + user_id: The user identifier + skip_userid_check: Whether to skip user ID validation + model_id: The model identifier + query_request: The query request object + started_at: Timestamp when the request started (ISO 8601 format) + client: The Llama Stack client for API interactions + moderation_result: The moderation result + inline_rag_context: Inline RAG context + vector_store_ids: Vector store IDs used in the query for source resolution. + rag_id_mapping: Mapping from vector_db_id to user-facing rag_id. + """ + + # Conversation & User context + conversation_id: str + request_id: str + user_id: str + skip_userid_check: bool + + # Model info + model_id: str + + # Request & Timing + query_request: QueryRequest + started_at: str + + # Dependencies & State + client: AsyncLlamaStackClient + moderation_result: ShieldModerationResult + + # RAG index identification + inline_rag_context: RAGContext + vector_store_ids: list[str] = field(default_factory=list) + rag_id_mapping: dict[str, str] = field(default_factory=dict) diff --git a/src/models/context.py b/src/models/context.py deleted file mode 100644 index fce41c061..000000000 --- a/src/models/context.py +++ /dev/null @@ -1,55 +0,0 @@ -"""Context objects for internal operations.""" - -from dataclasses import dataclass, field - -from llama_stack_client import AsyncLlamaStackClient - -from models.api.requests import QueryRequest -from models.common.moderation import ShieldModerationResult -from models.common.turn_summary import RAGContext - - -@dataclass -class ResponseGeneratorContext: # pylint: disable=too-many-instance-attributes - """ - Context object for response generator creation. - - This class groups all the parameters needed to create a response generator - for streaming query endpoints, reducing function parameter count from 10 to 1. - - Attributes: - conversation_id: The conversation identifier - request_id: Unique identifier for the streaming request - user_id: The user identifier - skip_userid_check: Whether to skip user ID validation - model_id: The model identifier - query_request: The query request object - started_at: Timestamp when the request started (ISO 8601 format) - client: The Llama Stack client for API interactions - moderation_result: The moderation result - inline_rag_context: Inline RAG context - vector_store_ids: Vector store IDs used in the query for source resolution. - rag_id_mapping: Mapping from vector_db_id to user-facing rag_id. - """ - - # Conversation & User context - conversation_id: str - request_id: str - user_id: str - skip_userid_check: bool - - # Model info - model_id: str - - # Request & Timing - query_request: QueryRequest - started_at: str - - # Dependencies & State - client: AsyncLlamaStackClient - moderation_result: ShieldModerationResult - - # RAG index identification - inline_rag_context: RAGContext - vector_store_ids: list[str] = field(default_factory=list) - rag_id_mapping: dict[str, str] = field(default_factory=dict) diff --git a/src/models/rlsapi/README.md b/src/models/rlsapi/README.md deleted file mode 100644 index 9b6434056..000000000 --- a/src/models/rlsapi/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# List of source files stored in `src/models/rlsapi` directory - -## [__init__.py](__init__.py) -Pydantic models for rlsapi v1 integration. - -## [requests.py](requests.py) -Models for rlsapi v1 REST API requests. - -## [responses.py](responses.py) -Models for rlsapi v1 REST API responses. - diff --git a/src/models/rlsapi/__init__.py b/src/models/rlsapi/__init__.py deleted file mode 100644 index 66925eafe..000000000 --- a/src/models/rlsapi/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Pydantic models for rlsapi v1 integration.""" diff --git a/src/utils/query.py b/src/utils/query.py index 9daa086aa..3b4fac231 100644 --- a/src/utils/query.py +++ b/src/utils/query.py @@ -21,6 +21,7 @@ import constants from app.database import get_session from authorization.azure_token_manager import AzureEntraIDManager +from cache.cache_entry import CacheEntry from cache.cache_error import CacheError from client import AsyncLlamaStackClientHolder from configuration import configuration @@ -35,7 +36,6 @@ ServiceUnavailableResponse, UnprocessableEntityResponse, ) -from models.cache_entry import CacheEntry from models.common.query import Attachment from models.common.turn_summary import TurnSummary from models.config import Action diff --git a/tests/integration/endpoints/test_conversations_v2_integration.py b/tests/integration/endpoints/test_conversations_v2_integration.py index a84612f4e..f81b0d139 100644 --- a/tests/integration/endpoints/test_conversations_v2_integration.py +++ b/tests/integration/endpoints/test_conversations_v2_integration.py @@ -17,10 +17,10 @@ update_conversation_endpoint_handler, ) from authentication.interface import AuthTuple +from cache.cache_entry import CacheEntry from cache.sqlite_cache import SQLiteCache from configuration import AppConfig from models.api.requests import ConversationUpdateRequest -from models.cache_entry import CacheEntry from models.config import SQLiteDatabaseConfiguration from tests.integration.conftest import ( TEST_CONVERSATION_ID, diff --git a/tests/integration/endpoints/test_query_integration.py b/tests/integration/endpoints/test_query_integration.py index 3623438fc..725f01d25 100644 --- a/tests/integration/endpoints/test_query_integration.py +++ b/tests/integration/endpoints/test_query_integration.py @@ -17,9 +17,9 @@ import utils.query from app.endpoints.query import query_endpoint_handler from authentication.interface import AuthTuple +from cache.cache_entry import CacheEntry from configuration import AppConfig from models.api.requests import QueryRequest -from models.cache_entry import CacheEntry from models.common.query import Attachment from models.database.conversations import UserConversation from tests.integration.conftest import ( diff --git a/tests/integration/endpoints/test_rlsapi_v1_integration.py b/tests/integration/endpoints/test_rlsapi_v1_integration.py index 25be6f125..d1be80b61 100644 --- a/tests/integration/endpoints/test_rlsapi_v1_integration.py +++ b/tests/integration/endpoints/test_rlsapi_v1_integration.py @@ -21,8 +21,7 @@ from app.endpoints.rlsapi_v1 import infer_endpoint from authentication.interface import AuthTuple from configuration import AppConfig -from models.common.moderation import ShieldModerationPassed -from models.rlsapi.requests import ( +from models.api.requests.rlsapi import ( RlsapiV1Attachment, RlsapiV1CLA, RlsapiV1Context, @@ -30,7 +29,8 @@ RlsapiV1SystemInfo, RlsapiV1Terminal, ) -from models.rlsapi.responses import RlsapiV1InferResponse +from models.api.responses.successful.rlsapi import RlsapiV1InferResponse +from models.common.moderation import ShieldModerationPassed from tests.unit.utils.auth_helpers import mock_authorization_resolvers from utils.suid import check_suid from version import __version__ diff --git a/tests/unit/app/endpoints/test_conversations_v2.py b/tests/unit/app/endpoints/test_conversations_v2.py index 82289e8b8..c0115130e 100644 --- a/tests/unit/app/endpoints/test_conversations_v2.py +++ b/tests/unit/app/endpoints/test_conversations_v2.py @@ -19,10 +19,10 @@ get_conversations_list_endpoint_handler, update_conversation_endpoint_handler, ) +from cache.cache_entry import CacheEntry from configuration import AppConfig from models.api.requests import ConversationUpdateRequest from models.api.responses.successful import ConversationUpdateResponse -from models.cache_entry import CacheEntry from models.common import ConversationData from models.common.turn_summary import ( ReferencedDocument, diff --git a/tests/unit/app/endpoints/test_responses.py b/tests/unit/app/endpoints/test_responses.py index f6b477e78..06a6b4c66 100644 --- a/tests/unit/app/endpoints/test_responses.py +++ b/tests/unit/app/endpoints/test_responses.py @@ -30,8 +30,8 @@ from models.api.requests import ResponsesRequest from models.api.responses.successful import ResponsesResponse from models.common.moderation import ShieldModerationBlocked, ShieldModerationPassed +from models.common.responses.contexts import ResponsesContext from models.common.responses.responses_api_params import ResponsesApiParams -from models.common.responses.responses_context import ResponsesContext from models.common.responses.responses_conversation_context import ( ResponsesConversationContext, ) diff --git a/tests/unit/app/endpoints/test_rlsapi_v1.py b/tests/unit/app/endpoints/test_rlsapi_v1.py index 38227cf4c..2c07867e2 100644 --- a/tests/unit/app/endpoints/test_rlsapi_v1.py +++ b/tests/unit/app/endpoints/test_rlsapi_v1.py @@ -35,16 +35,16 @@ from authentication.interface import AuthTuple from authentication.rh_identity import RHIdentityData from configuration import AppConfig -from models.api.responses.error import ServiceUnavailableResponse -from models.common.moderation import ShieldModerationBlocked, ShieldModerationPassed -from models.rlsapi.requests import ( +from models.api.requests.rlsapi import ( RlsapiV1Attachment, RlsapiV1Context, RlsapiV1InferRequest, RlsapiV1SystemInfo, RlsapiV1Terminal, ) -from models.rlsapi.responses import RlsapiV1InferResponse +from models.api.responses.error import ServiceUnavailableResponse +from models.api.responses.successful.rlsapi import RlsapiV1InferResponse +from models.common.moderation import ShieldModerationBlocked, ShieldModerationPassed from tests.unit.utils.auth_helpers import mock_authorization_resolvers from utils.rh_identity import get_rh_identity_context from utils.suid import check_suid diff --git a/tests/unit/app/endpoints/test_streaming_query.py b/tests/unit/app/endpoints/test_streaming_query.py index 1894190cf..490a8b229 100644 --- a/tests/unit/app/endpoints/test_streaming_query.py +++ b/tests/unit/app/endpoints/test_streaming_query.py @@ -68,6 +68,7 @@ from models.api.responses.error import InternalServerErrorResponse from models.common.moderation import ShieldModerationPassed from models.common.query import Attachment +from models.common.responses.contexts import ResponseGeneratorContext from models.common.responses.responses_api_params import ResponsesApiParams from models.common.turn_summary import ( RAGChunk, @@ -76,7 +77,6 @@ TurnSummary, ) from models.config import Action -from models.context import ResponseGeneratorContext from utils.stream_interrupts import StreamInterruptRegistry from utils.token_counter import TokenCounter diff --git a/tests/unit/cache/test_noop_cache.py b/tests/unit/cache/test_noop_cache.py index d61da4704..8bf2ede60 100644 --- a/tests/unit/cache/test_noop_cache.py +++ b/tests/unit/cache/test_noop_cache.py @@ -4,8 +4,8 @@ import pytest +from cache.cache_entry import CacheEntry from cache.noop_cache import NoopCache -from models.cache_entry import CacheEntry from utils import suid USER_ID = suid.get_suid() diff --git a/tests/unit/cache/test_postgres_cache.py b/tests/unit/cache/test_postgres_cache.py index bf2855de3..456ff8d01 100644 --- a/tests/unit/cache/test_postgres_cache.py +++ b/tests/unit/cache/test_postgres_cache.py @@ -8,9 +8,9 @@ from pydantic import AnyUrl, SecretStr from pytest_mock import MockerFixture +from cache.cache_entry import CacheEntry from cache.cache_error import CacheError from cache.postgres_cache import PostgresCache -from models.cache_entry import CacheEntry from models.common import ConversationData from models.common.turn_summary import ( ReferencedDocument, diff --git a/tests/unit/cache/test_sqlite_cache.py b/tests/unit/cache/test_sqlite_cache.py index 3c87e677e..025159eeb 100644 --- a/tests/unit/cache/test_sqlite_cache.py +++ b/tests/unit/cache/test_sqlite_cache.py @@ -7,9 +7,9 @@ import pytest from pydantic import AnyUrl +from cache.cache_entry import CacheEntry from cache.cache_error import CacheError from cache.sqlite_cache import SQLiteCache -from models.cache_entry import CacheEntry from models.common import ConversationData from models.common.turn_summary import ( ReferencedDocument, diff --git a/tests/unit/models/rlsapi/test_requests.py b/tests/unit/models/rlsapi/test_requests.py index cdcad4e23..34f9e86f1 100644 --- a/tests/unit/models/rlsapi/test_requests.py +++ b/tests/unit/models/rlsapi/test_requests.py @@ -8,7 +8,7 @@ from pydantic import BaseModel, ValidationError from constants import RLSAPI_V1_QUESTION_MAX_LENGTH -from models.rlsapi.requests import ( +from models.api.requests.rlsapi import ( RlsapiV1Attachment, RlsapiV1CLA, RlsapiV1Context, diff --git a/tests/unit/models/rlsapi/test_responses.py b/tests/unit/models/rlsapi/test_responses.py index 0511d5587..21f1157d4 100644 --- a/tests/unit/models/rlsapi/test_responses.py +++ b/tests/unit/models/rlsapi/test_responses.py @@ -7,7 +7,7 @@ from pydantic import BaseModel, ValidationError from models.api.responses.successful.bases import AbstractSuccessfulResponse -from models.rlsapi.responses import ( +from models.api.responses.successful.rlsapi import ( RlsapiV1InferData, RlsapiV1InferResponse, ) diff --git a/tests/unit/utils/test_query.py b/tests/unit/utils/test_query.py index 18bd887bb..a46b115ba 100644 --- a/tests/unit/utils/test_query.py +++ b/tests/unit/utils/test_query.py @@ -13,6 +13,7 @@ from pytest_mock import MockerFixture from sqlalchemy.exc import SQLAlchemyError +from cache.cache_entry import CacheEntry from cache.cache_error import CacheError from configuration import AppConfig from models.api.requests import QueryRequest @@ -21,7 +22,6 @@ PromptTooLongResponse, QuotaExceededResponse, ) -from models.cache_entry import CacheEntry from models.common.query import Attachment from models.common.turn_summary import TurnSummary from models.config import Action