PYAE1994 commited on
Commit
214a1e5
·
verified ·
1 Parent(s): b5c8390

Fix: update agents/base_agent.py

Browse files
Files changed (1) hide show
  1. agents/base_agent.py +35 -41
agents/base_agent.py CHANGED
@@ -1,60 +1,54 @@
1
  """
2
- BaseAgentAll agents inherit from this.
3
- Uses LLMRouter (never direct API calls).
4
  """
5
- import asyncio
6
- from typing import Any, Dict, Optional
7
  import structlog
8
 
9
  log = structlog.get_logger()
10
 
11
 
12
- class BaseAgent:
 
 
13
  def __init__(self, name: str, ws_manager=None, ai_router=None):
14
- self.name = name
15
- self.ws = ws_manager
16
- self.router = ai_router # LLMRouter instance
17
- self._running = False
18
 
 
19
  async def run(self, task: str, context: Dict = {}, **kwargs) -> str:
20
- raise NotImplementedError(f"{self.name}.run() not implemented")
21
-
22
- async def emit(self, task_id: str, event_type: str, data: Dict, session_id: str = ""):
23
- if not self.ws:
24
- return
25
- try:
26
- if task_id:
27
- await self.ws.emit(task_id, event_type, {
28
- **data, "agent": self.name
29
- }, session_id=session_id)
30
- elif session_id:
31
- await self.ws.emit_chat(session_id, event_type, {
32
- **data, "agent": self.name
33
- })
34
- except Exception as e:
35
- log.warning(f"BaseAgent.emit error", agent=self.name, error=str(e))
36
-
37
- async def ask_llm(
38
  self,
39
- messages: list,
40
- task_id: str = "",
41
- session_id: str = "",
42
  temperature: float = 0.7,
43
- max_tokens: int = 4096,
44
- model: str = "",
45
  ) -> str:
46
- """All agent LLM calls go through the shared LLMRouter."""
47
- if self.router:
48
- return await self.router.ask(
49
  messages=messages,
50
  task_id=task_id,
51
  session_id=session_id,
52
  temperature=temperature,
53
  max_tokens=max_tokens,
54
- model=model,
55
- stream=True,
56
  )
57
- return f"[{self.name}] No LLM router available"
58
-
59
- def get_status(self) -> Dict:
60
- return {"name": self.name, "running": self._running}
 
1
  """
2
+ Base Agent Abstract base for all God Mode agents
 
3
  """
4
+ from abc import ABC, abstractmethod
5
+ from typing import Any, Dict, List, Optional
6
  import structlog
7
 
8
  log = structlog.get_logger()
9
 
10
 
11
+ class BaseAgent(ABC):
12
+ """Abstract base class for all agents in the God Mode ecosystem."""
13
+
14
  def __init__(self, name: str, ws_manager=None, ai_router=None):
15
+ self.name = name
16
+ self.ws = ws_manager
17
+ self.ai_router = ai_router
18
+ self.log = structlog.get_logger().bind(agent=name)
19
 
20
+ @abstractmethod
21
  async def run(self, task: str, context: Dict = {}, **kwargs) -> str:
22
+ """Execute the agent's primary task."""
23
+ pass
24
+
25
+ async def emit(self, room: str, event: str, data: Dict, session_id: str = ""):
26
+ """Emit WebSocket event if manager available."""
27
+ if self.ws:
28
+ await self.ws.emit(room, event, data, session_id=session_id)
29
+
30
+ async def emit_chat(self, session_id: str, event: str, data: Dict):
31
+ """Emit chat WebSocket event."""
32
+ if self.ws:
33
+ await self.ws.emit_chat(session_id, event, data)
34
+
35
+ async def llm(
 
 
 
 
36
  self,
37
+ messages: List[Dict],
38
+ task_id: str = "",
39
+ session_id: str = "",
40
  temperature: float = 0.7,
41
+ max_tokens: int = 4096,
42
+ model: str = "",
43
  ) -> str:
44
+ """Route LLM call through AI router."""
45
+ if self.ai_router:
46
+ return await self.ai_router.complete(
47
  messages=messages,
48
  task_id=task_id,
49
  session_id=session_id,
50
  temperature=temperature,
51
  max_tokens=max_tokens,
52
+ preferred_model=model,
 
53
  )
54
+ return f"[{self.name}] AI router not configured."