You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LiteLLM连接Azure OpenAI时遭遇401认证错误求助

解决LiteLLM使用Azure AD令牌连接Azure OpenAI时的401认证错误

针对你遇到的LiteLLM(v1.63.7)+DSPy(v2.6.4)环境下,用DefaultAzureCredential获取令牌连接Azure OpenAI出现401,但直接用openai.AzureOpenAI正常的问题,可尝试以下排查和修复步骤:

1. 修正api_base参数格式并匹配Azure Endpoint

LiteLLM的api_base需要严格对应Azure OpenAI的完整终结点URL(包含https://,不带后续路径),确保和openai代码里的azure_endpoint完全一致。示例:

# 替换为你的实际终结点
api_base = "https://your-resource-name.openai.azure.com"

避免在api_base中添加额外路径(如/openai),LiteLLM会自动处理路径拼接。

2. 显式设置api_key=None避免冲突

LiteLLM可能会优先读取环境变量中的AZURE_OPENAI_API_KEY,导致和Azure AD令牌认证冲突。在completion调用中显式指定api_key=None,强制使用令牌认证:

response = completion(
    model = "azure/<your deployment name>",
    api_base = "<api-url>",
    api_version = "<api-version>",
    azure_ad_token_provider=token_provider,
    api_key=None,  # 添加此行
    messages = [{"role": "user", "content": "good morning"}],
)

3. 升级LiteLLM到最新版本

v1.63.7版本可能存在Azure AD令牌处理的已知问题,升级到最新稳定版可修复部分认证逻辑bug:

pip install --upgrade litellm

4. 验证令牌有效性

手动调用token_provider()获取令牌,用curl测试Azure OpenAI API,确认令牌本身有效:

# 先在Python中打印令牌
print(token_provider())

# 替换占位符后执行curl测试
curl -X POST "https://your-resource-name.openai.azure.com/openai/deployments/<your-deployment-name>/chat/completions?api-version=<api-version>" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-token>" \
  -d '{"messages": [{"role": "user", "content": "good morning"}]}'

如果curl请求成功,说明令牌没问题,问题集中在LiteLLM的参数配置或版本上。

5. 尝试更换作用域(备选)

虽然你使用的https://cognitiveservices.azure.com/.default是通用认知服务作用域,但部分场景下可尝试使用OpenAI专属作用域:

token_provider = get_bearer_token_provider(DefaultAzureCredential(), "https://azure.openai.com/.default")

内容的提问来源于stack exchange,提问作者4run4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 16:06:02