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

如何在libica.openapi.v2中正确将布尔参数以字符串传入AnalysisParameterInput避免ApiTypeError?

解决libica.openapi.v2中AnalysisParameterInput的ApiTypeError问题

问题分析

报错提示Invalid type for variable 'value'. Required value type is one of [NoneType, str] and passed type was bool,说明传入AnalysisParameterInput的value参数仍有布尔类型的值未被转换为字符串,尽管你已经做了转换处理,但可能存在逻辑覆盖不全的情况。

解决方案

方案1:统一强制转换为字符串(覆盖所有布尔类型场景)

简化转换逻辑,确保所有非None的值都被转为字符串,包括原生布尔值、numpy布尔值等特殊布尔类型:

import numpy as np  # 若使用numpy布尔值则需要导入,否则可省略

param_inputs_list = []
for key, value in param_inputs.items():
    if value is None:
        processed_value = None
    else:
        # 处理所有布尔类型(包括原生bool和numpy.bool_)
        if isinstance(value, (bool, np.bool_)):
            processed_value = "True" if value else "False"
        # 处理字符串形式的布尔值
        elif isinstance(value, str) and value.lower() in ("true", "false"):
            processed_value = value.capitalize()
        # 其他类型直接转为字符串
        else:
            processed_value = str(value)
    print(f"Adding parameter: {key} = {processed_value}")
    param_inputs_list.append(AnalysisParameterInput(parameter_code=key, value=processed_value))

方案2:直接强制转换所有值为字符串(极简版)

如果流水线参数不要求布尔值必须是"True"/"False"格式,可直接将所有非None的值转为字符串,彻底避免类型问题:

param_inputs_list = []
for key, value in param_inputs.items():
    processed_value = str(value) if value is not None else None
    print(f"Adding parameter: {key} = {processed_value}")
    param_inputs_list.append(AnalysisParameterInput(parameter_code=key, value=processed_value))

方案3:使用字典解包传入参数

部分OpenAPI客户端对关键字参数的处理可能存在问题,尝试用字典构造参数后解包传入:

param_inputs_list = []
for key, value in param_inputs.items():
    # 先按需求处理value得到processed_value
    if value is None:
        processed_value = None
    elif isinstance(value, bool):
        processed_value = "True" if value else "False"
    elif isinstance(value, str) and value.lower() in ("true", "false"):
        processed_value = value.capitalize()
    else:
        processed_value = str(value)
    
    param_dict = {
        "parameter_code": key,
        "value": processed_value
    }
    param_inputs_list.append(AnalysisParameterInput(**param_dict))

验证建议

  • 转换后打印type(processed_value)确认类型为str或NoneType
  • 检查param_inputs中是否存在嵌套结构(比如字典、列表),如果有需要递归处理内部的布尔值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:03:19