Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "veadk-python"
version = "0.5.26"
version = "0.5.27"
description = "Volcengine agent development kit, integrations with Volcengine cloud services."
readme = "README.md"
requires-python = ">=3.10"
Expand Down
7 changes: 7 additions & 0 deletions veadk/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -587,6 +587,13 @@ def _prepare_tracers(self):
f"Opentelemetry Tracer init {len(self.tracers[0].exporters)} exporters" # type: ignore
)

# Initialize global meter_uploader from exporters
from veadk.tracing.telemetry.telemetry import (
init_global_meter_uploader_from_exporters,
)

init_global_meter_uploader_from_exporters(self.tracers[0].exporters) # type: ignore

@property
def _llm_flow(self) -> BaseLlmFlow:
from google.adk.flows.llm_flows.auto_flow import AutoFlow
Expand Down
7 changes: 7 additions & 0 deletions veadk/tracing/telemetry/opentelemetry_tracer.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,13 @@ def _init_global_tracer_provider(self) -> None:
f"Init OpentelemetryTracer with {len(self._processors)} exporter(s)."
)

# Initialize global meter_uploader from exporters
from veadk.tracing.telemetry.telemetry import (
init_global_meter_uploader_from_exporters,
)

init_global_meter_uploader_from_exporters(self.exporters)

@property
def trace_file_path(self) -> str:
"""Get the file path of the most recent trace dump.
Expand Down
19 changes: 18 additions & 1 deletion veadk/tracing/telemetry/telemetry.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,23 @@
meter_uploader = None


def init_global_meter_uploader_from_exporters(exporters):
"""Initialize global meter_uploader from a list of exporters.

Args:
exporters: List of exporter instances to search for meter_uploader
"""
global meter_uploader
for exporter in exporters:
if hasattr(exporter, "meter_uploader") and exporter.meter_uploader:
meter_uploader = exporter.meter_uploader
logger.debug(
"Global meter_uploader initialized from exporter: {}",
exporter.__class__.__name__,
)
break


def _upload_call_llm_metrics(
invocation_context: InvocationContext,
event_id: str,
Expand Down Expand Up @@ -90,7 +107,7 @@ def _upload_tool_call_metrics(
if meter_uploader:
meter_uploader.record_tool_call(tool, args, function_response_event)
else:
logger.warning(
logger.debug(
"Meter uploader is not initialized yet. Skip recording tool call metrics."
)

Expand Down
17 changes: 16 additions & 1 deletion veadk/utils/logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import sys

from loguru import logger
from opentelemetry import trace

from veadk.utils.misc import getenv

Expand Down Expand Up @@ -42,9 +43,23 @@ def filter_log():

def setup_logger():
logger.remove()

def format_with_traceid(record):
span = trace.get_current_span()
trace_id_part = ""
if span.is_recording():
trace_id_part = (
f" | trace_id={format(span.get_span_context().trace_id, '016x')}"
)

base_format = "<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level}</level> | <cyan>{file}:{line}</cyan>"
message_part = " - {message}\n{exception}"

return base_format + trace_id_part + message_part

logger.add(
sys.stdout,
format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level}</level> | <cyan>{file}:{line}</cyan> - {message}",
format=format_with_traceid,
colorize=True,
level=getenv("LOGGING_LEVEL", "DEBUG"),
)
Expand Down
2 changes: 1 addition & 1 deletion veadk/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.

VERSION = "0.5.26"
VERSION = "0.5.27"