PYAE1994 commited on
Commit
218457b
·
verified ·
1 Parent(s): 0b216a3

God Mode+ v3 fix: agents/base_agent.py

Browse files
Files changed (1) hide show
  1. agents/base_agent.py +41 -35
agents/base_agent.py CHANGED
@@ -1,54 +1,60 @@
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."
 
 
 
 
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}