ums.management.main
1# Agenten Plattform 2# 3# (c) 2024 Magnus Bender 4# Institute of Humanities-Centered Artificial Intelligence (CHAI) 5# Universitaet Hamburg 6# https://www.chai.uni-hamburg.de/~bender 7# 8# source code released under the terms of GNU Public License Version 3 9# https://www.gnu.org/licenses/gpl-3.0.txt 10 11import os 12 13from fastapi import FastAPI, Request 14from fastapi.templating import Jinja2Templates 15 16from ums.management.interface import Interface 17from ums.management.db import DB 18 19from ums.utils import AgentMessage, RiddleData, RiddleDataType, RiddleSolution, TEMPLATE_PATH 20 21class WebMain(): 22 23 def __init__(self): 24 self._init_app() 25 self._init_templates() 26 27 self.db = DB() 28 29 self._add_routes() 30 self._add_routers() 31 32 33 def _init_app(self): 34 self.app = FastAPI( 35 title="Agenten Plattform", 36 description="Agenten Plattform – Management", 37 openapi_url="/api/schema.json", 38 docs_url='/api', 39 redoc_url=None 40 ) 41 42 def _init_templates(self): 43 self.template = Jinja2Templates( 44 directory=TEMPLATE_PATH, 45 auto_reload=True 46 ) 47 48 def _add_routers(self): 49 interface_router = Interface(self.template, self.db) 50 self.app.include_router(interface_router.router) 51 52 53 def _add_routes(self): 54 55 @self.app.get("/test", summary="Test") 56 def huhu(request: Request) -> AgentMessage: 57 ex = AgentMessage( 58 id="ex1", 59 riddle={ 60 "context":"Example 1", 61 "question":"Get the name of the person." 62 }, 63 data=[ 64 RiddleData( 65 type=RiddleDataType.TEXT, 66 file_plain="./cv.txt" 67 ) 68 ] 69 ) 70 ex.status.extract.required = False 71 72 ex.solution = RiddleSolution( 73 solution="Otto", 74 explanation="Written in line 6 after 'Name:'" 75 ) 76 77 ins_count = self.db.add_message('from', 'to', ex) 78 self.db.set_processed(ins_count) 79 80 return ex 81 82if __name__ == "ums.management.main" and os.environ.get('SERVE', 'false') == 'true': 83 main = WebMain() 84 app = main.app
class
WebMain:
22class WebMain(): 23 24 def __init__(self): 25 self._init_app() 26 self._init_templates() 27 28 self.db = DB() 29 30 self._add_routes() 31 self._add_routers() 32 33 34 def _init_app(self): 35 self.app = FastAPI( 36 title="Agenten Plattform", 37 description="Agenten Plattform – Management", 38 openapi_url="/api/schema.json", 39 docs_url='/api', 40 redoc_url=None 41 ) 42 43 def _init_templates(self): 44 self.template = Jinja2Templates( 45 directory=TEMPLATE_PATH, 46 auto_reload=True 47 ) 48 49 def _add_routers(self): 50 interface_router = Interface(self.template, self.db) 51 self.app.include_router(interface_router.router) 52 53 54 def _add_routes(self): 55 56 @self.app.get("/test", summary="Test") 57 def huhu(request: Request) -> AgentMessage: 58 ex = AgentMessage( 59 id="ex1", 60 riddle={ 61 "context":"Example 1", 62 "question":"Get the name of the person." 63 }, 64 data=[ 65 RiddleData( 66 type=RiddleDataType.TEXT, 67 file_plain="./cv.txt" 68 ) 69 ] 70 ) 71 ex.status.extract.required = False 72 73 ex.solution = RiddleSolution( 74 solution="Otto", 75 explanation="Written in line 6 after 'Name:'" 76 ) 77 78 ins_count = self.db.add_message('from', 'to', ex) 79 self.db.set_processed(ins_count) 80 81 return ex