|
16 | 16 | from concurrent.futures import ThreadPoolExecutor |
17 | 17 | from typing import Any, AsyncGenerator, AsyncIterator, Callable, Mapping, Optional, Type, TypeVar, Union, cast |
18 | 18 |
|
19 | | -from opentelemetry import trace |
| 19 | +from opentelemetry import trace as trace_api |
20 | 20 | from pydantic import BaseModel |
21 | 21 |
|
22 | 22 | from ..event_loop.event_loop import event_loop_cycle, run_tool |
@@ -300,7 +300,7 @@ def __init__( |
300 | 300 |
|
301 | 301 | # Initialize tracer instance (no-op if not configured) |
302 | 302 | self.tracer = get_tracer() |
303 | | - self.trace_span: Optional[trace.Span] = None |
| 303 | + self.trace_span: Optional[trace_api.Span] = None |
304 | 304 |
|
305 | 305 | # Initialize agent state management |
306 | 306 | if state is not None: |
@@ -504,17 +504,17 @@ async def stream_async(self, prompt: Union[str, list[ContentBlock]], **kwargs: A |
504 | 504 | message: Message = {"role": "user", "content": content} |
505 | 505 |
|
506 | 506 | self._start_agent_trace_span(message) |
507 | | - |
508 | 507 | try: |
509 | | - events = self._run_loop(message, invocation_state=kwargs) |
510 | | - async for event in events: |
511 | | - if "callback" in event: |
512 | | - callback_handler(**event["callback"]) |
513 | | - yield event["callback"] |
| 508 | + with trace_api.use_span(self.trace_span): |
| 509 | + events = self._run_loop(message, invocation_state=kwargs) |
| 510 | + async for event in events: |
| 511 | + if "callback" in event: |
| 512 | + callback_handler(**event["callback"]) |
| 513 | + yield event["callback"] |
514 | 514 |
|
515 | | - result = AgentResult(*event["stop"]) |
516 | | - callback_handler(result=result) |
517 | | - yield {"result": result} |
| 515 | + result = AgentResult(*event["stop"]) |
| 516 | + callback_handler(result=result) |
| 517 | + yield {"result": result} |
518 | 518 |
|
519 | 519 | self._end_agent_trace_span(response=result) |
520 | 520 |
|
@@ -659,7 +659,6 @@ def _start_agent_trace_span(self, message: Message) -> None: |
659 | 659 | message: The user message. |
660 | 660 | """ |
661 | 661 | model_id = self.model.config.get("model_id") if hasattr(self.model, "config") else None |
662 | | - |
663 | 662 | self.trace_span = self.tracer.start_agent_span( |
664 | 663 | message=message, |
665 | 664 | agent_name=self.name, |
|
0 commit comments