You need to enable JavaScript to run this app. Python调用Google Perspective API如何提取响应毒性评分并转换类型
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Google Perspective API如何提取响应毒性评分并转换类型

核心错误排查

你当前代码运行会直接报类型错误,问题出在两处:

  • googleapiclient的execute()方法返回的本身就是Python原生字典,不需要额外做JSON序列化
  • 执行val = json.dumps(response, indent=2)后,val已经是格式化的JSON字符串,不再支持字典式的键值访问,直接用val["xxx"]取值必然报错
实现逻辑说明

你需要的目标字段结构路径非常清晰:

  • 要提取的第一个取值为0.05588363的毒性字段,路径是attributeScores -> TOXICITY -> spanScores列表的第一个元素 -> score -> value,这个值本身是0-1区间的浮点型概率值
  • 类型转换注意事项:
    • 转字符串直接调用str()包裹取值结果即可
    • 不要直接对原始浮点数做int()强转——因为原始值是小于1的小数,强转后会直接得到0,通常业务场景会把概率值乘以100转成百分制整数,拿到0-100区间的整型分
修正后的可运行代码
from googleapiclient import discovery
import json
import os

API_KEY = os.getenv('API_KEY')

service = discovery.build('commentanalyzer', 'v1alpha1', developerKey=API_KEY)

analyze_request = {
  'comment': { 'text': 'sample text' },
  'requestedAttributes': {'TOXICITY': {}}
}

# 获取原生字典结构的接口响应
response = service.comments().analyze(body=analyze_request).execute()

# 仅打印时做格式化序列化,不改变原始字典结构
print(json.dumps(response, indent=2))

# 按路径提取目标毒性评分
target_score = response["attributeScores"]["TOXICITY"]["spanScores"][0]["score"]["value"]
# 类型转换示例
score_as_str = str(target_score)
score_as_int = int(target_score * 100)  # 百分制整数转换,避免精度丢失

print(f"原始提取值: {target_score}")
print(f"字符串格式值: {score_as_str}")
print(f"整数格式值: {score_as_int}")

注意区分两个同值字段:spanScores里的是分段文本的评分,summaryScore里的是整段文本的汇总评分,你需求里提到的“第一个取值为0.05588363”对应的就是前者,取值时不要错找路径。

内容的提问来源于stack exchange,提问作者Romulus Hill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 18:06:05