66import time
77from typing import Dict , List , Optional , Tuple , Callable , Any
88
9+ import pydantic
10+
911from cozeloop .spec .tracespec import ModelInput , ModelMessagePart , ModelMessagePartType , ModelImageURL , ModelFileURL , ModelOutput
1012from cozeloop .internal .consts import *
1113from cozeloop .internal .httpclient import Client , BaseResponse
1719
1820logger = logging .getLogger (__name__ )
1921
22+
23+ class UploadSpan (BaseModel ):
24+ started_at_micros : int
25+ log_id : str
26+ span_id : str
27+ parent_id : str
28+ trace_id : str
29+ duration_micros : int
30+ service_name : str
31+ workspace_id : str
32+ span_name : str
33+ span_type : str
34+ status_code : int
35+ input : str
36+ output : str
37+ object_storage : str
38+ system_tags_string : Dict [str , str ]
39+ system_tags_long : Dict [str , int ]
40+ system_tags_double : Dict [str , float ]
41+ tags_string : Dict [str , str ]
42+ tags_long : Dict [str , int ]
43+ tags_double : Dict [str , float ]
44+ tags_bool : Dict [str , bool ]
45+
46+
47+ class UploadSpanData (BaseModel ):
48+ spans : List ['UploadSpan' ]
49+
50+
2051class Exporter :
2152 def export_spans (self , ctx : dict , spans : List ['UploadSpan' ]):
2253 raise NotImplementedError
@@ -92,34 +123,6 @@ def export_spans(self, ctx: dict, spans: List['UploadSpan']):
92123 raise Exception (f"export spans fail, err:[{ e } ]" )
93124
94125
95- class UploadSpanData (BaseModel ):
96- spans : List ['UploadSpan' ]
97-
98-
99- class UploadSpan (BaseModel ):
100- started_at_micros : int
101- log_id : str
102- span_id : str
103- parent_id : str
104- trace_id : str
105- duration_micros : int
106- service_name : str
107- workspace_id : str
108- span_name : str
109- span_type : str
110- status_code : int
111- input : str
112- output : str
113- object_storage : str
114- system_tags_string : Dict [str , str ]
115- system_tags_long : Dict [str , int ]
116- system_tags_double : Dict [str , float ]
117- tags_string : Dict [str , str ]
118- tags_long : Dict [str , int ]
119- tags_double : Dict [str , float ]
120- tags_bool : Dict [str , bool ]
121-
122-
123126class UploadFile (BaseModel ):
124127 class Config :
125128 arbitrary_types_allowed = True
@@ -216,7 +219,10 @@ def convert_input(span_key: str, span: Span) -> (str, List[UploadFile]):
216219 model_input = ModelInput ()
217220 if isinstance (value , str ):
218221 try :
219- model_input = ModelInput .model_validate_json (value )
222+ if pydantic .VERSION .startswith ('1' ):
223+ model_input = ModelInput .parse_raw (value )
224+ else :
225+ model_input = ModelInput .model_validate_json (value )
220226 except Exception as e :
221227 logger .error (f"unmarshal ModelInput failed, err: { e } " )
222228 return "" , []
@@ -226,7 +232,10 @@ def convert_input(span_key: str, span: Span) -> (str, List[UploadFile]):
226232 files = transfer_message_part (part , span , span_key )
227233 upload_files .extend (files )
228234
229- value_res = model_input .model_dump_json ()
235+ if pydantic .VERSION .startswith ('1' ):
236+ value_res = model_input .json ()
237+ else :
238+ value_res = model_input .model_dump_json ()
230239
231240 if len (value_res ) > MAX_BYTES_OF_ONE_TAG_VALUE_OF_INPUT_OUTPUT :
232241 value_res , f = transfer_text (value_res , span , span_key )
@@ -251,7 +260,10 @@ def convert_output(span_key: str, span: Span) -> (str, List[UploadFile]):
251260 model_output = ModelOutput ()
252261 if isinstance (value , str ):
253262 try :
254- model_output = ModelOutput .model_validate_json (value )
263+ if pydantic .VERSION .startswith ('1' ):
264+ model_output = ModelOutput .parse_raw (value )
265+ else :
266+ model_output = ModelOutput .model_validate_json (value )
255267 except Exception as e :
256268 logger .error (f"unmarshal ModelOutput failed, err: { e } " )
257269 return "" , []
@@ -330,8 +342,10 @@ def transfer_object_storage(span_upload_files: List[UploadFile]) -> str:
330342 if not is_exist :
331343 return ""
332344
333-
334- return object_storage .model_dump_json ()
345+ if pydantic .VERSION .startswith ('1' ):
346+ return object_storage .json ()
347+ else :
348+ return object_storage .model_dump_json ()
335349
336350
337351def transfer_message_part (src : ModelMessagePart , span : 'Span' , tag_key : str ) -> List [UploadFile ]:
0 commit comments