You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask返回文本嵌入列表遇float32序列化错误如何解决?

解决Flask返回float32类型嵌入列表的JSON序列化错误

错误原因:Python默认JSON序列化器不支持numpy的float32类型,需要将其转换为Python原生float类型后再序列化。

以下是三种可行的解决方法:

方法一:手动遍历转换类型

通过列表推导式逐个将float32元素转为原生float:

import numpy as np
from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/embeddings')
def get_embeddings():
    # 模拟生成的float32类型嵌入数组
    embeddings_np = np.array([[0.1,0.2,0.3],[0.4,0.5,0.6],[0.7,0.8,0.9]], dtype=np.float32)
    # 转换为Python原生float列表
    embeddings = [[float(val) for val in row] for row in embeddings_np]
    return jsonify({"embeddings": embeddings})

if __name__ == '__main__':
    app.run()

方法二:使用numpy的tolist()方法

numpy数组的tolist()方法会自动将内部的numpy数值类型转为Python原生类型,代码更简洁:

import numpy as np
from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/embeddings')
def get_embeddings():
    embeddings_np = np.array([[0.1,0.2,0.3],[0.4,0.5,0.6],[0.7,0.8,0.9]], dtype=np.float32)
    # 直接转换为原生类型列表
    embeddings = embeddings_np.tolist()
    return jsonify({"embeddings": embeddings})

if __name__ == '__main__':
    app.run()

方法三:自定义JSON编码器(适合频繁处理numpy类型的场景)

自定义Flask的JSON编码器,让它支持numpy类型的自动序列化,无需每次手动转换:

import numpy as np
from flask import Flask, jsonify
from json import JSONEncoder

class NumpyJSONEncoder(JSONEncoder):
    def default(self, obj):
        # 处理numpy浮点类型
        if isinstance(obj, (np.float32, np.float64)):
            return float(obj)
        # 处理numpy数组
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        # 其他类型交给父类处理
        return super().default(obj)

app = Flask(__name__)
# 替换默认编码器
app.json_encoder = NumpyJSONEncoder

@app.route('/embeddings')
def get_embeddings():
    embeddings_np = np.array([[0.1,0.2,0.3],[0.4,0.5,0.6],[0.7,0.8,0.9]], dtype=np.float32)
    return jsonify({"embeddings": embeddings_np})

if __name__ == '__main__':
    app.run()

内容的提问来源于stack exchange,提问作者Yadnesh Salvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:02:18