Files
liqiang b119135836
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
2026-08-20 13:12:50 +00:00

44 lines
1.0 KiB
Python

from abc import ABC, abstractmethod
from typing import Sequence
from aworld.trace.base import Span
class SpanConsumer(ABC):
"""SpanConsumer is a protocol that represents a consumer for spans.
"""
@abstractmethod
def consume(self, spans: Sequence[Span]) -> None:
"""Consumes a span.
Args:
spans: The span to consume.
"""
_SPAN_CONSUMER_REGISTRY = {}
def register_span_consumer(default_kwargs=None) -> None:
"""Registers a span consumer.
Args:
default_kwargs: A dictionary of default keyword arguments to pass to the span consumer.
"""
default_kwargs = default_kwargs or {}
def decorator(cls):
_SPAN_CONSUMER_REGISTRY[cls.__name__] = (cls, default_kwargs)
return cls
return decorator
def get_span_consumers() -> Sequence[SpanConsumer]:
"""Returns a list of span consumers.
Returns:
A list of span consumers.
"""
return [
cls(**kwargs)
for cls, kwargs in _SPAN_CONSUMER_REGISTRY.values()
]