mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-06-28 02:53:30 +00:00
store attributes values in builtin types to avoid otel warnings (#649)
# What does this PR do? Serialize objects to built in types to avoid otel warnings ## Test Plan ╰─❯ llama stack run ~/.llama/distributions/llamastack-together/together-run.yaml
This commit is contained in:
parent
0e2a99e223
commit
3700022d6f
2 changed files with 6 additions and 7 deletions
|
@ -6,10 +6,8 @@
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import inspect
|
import inspect
|
||||||
from datetime import datetime
|
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
from typing import Any, AsyncGenerator, Callable, Type, TypeVar
|
from typing import Any, AsyncGenerator, Callable, Type, TypeVar
|
||||||
from uuid import UUID
|
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
@ -19,17 +17,17 @@ T = TypeVar("T")
|
||||||
def serialize_value(value: Any) -> Any:
|
def serialize_value(value: Any) -> Any:
|
||||||
"""Serialize a single value into JSON-compatible format."""
|
"""Serialize a single value into JSON-compatible format."""
|
||||||
if value is None:
|
if value is None:
|
||||||
return None
|
return ""
|
||||||
elif isinstance(value, (str, int, float, bool)):
|
elif isinstance(value, (str, int, float, bool)):
|
||||||
return value
|
return value
|
||||||
|
elif hasattr(value, "_name_"):
|
||||||
|
return value._name_
|
||||||
elif isinstance(value, BaseModel):
|
elif isinstance(value, BaseModel):
|
||||||
return value.model_dump()
|
return value.model_dump_json()
|
||||||
elif isinstance(value, (list, tuple, set)):
|
elif isinstance(value, (list, tuple, set)):
|
||||||
return [serialize_value(item) for item in value]
|
return [serialize_value(item) for item in value]
|
||||||
elif isinstance(value, dict):
|
elif isinstance(value, dict):
|
||||||
return {str(k): serialize_value(v) for k, v in value.items()}
|
return {str(k): serialize_value(v) for k, v in value.items()}
|
||||||
elif isinstance(value, (datetime, UUID)):
|
|
||||||
return str(value)
|
|
||||||
else:
|
else:
|
||||||
return str(value)
|
return str(value)
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ from typing import Any, Callable, Dict, List
|
||||||
|
|
||||||
|
|
||||||
from llama_stack.apis.telemetry import * # noqa: F403
|
from llama_stack.apis.telemetry import * # noqa: F403
|
||||||
|
from llama_stack.providers.utils.telemetry.trace_protocol import serialize_value
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -223,7 +224,7 @@ class SpanContextManager:
|
||||||
if self.span:
|
if self.span:
|
||||||
if self.span.attributes is None:
|
if self.span.attributes is None:
|
||||||
self.span.attributes = {}
|
self.span.attributes = {}
|
||||||
self.span.attributes[key] = value
|
self.span.attributes[key] = serialize_value(value)
|
||||||
|
|
||||||
async def __aenter__(self):
|
async def __aenter__(self):
|
||||||
global CURRENT_TRACE_CONTEXT
|
global CURRENT_TRACE_CONTEXT
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue