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

