diff --git a/langfuse/_client/attributes.py b/langfuse/_client/attributes.py index 5ae81000c..9bd01c44e 100644 --- a/langfuse/_client/attributes.py +++ b/langfuse/_client/attributes.py @@ -164,7 +164,7 @@ def _serialize(obj: Any) -> Optional[str]: if obj is None or isinstance(obj, str): return obj - return json.dumps(obj, cls=EventSerializer) + return json.dumps(obj, cls=EventSerializer, ensure_ascii=False) def _flatten_and_serialize_metadata( diff --git a/langfuse/_client/utils.py b/langfuse/_client/utils.py index d34857ebd..34ab0b1e7 100644 --- a/langfuse/_client/utils.py +++ b/langfuse/_client/utils.py @@ -58,6 +58,7 @@ def span_formatter(span: ReadableSpan) -> str: "instrumentationScope": instrumentationScope, }, indent=2, + ensure_ascii=False, ) + "\n" ) diff --git a/langfuse/_task_manager/score_ingestion_consumer.py b/langfuse/_task_manager/score_ingestion_consumer.py index 1a5b61f91..7ad781be0 100644 --- a/langfuse/_task_manager/score_ingestion_consumer.py +++ b/langfuse/_task_manager/score_ingestion_consumer.py @@ -85,7 +85,7 @@ def _next(self) -> list: # check for serialization errors try: - json.dumps(event, cls=EventSerializer) + json.dumps(event, cls=EventSerializer, ensure_ascii=False) except Exception as e: self._log.error( f"Data error: Failed to serialize score object for ingestion. Score will be dropped. Error: {e}" @@ -117,7 +117,7 @@ def _next(self) -> list: def _get_item_size(self, item: Any) -> int: """Return the size of the item in bytes.""" - return len(json.dumps(item, cls=EventSerializer).encode()) + return len(json.dumps(item, cls=EventSerializer, ensure_ascii=False).encode()) def run(self) -> None: """Run the consumer.""" diff --git a/langfuse/_utils/request.py b/langfuse/_utils/request.py index b106cee2f..a7be90f47 100644 --- a/langfuse/_utils/request.py +++ b/langfuse/_utils/request.py @@ -60,7 +60,7 @@ def post(self, **kwargs: Any) -> httpx.Response: """Post the `kwargs` to the API""" log = logging.getLogger("langfuse") url = self._remove_trailing_slash(self._base_url) + "/api/public/ingestion" - data = json.dumps(kwargs, cls=EventSerializer) + data = json.dumps(kwargs, cls=EventSerializer, ensure_ascii=False) log.debug("making request: %s to %s", data, url) headers = self.generate_headers() res = self._session.post(