29 lines
951 B
Python
29 lines
951 B
Python
|
|
from typing import Any
|
|
import logging
|
|
|
|
from .llm import get_llm_for_domain
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class SimpleAgent:
|
|
"""Minimal agent abstraction that calls a local LLM and returns responses."""
|
|
|
|
def __init__(self, name: str, domain: str, system_message: str | None = None):
|
|
self.name = name
|
|
self.domain = domain
|
|
self.system_message = system_message or "You are an assistant."
|
|
self._llm = get_llm_for_domain(domain)
|
|
|
|
def run(self, prompt: str, **kwargs: Any) -> str:
|
|
full_prompt = f"{self.system_message}\n\nUser: {prompt}"
|
|
logger.debug("Agent %s running prompt: %s", self.name, prompt)
|
|
return self._llm.generate(full_prompt)
|
|
|
|
|
|
def build_agents_for_domains(domains: list[str]) -> dict[str, SimpleAgent]:
|
|
agents = {}
|
|
for d in domains:
|
|
agents[d] = SimpleAgent(name=f"agent-{d}", domain=d, system_message=f"You are a tutor for {d}.")
|
|
return agents
|