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

运行OpenAI Ada-002嵌入引擎遇RetryError,求调试方法

调试OpenAI Ada-002文本嵌入代码的RetryError问题

以下是针对性的调试步骤:

1. 验证API Key与基础请求有效性

  • 先打印获取到的API Key,确认不是None或空字符串:
    print("API Key:", openai.api_key)
    
  • 编写最小测试脚本,直接调用OpenAI嵌入接口,排除代码逻辑干扰:
    import openai
    import os
    openai.api_key = os.environ.get('API_KEY')
    try:
        resp = openai.Embedding.create(input="测试文本", model="text-embedding-ada-002")
        print("接口调用成功:", resp['data'][0]['embedding'][:5])
    except Exception as e:
        print("接口调用失败:", str(e))
    
  • 确认API Key有嵌入模型的访问权限,且账户额度充足。

2. 排查CSV数据问题

  • 检查names列是否存在无效数据:缺失值(NaN)、非字符串类型、空字符串都会触发AttributeError,可以先过滤或标记这些数据:
    # 查看无效数据
    invalid_rows = df[df['names'].apply(lambda x: pd.isna(x) or not isinstance(x, str) or x.strip() == "")]
    print("无效数据行数:", len(invalid_rows))
    print(invalid_rows)
    
  • 给嵌入函数加异常捕获,定位具体出错的文本:
    def safe_embedding(text, model):
        try:
            if not isinstance(text, str) or text.strip() == "":
                return None
            return get_embedding(text, model)
        except Exception as e:
            print(f"处理文本出错: {text}, 错误信息: {str(e)}")
            return None
    df['embeddings'] = df['names'].apply(lambda x: safe_embedding(x, embedding_model))
    
  • 先用小批量数据测试(比如前5行),确认是否是某条特定数据导致的问题:
    df_sample = df.head(5)
    df_sample['embeddings'] = df_sample['names'].apply(lambda x: get_embedding(x, embedding_model))
    

3. 检查路径与文件权限

  • 确认csvpath和embedpath是正确的绝对路径,避免相对路径导致的文件找不到问题,打印路径验证:
    print("CSV路径:", csvpath)
    print("嵌入文件保存路径:", embedpath)
    
  • 确保embedpath目录存在,不存在则创建:
    os.makedirs(embedpath, exist_ok=True)
    
  • 检查是否有文件读写权限,尤其是保存嵌入文件的目录。

4. 版本与重试机制调整

  • 升级OpenAI库到最新版本,旧版本可能存在兼容性问题:
    pip install --upgrade openai
    
  • 替换默认重试逻辑,避免无限制重试导致的累积错误,自定义重试规则:
    from tenacity import retry, stop_after_attempt, wait_fixed
    @retry(stop=stop_after_attempt(3), wait=wait_fixed(2))
    def retry_embedding(text, model):
        return get_embedding(text, model)
    df['embeddings'] = df['names'].apply(lambda x: retry_embedding(x, embedding_model))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:25:28