From 434358e8fa698a0fa350a27917a231b37c8757ea Mon Sep 17 00:00:00 2001 From: Adam Wilson Date: Thu, 12 Jun 2025 20:43:11 -0600 Subject: [PATCH] call services from API instead of adapters --- .../adapters/llm/language_model_with_rag.py | 2 +- .../entrypoints/http_api_controller.py | 8 ++++---- src/text_generation/entrypoints/server.py | 3 ++- ...rieval_augmented_generation_response_service.py | 14 ++++++++++++++ ...vice.py => text_generation_response_service.py} | 0 5 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 src/text_generation/services/language_models/retrieval_augmented_generation_response_service.py rename src/text_generation/services/language_models/{language_model_response_service.py => text_generation_response_service.py} (100%) diff --git a/src/text_generation/adapters/llm/language_model_with_rag.py b/src/text_generation/adapters/llm/language_model_with_rag.py index a92e87eee..eb66bbe75 100644 --- a/src/text_generation/adapters/llm/language_model_with_rag.py +++ b/src/text_generation/adapters/llm/language_model_with_rag.py @@ -16,7 +16,7 @@ from src.text_generation.adapters.llm.abstract_language_model import AbstractLan from src.text_generation.adapters.llm.text_generation_foundation_model import TextGenerationFoundationModel -class Phi3LanguageModelWithRag(AbstractLanguageModel): +class LanguageModelWithRag(AbstractLanguageModel): def __init__(self): logger = logging.getLogger() diff --git a/src/text_generation/entrypoints/http_api_controller.py b/src/text_generation/entrypoints/http_api_controller.py index 0f16b470b..6f500116f 100644 --- a/src/text_generation/entrypoints/http_api_controller.py +++ b/src/text_generation/entrypoints/http_api_controller.py @@ -1,8 +1,8 @@ import json import traceback -from src.text_generation.services.language_models.language_model_response_service import TextGenerationResponseService -from src.text_generation.adapters.llm.language_model_with_rag import Phi3LanguageModelWithRag +from src.text_generation.services.language_models.text_generation_response_service import TextGenerationResponseService +from src.text_generation.services.language_models.retrieval_augmented_generation_response_service import RetrievalAugmentedGenerationResponseService from src.text_generation.services.logging.file_logging_service import FileLoggingService class HttpApiController: @@ -12,7 +12,7 @@ class HttpApiController: # Register routes self.register_routes() self.text_generation_svc = TextGenerationResponseService() - self.llm_rag_svc = Phi3LanguageModelWithRag() + self.rag_svc = RetrievalAugmentedGenerationResponseService() def register_routes(self): """Register all API routes""" @@ -84,7 +84,7 @@ class HttpApiController: start_response('400 Bad Request', response_headers) return [response_body] - response_text = self.text_generation_svc.invoke(user_prompt=prompt) + response_text = self.rag_svc.invoke(user_prompt=prompt) response_body = self.format_response(response_text) http_status_code = 200 # make enum diff --git a/src/text_generation/entrypoints/server.py b/src/text_generation/entrypoints/server.py index 714134df3..98c51f5a5 100644 --- a/src/text_generation/entrypoints/server.py +++ b/src/text_generation/entrypoints/server.py @@ -5,7 +5,8 @@ from wsgiref.simple_server import make_server class RestApiServer: def __init__(self): - self.logger = FileLoggingService(filename='text_generation.server.log') + logging_service = FileLoggingService(filename='text_generation.server.log') + self.logger = logging_service.logger def listen(self): try: diff --git a/src/text_generation/services/language_models/retrieval_augmented_generation_response_service.py b/src/text_generation/services/language_models/retrieval_augmented_generation_response_service.py new file mode 100644 index 000000000..d14a08c26 --- /dev/null +++ b/src/text_generation/services/language_models/retrieval_augmented_generation_response_service.py @@ -0,0 +1,14 @@ +from src.text_generation.adapters.llm.language_model_with_rag import LanguageModelWithRag +from src.text_generation.services.language_models.abstract_language_model_response_service import AbstractLanguageModelResponseService + + +class RetrievalAugmentedGenerationResponseService(AbstractLanguageModelResponseService): + + def invoke(self, user_prompt: str) -> str: + + if not user_prompt: + raise ValueError(f"Parameter 'user_prompt' cannot be empty or None") + + rag = LanguageModelWithRag() + response = rag.invoke(user_prompt=user_prompt) + return response \ No newline at end of file diff --git a/src/text_generation/services/language_models/language_model_response_service.py b/src/text_generation/services/language_models/text_generation_response_service.py similarity index 100% rename from src/text_generation/services/language_models/language_model_response_service.py rename to src/text_generation/services/language_models/text_generation_response_service.py