如何为AzureOpenAIEmbeddings传递配置并解决创建嵌入模型报错
问题解决建议
错误1:values参数无效
AzureOpenAIEmbeddings类不支持values参数,直接传递该参数会触发Embeddings.create()的参数错误。解决方式是直接传递配置中的有效参数,或展开符合类定义的参数字典。
错误2:model_kwargs类型错误
model_kwargs要求为字典类型(用于传递给OpenAI API的额外参数),你将其设为空字符串"",导致代码尝试调用keys()方法时失败。
正确实现步骤
- 清理无效参数:
generation_max_tokens是聊天/生成模型的参数,嵌入模型不需要,从配置中移除该字段。 - 修正
model_kwargs类型:如果不需要额外API参数,将其设为空字典{}或None。 - 正确初始化嵌入模型:使用专门的嵌入模型(而非聊天模型),并传递有效参数。
修正后的代码示例
from langchain_openai import AzureOpenAIEmbeddings # 修正后的模型配置 model_config = { "allowed_special": "", "chunk_size": 50, "disallowed_special": "all", "embedding_ctx_length": 8191, "model_kwargs": {} # 改为空字典,或设为None } embeddings_model = AzureOpenAIEmbeddings( deployment="<deployment_name>", model="text-embedding-ada-002", # 嵌入任务需使用专门的嵌入模型,而非gpt-35-turbo openai_api_type="azure", **model_config )
额外注意点
- 不要用聊天模型(如
gpt_35_turbo)执行嵌入任务,Azure OpenAI嵌入需使用专属嵌入模型(例如text-embedding-ada-002),否则会导致API调用失败。 - 确认
deployment参数对应你的Azure OpenAI部署中嵌入模型的部署名称。
内容的提问来源于stack exchange,提问作者Birish
相关产品推荐
相关产品推荐

