Skip to content

Commit 9f24af4

Browse files
committed
add callbacks to sub agents
1 parent fb57294 commit 9f24af4

File tree

3 files changed

+41
-23
lines changed

3 files changed

+41
-23
lines changed

veadk/agents/loop_agent.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from pydantic import ConfigDict, Field
2020
from typing_extensions import Any
2121

22+
from veadk.agent import Agent
2223
from veadk.prompts.agent_default_prompt import DEFAULT_DESCRIPTION, DEFAULT_INSTRUCTION
2324
from veadk.tracing.base_tracer import BaseTracer
2425
from veadk.utils.logger import get_logger
@@ -29,7 +30,7 @@
2930

3031

3132
class LoopAgent(GoogleADKLoopAgent):
32-
"""LLM-based Agent with Volcengine capabilities."""
33+
"""Loop Agent with Volcengine capabilities."""
3334

3435
model_config = ConfigDict(arbitrary_types_allowed=True, extra="allow")
3536
"""The model config"""
@@ -49,17 +50,21 @@ class LoopAgent(GoogleADKLoopAgent):
4950
tracers: list[BaseTracer] = []
5051
"""The tracers provided to agent."""
5152

53+
def set_sub_agents_tracer(self, tracer) -> None:
54+
from veadk.agents.parallel_agent import ParallelAgent
55+
from veadk.agents.sequential_agent import SequentialAgent
56+
57+
for sub_agent in self.sub_agents:
58+
if isinstance(sub_agent, Agent):
59+
tracer.do_hooks(sub_agent)
60+
elif isinstance(sub_agent, (SequentialAgent, LoopAgent, ParallelAgent)):
61+
sub_agent.set_sub_agents_tracer(tracer)
62+
5263
def model_post_init(self, __context: Any) -> None:
5364
super().model_post_init(None) # for sub_agents init
5465

5566
if self.tracers:
5667
for tracer in self.tracers:
57-
for sub_agent in self.sub_agents:
58-
try:
59-
tracer.do_hooks(sub_agent)
60-
except Exception as e:
61-
logger.warning(
62-
f"Failed to add hooks for sub_agent `{sub_agent.name}`: {e}"
63-
)
68+
self.set_sub_agents_tracer(tracer)
6469

6570
logger.info(f"{self.__class__.__name__} `{self.name}` init done.")

veadk/agents/parallel_agent.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from pydantic import ConfigDict, Field
2020
from typing_extensions import Any
2121

22+
from veadk.agent import Agent
2223
from veadk.prompts.agent_default_prompt import DEFAULT_DESCRIPTION, DEFAULT_INSTRUCTION
2324
from veadk.tracing.base_tracer import BaseTracer
2425
from veadk.utils.logger import get_logger
@@ -49,17 +50,24 @@ class ParallelAgent(GoogleADKParallelAgent):
4950
tracers: list[BaseTracer] = []
5051
"""The tracers provided to agent."""
5152

53+
def set_sub_agents_tracer(self, tracer) -> None:
54+
from veadk.agents.loop_agent import LoopAgent
55+
from veadk.agents.sequential_agent import SequentialAgent
56+
57+
for sub_agent in self.sub_agents:
58+
if isinstance(sub_agent, Agent):
59+
tracer.do_hooks(sub_agent)
60+
elif isinstance(sub_agent, (SequentialAgent, LoopAgent, ParallelAgent)):
61+
sub_agent.set_sub_agents_tracer(tracer)
62+
5263
def model_post_init(self, __context: Any) -> None:
5364
super().model_post_init(None) # for sub_agents init
5465

5566
if self.tracers:
67+
logger.warning(
68+
"Enable tracing in ParallelAgent may cause OpenTelemetry context error. Issue see https://github.com/google/adk-python/issues/1670"
69+
)
5670
for tracer in self.tracers:
57-
for sub_agent in self.sub_agents:
58-
try:
59-
tracer.do_hooks(sub_agent)
60-
except Exception as e:
61-
logger.warning(
62-
f"Failed to add hooks for sub_agent `{sub_agent.name}`: {e}"
63-
)
71+
self.set_sub_agents_tracer(tracer)
6472

6573
logger.info(f"{self.__class__.__name__} `{self.name}` init done.")

veadk/agents/sequential_agent.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from pydantic import ConfigDict, Field
2020
from typing_extensions import Any
2121

22+
from veadk.agent import Agent
2223
from veadk.prompts.agent_default_prompt import DEFAULT_DESCRIPTION, DEFAULT_INSTRUCTION
2324
from veadk.tracing.base_tracer import BaseTracer
2425
from veadk.utils.logger import get_logger
@@ -29,7 +30,7 @@
2930

3031

3132
class SequentialAgent(GoogleADKSequentialAgent):
32-
"""LLM-based Agent with Volcengine capabilities."""
33+
"""Sequential Agent with Volcengine capabilities."""
3334

3435
model_config = ConfigDict(arbitrary_types_allowed=True, extra="allow")
3536
"""The model config"""
@@ -49,17 +50,21 @@ class SequentialAgent(GoogleADKSequentialAgent):
4950
tracers: list[BaseTracer] = []
5051
"""The tracers provided to agent."""
5152

53+
def set_sub_agents_tracer(self, tracer) -> None:
54+
from veadk.agents.loop_agent import LoopAgent
55+
from veadk.agents.parallel_agent import ParallelAgent
56+
57+
for sub_agent in self.sub_agents:
58+
if isinstance(sub_agent, Agent):
59+
tracer.do_hooks(sub_agent)
60+
elif isinstance(sub_agent, (SequentialAgent, LoopAgent, ParallelAgent)):
61+
sub_agent.set_sub_agents_tracer(tracer)
62+
5263
def model_post_init(self, __context: Any) -> None:
5364
super().model_post_init(None) # for sub_agents init
5465

5566
if self.tracers:
5667
for tracer in self.tracers:
57-
for sub_agent in self.sub_agents:
58-
try:
59-
tracer.do_hooks(sub_agent)
60-
except Exception as e:
61-
logger.warning(
62-
f"Failed to add hooks for sub_agent `{sub_agent.name}`: {e}"
63-
)
68+
self.set_sub_agents_tracer(tracer)
6469

6570
logger.info(f"{self.__class__.__name__} `{self.name}` init done.")

0 commit comments

Comments
 (0)