Updated main file

This commit is contained in:
2024-11-01 20:38:44 +01:00
parent 3b44477423
commit 17a70e08d5
2 changed files with 77 additions and 19 deletions

View File

@@ -1,17 +1,59 @@
import asyncio
from pathlib import Path
from .llm_engine import LlmEngine from .llm_engine import LlmEngine
from .system_metrics import SystemMetrics
from .web_agent import WebAgent
from .web_io_buffer import WebIOBuffer
from .web_server import WebServer
from .working_memory import WorkingMemory
from .xml_validator import XMLValidator
from .response_parser import ResponseParser
async def run_web_server():
"""Run the web server with default configuration."""
# Load system prompt and action schema
base_dir = Path(__file__).parent.parent
with open(base_dir / "system_prompt.txt", "r") as f:
system_prompt = f.read()
with open(base_dir / "action_schema.xsd", "r") as f:
action_schema = f.read()
# Initialize core components
llm = LlmEngine("/root/model")
working_memory = WorkingMemory()
system_metrics = SystemMetrics()
validator = XMLValidator(action_schema)
io_buffer = WebIOBuffer()
parser = ResponseParser(io_buffer)
# Create web agent
agent = WebAgent(
system_prompt=system_prompt,
action_schema=action_schema,
working_memory=working_memory,
system_metrics=system_metrics,
llm=llm,
validator=validator,
parser=parser
)
# Create and start web server
server = WebServer(agent, io_buffer)
await server.start()
try:
# Keep running until interrupted
while True:
await asyncio.sleep(1)
except KeyboardInterrupt:
print("\nShutting down...")
finally:
await server.stop()
def main(): def main():
"""Main entry point for the SIA application.""" """Main entry point for the SIA application."""
system_prompt_path = "system_prompt.txt" asyncio.run(run_web_server())
action_schema_path = "action_schema.xsd"
model_path = "/root/model"
with open(system_prompt_path, 'r') as f:
system_prompt = f.read()
with open(action_schema_path, 'r') as f:
action_schema = f.read()
print("todo")
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@@ -18,10 +18,17 @@ from sia.parse_error_entry import ParseErrorEntry
from sia.delete_command import DeleteCommand from sia.delete_command import DeleteCommand
from sia.entry import Entry from sia.entry import Entry
class TestBaseAgent(BaseAgent): class TestLogHandler(logging.Handler):
"""Concrete implementation of BaseAgent for testing.""" """Custom logging handler that stores records for test verification."""
def run(self) -> None: def __init__(self):
pass super().__init__()
self.records = []
def emit(self, record):
self.records.append(record)
def clear(self):
self.records = []
class MockEntry(Entry): class MockEntry(Entry):
"""Mock entry class that properly extends Entry.""" """Mock entry class that properly extends Entry."""
@@ -40,6 +47,11 @@ class MockEntry(Entry):
elem.text = "<![CDATA[mock content]]>" elem.text = "<![CDATA[mock content]]>"
return elem return elem
class TestBaseAgent(BaseAgent):
"""Concrete implementation of BaseAgent for testing."""
def run(self) -> None:
pass
class BaseAgentTest(unittest.TestCase): class BaseAgentTest(unittest.TestCase):
def setUp(self): def setUp(self):
"""Set up test cases with mocked components.""" """Set up test cases with mocked components."""
@@ -82,10 +94,10 @@ class BaseAgentTest(unittest.TestCase):
# Set timestamp for entries # Set timestamp for entries
self.test_timestamp = datetime(2024, 10, 31, 12, 0, 0) self.test_timestamp = datetime(2024, 10, 31, 12, 0, 0)
# Capture logging output # Setup logging
self.log_records = [] self.log_handler = TestLogHandler()
logging.getLogger().handlers = [] logger = logging.getLogger()
logging.getLogger().addHandler(self.log_handler) logger.addHandler(self.log_handler)
def log_handler(self, record): def log_handler(self, record):
"""Capture log records for testing.""" """Capture log records for testing."""
@@ -93,6 +105,10 @@ class BaseAgentTest(unittest.TestCase):
def tearDown(self): def tearDown(self):
"""Clean up resources.""" """Clean up resources."""
# Remove log handler
logger = logging.getLogger()
logger.removeHandler(self.log_handler)
if hasattr(self, 'agent'): if hasattr(self, 'agent'):
del self.agent del self.agent
@@ -170,4 +186,4 @@ class BaseAgentTest(unittest.TestCase):
self.assertEqual(len(reasoning_elems), 3) self.assertEqual(len(reasoning_elems), 3)
for i, elem in enumerate(reasoning_elems): for i, elem in enumerate(reasoning_elems):
self.assertEqual(elem.get("id"), f"id-{i}") self.assertEqual(elem.get("id"), f"id-{i}")
self.assertEqual(elem.text, f"<![CDATA[test {i}]]>") self.assertEqual(elem.text, f"<![CDATA[test {i}]]>")