调用Azure API运行LangChain程序时遭遇KeyError问题求助
问题原因及解决方法
错误根源
你混淆了直接传参和读取环境变量的用法:os.environ["KEY_NAME"]是用来读取名为KEY_NAME的环境变量值,而你直接把端点、部署名、API版本这些实际值当作环境变量的键来调用,自然找不到对应的环境变量,抛出KeyError。
修正方案
有两种正确写法可选:
方案1:直接传入参数值
无需通过os.environ,直接把对应值填入参数:
import os from langchain_openai import AzureChatOpenAI # 设置API密钥到环境变量(这部分写法正确) os.environ["AZURE_OPENAI_API_KEY"] = "你的实际API密钥" model = AzureChatOpenAI( azure_endpoint="https://testing123.cognitiveservices.azure.com/", azure_deployment="testing123", openai_api_version="2021-04-30", )
方案2:正确使用环境变量(生产环境推荐)
先把需要的参数设置为环境变量,再通过键名读取:
import os from langchain_openai import AzureChatOpenAI # 设置所有需要的环境变量 os.environ["AZURE_OPENAI_API_KEY"] = "你的实际API密钥" os.environ["AZURE_OPENAI_ENDPOINT"] = "https://testing123.cognitiveservices.azure.com/" os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"] = "testing123" os.environ["AZURE_OPENAI_API_VERSION"] = "2021-04-30" model = AzureChatOpenAI( azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"], azure_deployment=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"], openai_api_version=os.environ["AZURE_OPENAI_API_VERSION"], )
注意事项
- 敏感信息(比如API密钥)不要硬编码在代码里,生产环境优先用方案2,或通过系统环境变量预先设置,而非在代码内赋值。
- 确认Azure门户中的部署名、API版本、端点信息与代码中完全一致。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

