def add_span(self, langfuse_span_data: LangfuseSpan | None = None): data = filter_none_values(langfuse_span_data.model_dump()) if langfuse_span_data else {} try: body = CreateSpanBody( id=data.get("id"), trace_id=data.get("trace_id"), name=data.get("name"), start_time=data.get("start_time"), end_time=data.get("end_time"), input=data.get("input"), output=data.get("output"), metadata=data.get("metadata"), level=data.get("level"), status_message=data.get("status_message"), parent_observation_id=data.get("parent_observation_id"), version=data.get("version"), ) event = IngestionEvent_SpanCreate( body=body, id=self._make_event_id(), timestamp=self._now_iso(), ) self.langfuse_client.api.ingestion.batch(batch=[event]) logger.debug("LangFuse Span created successfully") except Exception as e: raise ValueError(f"LangFuse Failed to create span: {str(e)}")