Open Telemetry#
AutoGen 原生支持 Open Telemetry。这允许您从应用程序中收集遥测数据,并将其发送到您选择的遥测后端。
以下是当前已进行检测的组件:
工具(
BaseTool),在 GenAI 工具语义约定 中具有execute_toolspan。AgentChat 代理(
BaseChatAgent),在 GenAI 代理语义约定 中具有create_agent和invoke_agentspan。
注意
要禁用代理运行时遥测,您可以在运行时构造函数中将 trace_provider 设置为 opentelemetry.trace.NoOpTracerProvider。
此外,如果您无法访问运行时构造函数(例如,如果您正在使用 ComponentConfig),可以将环境变量 AUTOGEN_DISABLE_RUNTIME_TRACING 设置为 true 以禁用代理运行时遥测。
检测您的应用程序#
要检测您的应用程序,您将需要一个 SDK 和一个导出器。如果您的应用程序已经使用 Open Telemetry 进行了检测,您可能已经拥有这些。
全新检测#
如果您的应用程序中没有设置 Open Telemetry,您可以按照以下步骤检测您的应用程序。
pip install opentelemetry-sdk
根据您的 Open Telemetry 收集器,您可以使用 gRPC 或 HTTP 来导出您的遥测数据。
# Pick one of the following
pip install opentelemetry-exporter-otlp-proto-http
pip install opentelemetry-exporter-otlp-proto-grpc
接下来,我们需要获取一个追踪提供者(tracer provider)。
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
def configure_oltp_tracing(endpoint: str = None) -> trace.TracerProvider:
# Configure Tracing
tracer_provider = TracerProvider(resource=Resource({"service.name": "my-service"}))
processor = BatchSpanProcessor(OTLPSpanExporter())
tracer_provider.add_span_processor(processor)
trace.set_tracer_provider(tracer_provider)
return tracer_provider
现在,您可以在创建运行时时发送 trace_provider。
# for single threaded runtime
single_threaded_runtime = SingleThreadedAgentRuntime(tracer_provider=tracer_provider)
# or for worker runtime
worker_runtime = GrpcWorkerAgentRuntime(tracer_provider=tracer_provider)
就是这样!您的应用程序现在已经通过 Open Telemetry 进行了检测。您现在可以在您的遥测后端查看您的遥测数据。
现有检测#
如果您的应用程序中已经设置了 Open Telemetry,您可以在创建运行时时将 tracer provider 传递给它。
from opentelemetry import trace
# Get the tracer provider from your application
tracer_provider = trace.get_tracer_provider()
# for single threaded runtime
single_threaded_runtime = SingleThreadedAgentRuntime(tracer_provider=tracer_provider)
# or for worker runtime
worker_runtime = GrpcWorkerAgentRuntime(tracer_provider=tracer_provider)
示例#
有关如何在 AutoGen 中设置 Open Telemetry 的完整示例,请参见 追踪与可观测性。