diff --git a/docs/_static/llama-stack-spec.html b/docs/_static/llama-stack-spec.html index 75e0c4dfa..98270f7b8 100644 --- a/docs/_static/llama-stack-spec.html +++ b/docs/_static/llama-stack-spec.html @@ -3148,22 +3148,19 @@ "additionalProperties": { "oneOf": [ { - "type": "null" + "type": "string" }, { - "type": "boolean" + "type": "integer" }, { "type": "number" }, { - "type": "string" + "type": "boolean" }, { - "type": "array" - }, - { - "type": "object" + "type": "null" } ] } @@ -3683,8 +3680,7 @@ "auto", "required" ], - "description": "Whether tool use is required or automatic. This is a hint to the model which may not be followed. It depends on the Instruction Following capabilities of the model.", - "default": "auto" + "description": "Whether tool use is required or automatic. This is a hint to the model which may not be followed. It depends on the Instruction Following capabilities of the model." }, "tool_prompt_format": { "type": "string", @@ -6514,22 +6510,19 @@ "additionalProperties": { "oneOf": [ { - "type": "null" + "type": "string" }, { - "type": "boolean" + "type": "integer" }, { "type": "number" }, { - "type": "string" + "type": "boolean" }, { - "type": "array" - }, - { - "type": "object" + "type": "null" } ] } @@ -6587,22 +6580,19 @@ "additionalProperties": { "oneOf": [ { - "type": "null" + "type": "string" }, { - "type": "boolean" + "type": "integer" }, { "type": "number" }, { - "type": "string" + "type": "boolean" }, { - "type": "array" - }, - { - "type": "object" + "type": "null" } ] } diff --git a/docs/_static/llama-stack-spec.yaml b/docs/_static/llama-stack-spec.yaml index c60a002e2..a646d7e08 100644 --- a/docs/_static/llama-stack-spec.yaml +++ b/docs/_static/llama-stack-spec.yaml @@ -1956,12 +1956,11 @@ components: type: object additionalProperties: oneOf: - - type: 'null' - - type: boolean - - type: number - type: string - - type: array - - type: object + - type: integer + - type: number + - type: boolean + - type: 'null' type: type: string const: metric @@ -2387,7 +2386,6 @@ components: Whether tool use is required or automatic. This is a hint to the model which may not be followed. It depends on the Instruction Following capabilities of the model. - default: auto tool_prompt_format: type: string enum: @@ -4161,12 +4159,11 @@ components: type: object additionalProperties: oneOf: - - type: 'null' - - type: boolean - - type: number - type: string - - type: array - - type: object + - type: integer + - type: number + - type: boolean + - type: 'null' type: type: string const: structured_log @@ -4203,12 +4200,11 @@ components: type: object additionalProperties: oneOf: - - type: 'null' - - type: boolean - - type: number - type: string - - type: array - - type: object + - type: integer + - type: number + - type: boolean + - type: 'null' type: type: string const: unstructured_log diff --git a/llama_stack/apis/telemetry/telemetry.py b/llama_stack/apis/telemetry/telemetry.py index 6a62e274d..6272cc40b 100644 --- a/llama_stack/apis/telemetry/telemetry.py +++ b/llama_stack/apis/telemetry/telemetry.py @@ -17,6 +17,7 @@ from typing import ( runtime_checkable, ) +from llama_models.llama3.api.datatypes import Primitive from llama_models.schema_utils import json_schema_type, register_schema, webmethod from pydantic import BaseModel, Field from typing_extensions import Annotated @@ -76,7 +77,7 @@ class EventCommon(BaseModel): trace_id: str span_id: str timestamp: datetime - attributes: Optional[Dict[str, Any]] = Field(default_factory=dict) + attributes: Optional[Dict[str, Primitive]] = Field(default_factory=dict) @json_schema_type diff --git a/llama_stack/providers/utils/telemetry/trace_protocol.py b/llama_stack/providers/utils/telemetry/trace_protocol.py index 1d6988c1e..80c58a2c7 100644 --- a/llama_stack/providers/utils/telemetry/trace_protocol.py +++ b/llama_stack/providers/utils/telemetry/trace_protocol.py @@ -9,12 +9,13 @@ import inspect from functools import wraps from typing import Any, AsyncGenerator, Callable, Type, TypeVar +from llama_models.llama3.api.datatypes import Primitive from pydantic import BaseModel T = TypeVar("T") -def serialize_value(value: Any) -> Any: +def serialize_value(value: Any) -> Primitive: """Serialize a single value into JSON-compatible format.""" if value is None: return "" @@ -24,10 +25,6 @@ def serialize_value(value: Any) -> Any: return value._name_ elif isinstance(value, BaseModel): return value.model_dump_json() - elif isinstance(value, (list, tuple, set)): - return [serialize_value(item) for item in value] - elif isinstance(value, dict): - return {str(k): serialize_value(v) for k, v in value.items()} else: return str(value)