Skip to main content

LoongSuite AgentScope Instrumentation

LoongSuite instrumentation for AgentScope framework.

Features

  • Traces: Distributed tracing for agents, LLMs, tools, and formatters
  • Metrics: Performance metrics following OpenTelemetry GenAI semantic conventions
    • gen_ai.client.operation.duration: Operation duration in seconds
    • gen_ai.client.token.usage: Token usage for input and output
  • Events: Detailed event logging for messages and choices

Installation

# Step 1: install LoongSuite distro
pip install loongsuite-distro

# Step 2 (Option C): install this instrumentation from PyPI
pip install loongsuite-instrumentation-agentscope

# Optional app dependency
pip install agentscope

Usage

Auto-instrumentation

loongsuite-instrument \
    --traces_exporter console \
    --metrics_exporter console \
    python your_agentscope_app.py

Manual instrumentation

from opentelemetry.instrumentation.agentscope import AgentScopeInstrumentor
from agentscope.models import DashScopeChatModel
import agentscope

AgentScopeInstrumentor().instrument()

agentscope.init(project="my_project")
model = DashScopeChatModel(model_name="qwen-max")
result = await model(messages)

AgentScopeInstrumentor().uninstrument()

Configuration

Export to OTLP Backend

export OTEL_SERVICE_NAME=my-agentscope-app
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=<trace_endpoint>
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=<metrics_endpoint>

loongsuite-instrument python your_app.py

Content Capture

Control message content capture using environment variables:

# Enable experimental GenAI semantic conventions
export OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental

# Capture content in spans only
export OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=SPAN_ONLY

# Capture content in events only
export OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=EVENT_ONLY

# Capture in both spans and events
export OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=SPAN_AND_EVENT

# Disable content capture (default)
export OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=NO_CONTENT

Supported Components

  • Models: ChatModelBase and all subclasses (nested __call__ / proxy chains emit a single LLM span per logical invocation)
  • Agents: AgentBase and all subclasses (same for stacked AgentBase.__call__)
  • ReAct Steps: Per-iteration react step spans for ReActAgent (via instance hooks); nested overrides that call super()._reasoning / super()._acting still produce one step per logical iteration
  • Tools: Toolkit.call_tool_function
  • Formatters: TruncatedFormatterBase.format

Skill metadata on tool spans

When a tool execution reads the top-level SKILL.md of a skill already registered in toolkit.skills, AgentScope enriches that execute_tool span with:

  • gen_ai.skill.name
  • gen_ai.skill.id
  • gen_ai.skill.description
  • gen_ai.skill.version

AgentScope v2 exposes skill loading through its built-in Skill viewer tool. The v2 middleware records the requested skill argument as gen_ai.skill.name and gen_ai.skill.id; when QwenPaw or AgentScope exposes the registered skill directory, it also resolves the available description, workspace-scoped id, and version metadata.

The matching is intentionally conservative:

  • only registered skills can match
  • only the top-level SKILL.md counts as a skill load
  • reads under other paths such as scripts/ or references/ do not emit gen_ai.skill.*

For CoPaw-style workspace layouts, gen_ai.skill.version is resolved from SKILL.md frontmatter first and falls back to workspace skill.json metadata.version_text when needed.

Concurrency (agents)

ReAct step tracing stores temporary state on the agent instance for the duration of each AgentBase.__call__. AgentScope itself models a single in-flight reply per instance (see AgentBase._reply_task / _reply_id in agentscope): concurrent overlapping await agent(...) on the same instance is unsupported and can corrupt traces, hook state, and interrupt behavior. Use one instance per concurrent conversation, or serialize calls with a lock or queue.

Visualization

Export telemetry data to:

Examples

See the main README for complete usage examples.

License

Apache License 2.0

Metadata

Release files for loongsuite-instrumentation-agentscope 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for loongsuite-instrumentation-agentscope 0.9.0
File Interpreter ABI Platform
loongsuite_instrumentation_agentscope-0.9.0-py3-none-any.whl Python 3 none any Details

Release files / loongsuite_instrumentation_agentscope-0.9.0-py3-none-any.whl

Download URL loongsuite_instrumentation_agentscope-0.9.0-py3-none-any.whl
Size 40.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2a30c9bfb275347303c2e4be1633687e233d2c459c0a4187dfc0dd4cdf06852b
BLAKE2b-256 checksum
How to use checksums
54c9abb3f51bc857419d643950f822c2107531edd6a90bbd99b2c735a6803fac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release history Release notifications | RSS feed

This release

0.9.0 This release

1 release file

0.8.0

1 release file

0.7.0

1 release file

0.6.1

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.0

1 release file

0.3.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page