使用OpenAI Embeddings遇ValidationError问题求助
解决OpenAI Embeddings调用的ValidationError问题
错误原因分析
- 第一个代码错误:
model_name参数已被LangChain新版本弃用,当前OpenAIEmbeddings类使用model参数指定模型,传入model_name会触发「额外字段不允许」的验证错误。 - 第二个代码错误:导入路径错误,
openai_embed并非官方包,正确的导入路径需从LangChain的对应模块获取。
正确解决方案
情况1:使用旧版LangChain(v0.1之前)
保持原导入路径,将model_name替换为model:
import openai from langchain.embeddings.openai import OpenAIEmbeddings # 可通过环境变量设置API密钥,或直接传入openai_api_key参数 embeddings = OpenAIEmbeddings(model="ada") query_result = embeddings.embed_query("Hello world") print(len(query_result))
情况2:使用新版LangChain(v0.1及之后)
LangChain已拆分出独立的langchain-openai包,需先安装:
pip install langchain-openai
然后使用新的导入路径:
import os from langchain_openai import OpenAIEmbeddings os.environ["OPENAI_API_KEY"] = "<你的API密钥>" embeddings = OpenAIEmbeddings(model="text-embedding-ada-002") # 推荐使用完整模型名,ada是别名 query_result = embeddings.embed_query("Hello world") print(len(query_result))
额外注意事项
- 确保API密钥有效,且账户拥有对应模型的调用权限。
- 若使用环境变量设置密钥,无需在代码中重复传入
openai_api_key参数,LangChain会自动读取。
内容的提问来源于stack exchange,提问作者6080_ Atharva_Kulkarni
相关产品推荐
相关产品推荐

