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

Azure AI Search嵌入创建失败:BadRequestError 400错误排查求助

排查Azure OpenAI Embeddings接口400错误('$.input'无效)

核心问题分析

你提到打印的results是数值数组,但text-embedding-ada-002模型的input参数要求是文本字符串或字符串数组,传入数值数组会直接触发格式错误,这是问题的核心原因。

具体排查与修复步骤

  • 强制统一输入数据类型:检查从worthiness_with_result.json提取的result字段,确保所有输入转为字符串格式,过滤空值时同步处理类型。
    示例修复代码:
    import json
    
    with open('worthiness_with_result.json', 'r') as f:
        data = json.load(f)
    
    # 过滤空值并强制转为字符串
    valid_inputs = [str(item['result']) for item in data if item.get('result') is not None]
    
  • 校验输入长度限制:text-embedding-ada-002对单条文本的token数限制为8191,超长文本也会触发400错误,可添加校验逻辑:
    from tiktoken import encoding_for_model
    
    encoder = encoding_for_model("text-embedding-ada-002")
    valid_inputs = []
    for item in data:
        result = item.get('result')
        if result is not None:
            text = str(result)
            if len(encoder.encode(text)) <= 8191:
                valid_inputs.append(text)
            else:
                print(f"跳过超长文本:{text[:50]}...")
    
  • 确认接口调用参数:确保调用embeddings.create时,input传入的是处理后的字符串数组,而非数值数组。示例正确调用:
    from openai import AzureOpenAI
    
    client = AzureOpenAI(
        azure_endpoint="你的Azure OpenAI端点",
        api_key="你的API密钥",
        api_version="2024-02-01"
    )
    
    response = client.embeddings.create(
        input=valid_inputs,
        model="text-embedding-ada-002"
    )
    
  • 检查JSON文件格式:确认worthiness_with_result.json无语法错误,比如字段名拼写错误、数值与字符串混用导致解析异常。

额外验证步骤

  • 先用单条明确文本测试接口,比如input=["test embedding"],确认接口能正常返回结果,排除环境配置问题。
  • 打印处理后的valid_inputs,逐一检查每一项的类型和内容,确保无异常元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:12:04