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

使用py-ms-cognitive调用必应搜索遇401错误,求正确API指引

Troubleshooting 401 Access Denied Error with py-ms-cognitive & Bing Image Search API in Azure

我完全懂你碰到这个401错误的崩溃感——毕竟已经试过换密钥、核对区域、新建项目这些操作了,结果还是被拒,太闹心了。咱们一步步拆解问题,大概率是服务类型匹配或者端点配置的问题:

1. 先搞清楚:你用的模块对应必应图片搜索API,不是网页搜索!

你代码里用的是PyMsCognitiveImageSearch,这个模块专门调用的是Azure里的必应图片搜索服务,而不是网页搜索API。这俩服务的密钥是不通用的——如果之前拿网页搜索的密钥来用,肯定会报401。

解决办法:

  • 登录Azure门户,找到你的认知服务资源,要是之前建的是网页搜索,就新建一个必应图片搜索的资源(搜索“必应图片搜索”就能找到)。
  • 新建完成后,在资源的“密钥和端点”页面,复制其中一个密钥,这才是你要用到的正确密钥。

2. 核对端点区域,别用默认值

py-ms-cognitive的默认端点可能和你Azure资源的区域不匹配,这也会导致权限验证失败。比如你选的是西欧区域,端点就得是https://westeurope.api.cognitive.microsoft.com/bing/v7.0/images/search,而不是全球通用的端点。

修改代码,手动指定对应区域的端点:

from py_ms_cognitive import PyMsCognitiveImageSearch
search_term = "puppies"
# 替换成你的必应图片搜索密钥和区域端点
search_service = PyMsCognitiveImageSearch('YOUR_IMAGE_SEARCH_KEY', search_term, custom_url='https://YOUR_REGION.api.cognitive.microsoft.com/bing/v7.0/images/search')
first_fifty_result = search_service.search(limit=50, format='json')

3. 别把订阅ID当成API密钥用

你提到试过用订阅ID,这是误区!Azure的订阅ID是用来管理账户资源的,不能直接用来调用认知服务API——必须用对应服务的“密钥”(在资源的“密钥和端点”里的那两个字符串)。

4. 测试API是否正常(绕开第三方包)

如果上面的步骤都试过还是不行,建议用requests库直接调用API,排除第三方包的问题:

import requests

headers = {
    'Ocp-Apim-Subscription-Key': 'YOUR_IMAGE_SEARCH_KEY',
}
params = {
    'q': 'puppies',
    'count': 50,
}
# 替换成你的区域端点
response = requests.get('https://YOUR_REGION.api.cognitive.microsoft.com/bing/v7.0/images/search', headers=headers, params=params)
print(response.status_code)
print(response.json())

如果这个请求返回200和正常的图片数据,说明问题出在py-ms-cognitive包上——可以尝试升级包到最新版本:

pip install --upgrade py-ms-cognitive

要是手动调用也返回401,那就要检查你的Azure资源是否处于活跃状态(有没有欠费),或者配额是否用完了(在资源的“使用情况和配额”页面查看)。

内容的提问来源于stack exchange,提问作者Sebastian Goslin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:52:12