Begin work on agent core
This commit is contained in:
51
sia/agent_core.py
Normal file
51
sia/agent_core.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from itertools import tee
|
||||
from typing import Optional, Dict, List
|
||||
|
||||
from .docker_module import DockerModule
|
||||
from .llm_engine import LlmEngine
|
||||
from .context_template import generate_context
|
||||
from .util import get_valid_root_elements, split_response
|
||||
|
||||
class AgentCore:
|
||||
"""
|
||||
Core orchestration class for SIA that manages the interaction between
|
||||
different modules and runs the main agent loop.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
system_prompt: str,
|
||||
action_schema: str,
|
||||
docker_module: DockerModule,
|
||||
llm_engine: LlmEngine
|
||||
):
|
||||
"""
|
||||
Initialize the AgentCore with required components.
|
||||
|
||||
Args:
|
||||
system_prompt: System prompt to use for the LLM
|
||||
action_schema_path: Path to the XML schema defining valid actions
|
||||
docker_module: DockerModule instance
|
||||
llm_engine: LLmEngine instance
|
||||
"""
|
||||
self.system_prompt = system_prompt
|
||||
self.action_schema = action_schema
|
||||
self.docker_module = docker_module
|
||||
self.llm_engine = llm_engine
|
||||
|
||||
self.valid_elements = get_valid_root_elements(self.action_schema)
|
||||
|
||||
def run_iteration(self) -> None:
|
||||
"""Run a single iteration of the main agent loop."""
|
||||
containers = self.docker_module.get_all_container_statuses()
|
||||
context = generate_context(containers)
|
||||
tokens = self.llm_engine.infer(
|
||||
self.system_prompt,
|
||||
context
|
||||
)
|
||||
print_tokens, response_tokens = tee(tokens)
|
||||
for token in print_tokens:
|
||||
print(token, end="", flush=True)
|
||||
response_tokens = ''.join(response_tokens)
|
||||
result = split_response(response_tokens, self.valid_elements)
|
||||
print(f"result: {result}")
|
||||
Reference in New Issue
Block a user