咨询:Python应用能否使用托管身份调用Azure Phi3模型
使用托管身份调用Azure Phi3模型的可行性与实现步骤
完全可以用托管身份替代API密钥调用Azure Phi3模型,这是符合Azure最佳实践的安全方案,能规避密钥泄露、手动轮换的麻烦。
实现步骤:
给托管身份分配认知服务用户角色
打开Azure门户,找到你的Phi3所属的认知服务资源,进入「访问控制(IAM)」页面,点击「添加角色分配」,选择「认知服务用户」角色,将你的托管身份(比如应用服务系统分配托管身份、虚拟机托管身份等)添加为角色成员。Python应用中用托管身份获取令牌并调用模型
不需要再从密钥保管库读取API密钥,直接借助Azure Identity库获取短期有效令牌,示例代码如下:from azure.identity import DefaultAzureCredential import requests # 初始化凭据,自动适配托管身份环境(本地测试会用az login的账户) credential = DefaultAzureCredential() # 获取认知服务的访问令牌 token = credential.get_token("https://cognitiveservices.azure.com/.default") # 调用Phi3模型的部署终结点 phi3_endpoint = "你的Phi3模型部署终结点" headers = { "Authorization": f"Bearer {token.token}", "Content-Type": "application/json" } # 构造摘要请求体 payload = { "messages": [ {"role": "user", "content": "请对以下文档进行摘要:这里替换为你的文档内容"} ], "max_tokens": 512, "temperature": 0.7 } response = requests.post(phi3_endpoint, headers=headers, json=payload) response.raise_for_status() print("摘要结果:", response.json()["choices"][0]["message"]["content"])环境与权限验证
- 确保托管身份所在的服务(如应用服务)已经启用了托管身份功能
- 本地测试时,用
az login登录Azure账户,且该账户需具备目标认知服务资源的「认知服务用户」权限
注意事项:
- 认知服务的令牌请求资源固定为
https://cognitiveservices.azure.com/.default,不要修改 - 优先使用系统分配托管身份,避免手动管理身份的额外开销
- 令牌有效期较短,
DefaultAzureCredential会自动处理令牌刷新,无需手动干预
内容的提问来源于stack exchange,提问作者Ashutosh
相关产品推荐
相关产品推荐

