OpenAI remove key access while using AAD authentication

题意:"OpenAI 在使用 AAD 认证时移除了密钥访问权限"

问题背景:

I am calling Azure OpenAI API in my python code. To set it up, we need to provide a few parameters, one of which is openai.api_key. There are 2 options to get this value -

"我在 Python 代码中调用 Azure OpenAI API。要进行设置,我们需要提供一些参数,其中之一是 `openai.api_key`。获取此值有两种选择:"

  1. Static key
  2. AAD Token

I am using AAD token (refer this - https://github.com/openai/openai-python#microsoft-azure-active-directory-authentication) but still I can access it using the static key. I want to remove the static key access.

"我正在使用 AAD 令牌(参考这里 - https://github.com/openai/openai-python#microsoft-azure-active-directory-authentication),但我仍然可以使用静态密钥进行访问。我想移除静态密钥的访问权限。"

Is there any way to disable the static key and only authenticate using AAD authentication?

"有没有办法禁用静态密钥,并仅使用 AAD 认证进行身份验证?"

问题解决:

Is there any way to disable the static key and only authenticate using AAD authentication?

If you need to authenticate using only AAD authentication without using api.key you can use the below code with request method using Python.

"如果你需要仅使用 AAD 认证而不使用 `api.key` 进行身份验证,你可以使用以下代码,通过 Python 中的 `request` 方法实现。"

First, create an application and assign Cognitive Services User role to your application.

"首先,创建一个应用程序并为该应用程序分配 `Cognitive Services User` 角色。"

Code: 代码

python 复制代码
import requests
import json


tenantid="xxxxx"
clientid="xxxxx"
clientsecret="xxxxxx"

auth_url = f'https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token'
data = {
    'grant_type': 'client_credentials',
    'client_id': clientid,
    'client_secret': clientsecret,
    'scope': 'https://cognitiveservices.azure.com/.default'
}
response = requests.post(auth_url, data=data).json()
access_token=response['access_token']

url="https://YOUR_RESOURCE_NAME.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_NAME/completions?api-version=2023-05-15"

h1 = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type":"application/json"
}

body={
    "prompt":"MS Dhoni is greatest captain",
    "max_tokens": 100
}
response = requests.post(url,headers=h1,data=json.dumps(body))
s=json.loads(response.text)
d=json.dumps(s,indent=3)
print(d)

Output: 输出

python 复制代码
 {
   "id": "cmpl-880wqMQxxxxxxxPl",
   "object": "text_completion",
   "created": 1696xxxx0,
   "model": "text-davinci-002",
   "choices": [
      {
         "text": " India has had, he is motivation: Ravichandran AshwinR Ashwin tweeted saying MS Dhoni has given all he had to India cricket for over 15 years and has been a motivation for everybody. Michael holding reveals his best captain story and it involves Kapil and Viv. The Indians were taken by surprise and after the initial shock it took off from there.New Zealand lost by 15 runs. It is a catch that has a contenders for the most iconic cricketing pictures.\n\nIndia",
         "index": 0,
         "finish_reason": "length",
         "logprobs": null
      }
   ],
   "usage": {
      "completion_tokens": 100,
      "prompt_tokens": 6,
      "total_tokens": 106
   }
}

Reference: 引用

How to configure Azure OpenAI Service with managed identities - Azure OpenAI | Microsoft Learn

相关推荐
幽兰的天空30 分钟前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
网易独家音乐人Mike Zhou4 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
安静读书4 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
小二·6 小时前
java基础面试题笔记(基础篇)
java·笔记·python
qq_17448285756 小时前
springboot基于微信小程序的旧衣回收系统的设计与实现
spring boot·后端·微信小程序
小喵要摸鱼7 小时前
Python 神经网络项目常用语法
python
锅包肉的九珍7 小时前
Scala的Array数组
开发语言·后端·scala
心仪悦悦7 小时前
Scala的Array(2)
开发语言·后端·scala
2401_882727578 小时前
BY组态-低代码web可视化组件
前端·后端·物联网·低代码·数学建模·前端框架
心仪悦悦8 小时前
Scala中的集合复习(1)
开发语言·后端·scala