Skip to content

instrument_create_or_get_executor

autogen.opentelemetry.instrumentators.agent_instrumentators.code.instrument_create_or_get_executor #

instrument_create_or_get_executor(agent, *, instrumentator)
Source code in autogen/opentelemetry/instrumentators/agent_instrumentators/code.py
def instrument_create_or_get_executor(agent: Agent, *, instrumentator: Callable[[Agent], Agent]) -> Agent:
    # Instrument `_create_or_get_executor` to auto-instrument dynamically created executors
    if hasattr(agent, "_create_or_get_executor") and not hasattr(agent._create_or_get_executor, "__otel_wrapped__"):
        old_create_or_get_executor = agent._create_or_get_executor

        @contextmanager
        def create_or_get_executor_traced(
            executor_kwargs: dict[str, Any] | None = None,
            tools: Any = None,
            agent_name: str = "executor",
            agent_human_input_mode: str = "NEVER",
        ) -> Generator[Agent, None, None]:
            with old_create_or_get_executor(
                executor_kwargs=executor_kwargs,
                tools=tools,
                agent_name=agent_name,
                agent_human_input_mode=agent_human_input_mode,
            ) as executor:
                # Instrument the dynamically created executor
                instrumentator(executor)
                yield executor

        create_or_get_executor_traced.__otel_wrapped__ = True
        agent._create_or_get_executor = create_or_get_executor_traced

    return agent