|
2 | 2 | import json |
3 | 3 | from opentelemetry.sdk.trace import ReadableSpan |
4 | 4 | from opentelemetry.sdk.trace.export import SpanExporter, SpanExportResult |
5 | | -from typing import Dict, List, Optional, Sequence, cast |
| 5 | +from typing import Dict, List, Optional, Sequence, Union, cast |
6 | 6 | import logging |
7 | 7 |
|
8 | 8 |
|
@@ -149,13 +149,13 @@ def _create_step_from_span(self, span: ReadableSpan) -> Step: |
149 | 149 | "id": str(span.context.span_id) if span.context else None, |
150 | 150 | "name": span_props.get("name", span.name), |
151 | 151 | "type": "llm", |
152 | | - "metadata": self._extract_json(span_props.get("metadata", "{}")), |
| 152 | + "metadata": self._extract_json(str(span_props.get("metadata", "{}"))), |
153 | 153 | "startTime": start_time, |
154 | 154 | "endTime": end_time, |
155 | 155 | "threadId": span_props.get("thread_id"), |
156 | 156 | "parentId": span_props.get("parent_id"), |
157 | 157 | "rootRunId": span_props.get("root_run_id"), |
158 | | - "tags": self._extract_json(span_props.get("tags", "[]")), |
| 158 | + "tags": self._extract_json(str(span_props.get("tags", "[]"))), |
159 | 159 | "input": { |
160 | 160 | "content": ( |
161 | 161 | generation_content["messages"] |
@@ -218,7 +218,7 @@ def _extract_messages( |
218 | 218 |
|
219 | 219 | return messages |
220 | 220 |
|
221 | | - def _extract_json(self, data: str) -> Dict | List | str: |
| 221 | + def _extract_json(self, data: str) -> Union[Dict, List, str]: |
222 | 222 | try: |
223 | 223 | content = json.loads(data) |
224 | 224 | except Exception: |
|
0 commit comments