('Type is not msgpack serializable: numpy.float64')Traceback (most recent call l...
🚨 错误信息
TypeError('Type is not msgpack serializable: numpy.float64')Traceback (most recent call last): File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/site-packages/langgraph/pregel/main.py", line 2582, in stream with SyncPregelLoop( ~~~~~~~~~~~~~~^ input, ^^^^^^ ...<17 lines>... cache_policy=self.cache_policy, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) as loop: ^ File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/site-packages/langgraph/pregel/_loop.py", line 1060, in __exit__ return self.stack.__exit__(exc_type, exc_value, traceback) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/contextlib.py", line 619, in __exit__ raise exc File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/contextlib.py", line 604, in __exit__ if cb(*exc_details): ~~^^^^^^^^^^^^^^ File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/site-packages/langgraph/pregel/_executor.py", line 118, in __exit__ task.result() ~~~~~~~~~~~^^ File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/concurrent/futures/_base.py", line 449, in result return self.__get_result() ~~~~~~~~~~~~~~~~~^^ File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/concurrent/futures/_base.py", line 401, in __get_result raise self._exception File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/site-packages/langgraph/pregel/_executor.py", line 81, in done task.result() ~~~~~~~~~~~^^ File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/concurrent/futures/_base.py", line 449, in result return self.__get_result() ~~~~~~~~~~~~~~~~~^^ File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/concurrent/futures/_base.py", line 401, in __get_result raise self._exception File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/concurrent/futures/thread.py", line 59, in run result = self.fn(*self.args, **self.kwargs) File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/site-packages/langgraph/checkpoint/memory/__init__.py", line 403, in put_writes self.serde.dumps_typed(v), ~~~~~~~~~~~~~~~~~~~~~~^^^ File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/site-packages/langgraph/checkpoint/serde/jsonplus.py", line 222, in dumps_typed raise exc File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/site-packages/langgraph/checkpoint/serde/jsonplus.py", line 216, in dumps_typed return "msgpack", _msgpack_enc(obj) ~~~~~~~~~~~~^^^^^ File "/localdata/hyzhou/miniconda3/envs/heychou/lib/python3.13/site-packages/langgraph/checkpoint/serde/jsonplus.py", line 676, in _msgpack_enc return ormsgpack.packb(data, default=_msgpack_default, option=_option) ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: Type is not msgpack serializable: numpy.float64
🤖 AI解决方案
- 错误翻译
TypeError: Type is not msgpack serializable: numpy.float64
TypeError: 类型 numpy.float64 不支持 msgpack 序列化
msgpack 库在序列化 numpy.float64 类型时遇到了问题,无法直接将其转换为 msgpack 支持的格式。
在将数据传递给
langgraph 之前,将 numpy.float64 类型转换为标准的 Python float 类型。 import numpy as np
def convert_numpy_to_float(data):
if isinstance(data, np.float64):
return float(data)
elif isinstance(data, dict):
return {k: convert_numpy_to_float(v) for k, v in data.items()}
elif isinstance(data, list):
return [convert_numpy_to_float(item) for item in data]
else:
return data
# 假设 original_data 是包含 numpy.float64 的数据
# processed_data = convert_numpy_to_float(original_data)
# 然后将 processed_data 传递给 langgraph
或者,在
langgraph 的序列化器中注册一个处理 numpy.float64 的自定义函数。然而,直接在输入数据中进行转换通常更简单。
* 在处理和存储包含 NumPy 数组或 NumPy 浮点数的数据时,始终确保数据类型是可序列化的,或预先进行类型转换。
* 查阅所使用的序列化库(如
msgpack)的文档,了解其支持的数据类型,并根据需要实现自定义序列化逻辑。