mirror of
https://github.com/lightbroker/llmsecops-research.git
synced 2026-07-06 13:07:52 +02:00
initial pass at logging service
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user