initial pass at logging service

This commit is contained in:
Adam Wilson
2025-05-30 08:40:38 -06:00
parent 70d7e62ca0
commit e2f552a1c5
4 changed files with 21 additions and 47 deletions
@@ -1,35 +0,0 @@
# """
# Usage:
# $ uvicorn src.api.http_api:app --host 0.0.0.0 --port 9999
# """
# from fastapi import FastAPI
# from pathlib import Path
# from pydantic import BaseModel
# from src.llm.llm import Phi3LanguageModel
# STATIC_PATH = Path(__file__).parent.absolute() / 'static'
# app = FastAPI(
# title='Phi-3 Language Model API',
# description='HTTP API for interacting with Phi-3 Mini 4K language model'
# )
# class LanguageModelPrompt(BaseModel):
# prompt: str
# class LanguageModelResponse(BaseModel):
# response: str
# @app.get('/', response_model=str)
# async def health_check():
# return 'success'
# @app.post('/api/conversations', response_model=LanguageModelResponse)
# async def get_llm_conversation_response(request: LanguageModelPrompt):
# service = Phi3LanguageModel()
# response = service.invoke(user_input=request.prompt)
# return LanguageModelResponse(response=response)
@@ -3,9 +3,11 @@ import traceback
from src.text_generation.adapters.llm.llm import Phi3LanguageModel
from src.text_generation.adapters.llm.llm_rag import Phi3LanguageModelWithRag
from src.text_generation.service.logging_service import LoggingService
class HttpApiController:
def __init__(self):
self.logger = LoggingService(filename='text_generation.controller.log').logger
self.routes = {}
# Register routes
self.register_routes()
@@ -67,8 +69,10 @@ class HttpApiController:
data = self.get_service_response(prompt)
response_body = self.format_response(data)
http_status_code = 200 # make enum
response_headers = [('Content-Type', 'application/json'), ('Content-Length', str(len(response_body)))]
start_response('200 OK', response_headers)
start_response(f'{http_status_code} OK', response_headers)
self.logger.info('non-RAG response', request_body, http_status_code, response_body)
return [response_body]
def handle_conversations_with_rag(self, env, start_response):
@@ -91,8 +95,10 @@ class HttpApiController:
data = self.get_service_response_with_rag(prompt)
response_body = self.format_response(data)
http_status_code = 200 # make enum
response_headers = [('Content-Type', 'application/json'), ('Content-Length', str(len(response_body)))]
start_response('200 OK', response_headers)
start_response(f'{http_status_code} OK', response_headers)
self.logger.info('RAG response', request_body, http_status_code, response_body)
return [response_body]
def __http_200_ok(self, env, start_response):
+3 -10
View File
@@ -1,17 +1,11 @@
import json
import logging
from src.text_generation.entrypoints.http_api_controller import HttpApiController
from src.text_generation.service.logging_service import LoggingService
from wsgiref.simple_server import make_server
class RestApiServer:
def __init__(self):
pass
def post_response(self, env, start_response):
start_response('200 OK', [('Content-Type', 'application/json')])
yield [json.dumps({'received': 'data'}).encode('utf-8')]
self.logger = LoggingService(filename='text_generation.server.log').logger
def listen(self):
try:
@@ -21,8 +15,7 @@ class RestApiServer:
print(f'listening on port {port}...')
wsgi_srv.serve_forever()
except Exception as e:
logging.warning(e)
self.logger.debug(e)
if __name__ == '__main__':
srv = RestApiServer()
@@ -0,0 +1,10 @@
import logging
class LoggingService:
# TODO use base class and make this file logging service
def __init__(self, filename):
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.FileHandler(filename))
self.logger = logger