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

Python中将整数转为合法枚举成员时触发ValueError问题排查

问题原因及解决方法

你的错误出在枚举定义时每个成员值后面多了逗号,导致每个值被定义成了单元素元组(比如SYSTEM = 1,实际等价于SYSTEM = (1,)),而非整数。当你用MessageRole(1)查找时,枚举里没有值为整数1的成员,自然报错。

修正后的枚举定义

from enum import Enum

class MessageRole(Enum):
    SYSTEM = 1
    ASSISTANT = 2
    USER = 3
    FUNCTION = 4
    TOOL = 5

正确的整数转枚举方式

修正后,你原本的代码role: MessageRole = MessageRole(1)就能正常运行,会返回MessageRole.SYSTEM。另外还有两种常用的枚举成员获取方式:

  • 通过成员名直接获取:MessageRole.SYSTEM
  • 通过字符串形式的成员名获取:MessageRole['SYSTEM']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 15:15:53