Skip to content

Commit 13188fc

Browse files
fix: improve agent invoke method detection and review follow-ups
Agent-Logs-Url: https://github.com/MervinPraison/PraisonAI/sessions/d404f2be-8ead-4751-95b1-4525d1d1186b Co-authored-by: MervinPraison <454862+MervinPraison@users.noreply.github.com>
1 parent 3443f73 commit 13188fc

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

src/praisonai/praisonai/api/agent_invoke.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,15 @@ def list_registered_agents() -> list:
9696

9797

9898
def _supports_async_start(agent: Any) -> bool:
99-
"""Return True when agent exposes a real async astart method."""
99+
"""Return True if agent.astart is a coroutine function."""
100100
astart = getattr(agent, "astart", None)
101-
return callable(astart) and inspect.iscoroutinefunction(astart)
101+
return inspect.iscoroutinefunction(astart)
102+
103+
104+
def _supports_sync_start(agent: Any) -> bool:
105+
"""Return True when agent exposes a callable sync start method."""
106+
start = getattr(agent, "start", None)
107+
return callable(start)
102108

103109

104110
# FastAPI Router (if FastAPI is available)
@@ -161,11 +167,11 @@ async def invoke_agent(
161167
if _supports_async_start(agent):
162168
# Async agent
163169
result = await agent.astart(request.message)
164-
elif hasattr(agent, "start") and callable(agent.start):
170+
elif _supports_sync_start(agent):
165171
# Sync agent (use start method)
166172
result = agent.start(request.message)
167173
else:
168-
raise AttributeError("Agent must provide start() or async astart()")
174+
raise AttributeError(f"Agent {agent_id} must provide start() or async astart()")
169175

170176
logger.info(f"Agent {agent_id} invoked successfully")
171177

@@ -298,10 +304,10 @@ async def invoke_agent_standalone(
298304

299305
if _supports_async_start(agent):
300306
result = await agent.astart(message)
301-
elif hasattr(agent, "start") and callable(agent.start):
307+
elif _supports_sync_start(agent):
302308
result = agent.start(message)
303309
else:
304-
raise AttributeError("Agent must provide start() or async astart()")
310+
raise AttributeError(f"Agent {agent_id} must provide start() or async astart()")
305311

306312
return {
307313
"result": str(result),

src/praisonai/praisonai/api/call.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
# Set up logging
5454
logger = logging.getLogger(__name__)
5555
log_level = os.getenv("LOGLEVEL", "INFO").upper()
56-
logger.handlers = []
56+
logger.handlers.clear()
5757

5858
# Include agent invoke router for n8n integration
5959
try:

0 commit comments

Comments
 (0)