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
db