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
相关产品推荐
相关产品推荐

