Spaces:
Running
Running
import asyncio | |
from fastapi_router_controller import Controller | |
from fastapi import APIRouter, Depends, HTTPException | |
from services.ibm_model.ibm_extract_code_block import IbmExtractCodeblock | |
from services.ibm_model.ibm_text_generator import IbmTextGenerator | |
from services.model_generator import ModelGenerator | |
from utils.logger import Logger | |
logger = Logger.get_logger(__name__) | |
router = APIRouter(prefix='/v1') | |
controller = Controller(router, openapi_tag={ | |
'name': 'Generate the Code Snippets', | |
}) | |
model = ModelGenerator() | |
class GenerateController(): | |
def __init__( | |
self, | |
service: ModelGenerator = Depends()) -> None: | |
self.model_generator = service | |
async def generate_code(self, input: str): | |
try: | |
if not input: | |
logger.error('Input is required.') | |
raise HTTPException( | |
status_code=500, detail='Input is required.') | |
ibm_generate_text_visitor = IbmTextGenerator() | |
generated_text = await self.model_generator.acceptTextGenerator(ibm_generate_text_visitor, input) | |
ibm_extract_code_block_visitor = IbmExtractCodeblock() | |
code_block = self.model_generator.acceptExtractCodeBlock( | |
ibm_extract_code_block_visitor, generated_text) | |
logger.info('Output: {}'.format(generated_text)) | |
return {"data": code_block} | |
except asyncio.CancelledError: | |
logger.error( | |
'Canceling network request due to disconnect in client.') | |
except Exception as error: | |
logger.error('Error {}'.format(error)) | |