Azure OpenAI调用报401未授权错误,求解决方案
解决Azure OpenAI GPT-4o调用的401未授权错误
以下是针对你遇到的401错误的排查和解决步骤:
1. 修正认证头格式(最可能的原因)
你当前代码中使用Authorization: Bearer {API_KEY}的认证方式是错误的。Azure OpenAI使用API Key认证时,需改用api-key请求头,而非Bearer令牌格式。
修正后的headers代码:
headers = { "Content-Type": "application/json", "api-key": API_KEY }
2. 确认免费试用订阅的模型权限
免费试用订阅可能对GPT-4o这类高阶模型有访问限制,你可以:
- 登录Azure门户,进入你的OpenAI资源,查看模型部署页面,确认GPT-4o部署状态正常
- 检查订阅的配额和限制,确认GPT-4o的调用额度未耗尽或未被限制
3. 验证API版本兼容性
你使用的API版本是2024-02-15-preview,而GPT-4o部署版本为2024-08-06,建议尝试更新到更匹配的API版本,比如2024-08-01-preview,更新后的端点URL:
https://xxx.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-08-01-preview
4. 检查资源区域与网络访问
- 确认你的OpenAI资源确实位于
swedencentral区域,且端点URL中的资源名称完全匹配(避免拼写错误) - 如果运行环境在企业网络下,检查是否有防火墙或代理阻止了对Azure OpenAI端点的访问,可尝试在本地无代理环境测试
修正后的完整代码示例
import requests # Azure OpenAI Configuration API_KEY = "xxxxxx" # API key from Azure OpenAI ENDPOINT = "https://xxx.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-08-01-preview" # API data payload = { "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Tell me a joke."} ], "temperature": 0.7, "max_tokens": 100 } headers = { "Content-Type": "application/json", "api-key": API_KEY } # API call response = requests.post(ENDPOINT, headers=headers, json=payload) if response.status_code == 200: print("Response:", response.json()) else: print("Error:", response.status_code, response.text)
内容的提问来源于stack exchange,提问作者Doobie Nam




