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

OpenAI库Embedding属性报错求助:升级后仍无法调用text-embedding-ada-002

解决 AttributeError: module 'openai' has no attribute 'Embedding' 问题

1. 排查本地同名文件冲突

  • 检查当前Jupyter工作目录下是否存在名为 openai.py 或 openai.pyc 的文件,这类文件会覆盖官方openai库的导入。如果有,立即重命名或删除该文件,然后重启Jupyter内核后重试。

2. 确认OpenAI库版本与调用方式匹配

情况A:使用OpenAI v1.0+版本(最新版)

最新版OpenAI库已切换为客户端模式调用,旧的openai.Embedding.create写法已被弃用,需改用新语法:

from openai import OpenAI
client = OpenAI(api_key="你的API密钥")  # 也可通过环境变量设置OPENAI_API_KEY

response = client.embeddings.create(
  input="porcine pals say",
  model="text-embedding-ada-002"
)
# 提取嵌入向量
embedding = response.data[0].embedding

情况B:误装了不兼容的版本

若升级后仍出现问题,可能是虚拟环境未同步更新。在Jupyter中运行以下命令确认版本:

print(openai.__version__)
  • 若版本低于1.0.0,执行卸载重装:
pip uninstall openai -y
pip install openai --upgrade
  • 重装后重启Jupyter内核,再使用上述v1.0+的客户端调用方式。

3. 直接调用API的替代方案

若上述方法都无效,可绕过OpenAI库,直接发送HTTP请求获取嵌入向量:

import requests
import os

api_key = os.getenv("OPENAI_API_KEY")  # 或直接赋值你的API密钥
url = "https://api.openai.com/v1/embeddings"

headers = {
    "Authorization": f"Bearer {api_key}",
    "Content-Type": "application/json"
}

payload = {
    "input": "porcine pals say",
    "model": "text-embedding-ada-002"
}

response = requests.post(url, headers=headers, json=payload)
response_data = response.json()

if "data" in response_data:
    embedding = response_data["data"][0]["embedding"]
else:
    print("请求失败:", response_data.get("error", {}).get("message"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:53:21