使用AzureOpenAIEmbeddings报错:'str'对象无'create'属性
解决AzureOpenAIEmbeddings报错:'str' object has no attribute 'create'
错误原因
你在初始化AzureOpenAIEmbeddings时传入了client="azure"字符串参数,这并非该类的合法配置项,内部逻辑错误地将字符串当作客户端实例调用create方法,从而触发报错。同时,你缺少Azure OpenAI服务必需的端点和API版本配置。
修正方案
方案1:使用正确的AzureOpenAIEmbeddings配置
不需要传入client参数,补充Azure端点、API版本等必填项:
import openai from langchain_community.document_loaders import PyMuPDFLoader from langchain_openai import OpenAIEmbeddings from langchain_community.vectorstores.faiss import FAISS from langchain_openai import AzureOpenAIEmbeddings loader = PyMuPDFLoader("test.pdf") pages = loader.load_and_split() # 正确配置AzureOpenAIEmbeddings embeddings_AZ = AzureOpenAIEmbeddings( openai_api_key=OPENAI_API_KEY, azure_endpoint="你的Azure OpenAI端点URL", # 例如https://xxx.openai.azure.com/ deployment=OPENAI_EMBEDDING_MODEL_NAME, # 你的嵌入模型部署名 openai_api_version="2023-05-15", # 替换为你的API版本 chunk_size=1 ) # 正常执行创建向量库 pdfDocSearch = FAISS.from_documents(pages, embedding=embeddings_AZ)
方案2:用OpenAIEmbeddings兼容Azure
如果要使用OpenAIEmbeddings类对接Azure服务,需设置openai_api_type="azure"而非client="azure",同时补充相关配置:
embeddings_AZ = OpenAIEmbeddings( openai_api_key=OPENAI_API_KEY, openai_api_type="azure", openai_api_base="你的Azure OpenAI端点URL", openai_api_version="2023-05-15", deployment=OPENAI_EMBEDDING_MODEL_NAME, chunk_size=1 )
关键注意点
AzureOpenAIEmbeddings类无需手动传入客户端实例,内部会自动创建适配Azure的客户端- 必须确保
azure_endpoint、openai_api_version参数与你的Azure OpenAI服务配置一致
内容的提问来源于stack exchange,提问作者Prashant Saxena
相关产品推荐
相关产品推荐

