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

相关推荐
sg_knight15 分钟前
Python 设计模式:迭代器模式——用优雅的方式遍历一切
python·设计模式·迭代器模式
阿豪只会阿巴38 分钟前
【没事学点啥】TurboBlog轻量级个人博客项目——Turbo Blog 项目学习与上线指南
开发语言·python·学习·状态模式
铁皮饭盒39 分钟前
成为AI全栈 - 第4课:Drizzle ORM SQLite Elysia 数据库实战
前端·后端
飞Link1 小时前
构筑你的数字第二大脑:Obsidian 深度解析与配置指南
开发语言·python
JaydenAI1 小时前
[Deep Agents:LangChain的Agent Harness-02]构建抽象的文件系统
python·langchain·ai编程·ai agent·deep agents·harness
2403_883261091 小时前
如何用 nodeType 与 nodeName 准确判断当前节点的物理类型
jvm·数据库·python
用户0534369380731 小时前
# LangChainRust Agent 引擎:Graph 构建到执行
后端
qq_413502021 小时前
如何利用 Block Tree 避免不必要的子组件重渲染?Vue3 编译黑科技
jvm·数据库·python
彭于晏Yan1 小时前
Spring Boot 聚合MongoDB查询
spring boot·后端·mongodb
m0_624578591 小时前
CSS定位如何实现多行文字垂直居中_通过绝对定位模拟表格
jvm·数据库·python