通過 Azure OpenAI 服務使用 GPT-35-Turbo and GPT-4(win版)

官方文檔

Azure OpenAI 是微軟提供的一項云服務,旨在將 OpenAI 的先進人工智能模型與 Azure 的基礎設施和服務相結合。通過 Azure OpenAI,開發者和企業可以訪問 OpenAI 的各種模型,如 GPT-3、Codex 和 DALL-E 等,并將其集成到自己的應用程序和服務中。

調用方式

  1. API 調用:用戶可以通過HTTP 請求來調用 Azure OpenAI 提供的 REST API。請求中需要包含 API 密鑰進行身份驗證,并指定所需的模型和參數。例如,發送 POST 請求到特定的 API 端點,附帶請求體中的輸入數據和請求頭中的 API 密鑰。

    import requestsurl = "https://<your-resource-name>.openai.azure.com/openai/deployments/<deployment-id>/completions?api-version=2023-07-01-preview"
    headers = {"Content-Type": "application/json","api-key": "<your-api-key>"
    }
    data = {"prompt": "Hello, world!","max_tokens": 5
    }response = requests.post(url, headers=headers, json=data)
    print(response.json())
    
  2. Azure SDK:微軟提供了多種編程語言的 SDK(軟件開發工具包),如 Python、C# 等,使得開發者能夠更簡便地與 Azure 服務進行交互。SDK 會封裝底層的 API 調用,使得開發者可以通過更高層次的抽象和簡化的代碼來使用 Azure OpenAI 服務。

    以 Python SDK 為例:

    from azure.ai.openai import OpenAIClient
    from azure.identity import DefaultAzureCredential# 創建 OpenAI 客戶端
    credential = DefaultAzureCredential()
    client = OpenAIClient(endpoint="https://<your-resource-name>.openai.azure.com/", credential=credential)# 調用模型生成文本
    response = client.completions.create(deployment_id="<deployment-id>",prompt="Hello, world!",max_tokens=5
    )print(response.choices[0].text)
    

Key 與 SDK 的區別

  1. API 密鑰(Key)

    • 使用方式:通常直接通過 HTTP 請求的請求頭或 URL 參數來傳遞。
    • 管理:需要在 Azure 門戶中生成和管理 API 密鑰。
    • 靈活性:可以在不依賴特定編程語言或 SDK 的情況下使用,適合任何可以發出 HTTP 請求的環境。
  2. SDK: 需要endpoint和api-key

    • 使用方式:通過調用封裝在 SDK 中的函數或方法來進行 API 調用。

    • 集成:通常與 Azure 生態系統中的其他服務更緊密集成,提供更一致的開發體驗。

總的來說,API 密鑰適合需要直接和靈活訪問 API 的場景,而 SDK 適合需要簡化開發流程和更深度集成的場景。
在pycharm的終端terminal運行

pip install openai
$env:AZURE_OPENAI_API_KEY = 'REPLACE_WITH_YOUR_KEY_VALUE_HERE'
$env:AZURE_OPENAI_ENDPOINT = 'REPLACE_WITH_YOUR_ENDPOINT_HERE'
# [System.Environment]::SetEnvironmentVariable('AZURE_OPENAI_API_KEY', 'REPLACE_WITH_YOUR_KEY_VALUE_HERE', 'User')
# [System.Environment]::SetEnvironmentVariable('AZURE_OPENAI_ENDPOINT', 'REPLACE_WITH_YOUR_ENDPOINT_HERE', 'User')

創建一個新的.py運行即可測試

import os
from openai import AzureOpenAIclient = AzureOpenAI(azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), api_key=os.getenv("AZURE_OPENAI_API_KEY"),  api_version="2024-02-01"
)response = client.chat.completions.create(model="gpt-35-turbo", # model = "deployment_name".messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},{"role": "user", "content": "Do other Azure AI services support this too?"}]
)print(response.choices[0].message.content)

運行即可python test.py。如果要換其他模型比如GPT-4o(可用于標準和全球標準模型部署。) 需要在該模型可用的受支持標準或全球標準區域中創建或使用現有資源。

創建資源后,可以部署 GPT-4o 模型。 如果要執行編程部署,則“模型”名稱為 gpt-4o,“版本”名稱為 2024-05-13
報錯沒有找到環境變量,在終端查看:Get-ChildItem Env: 發現沒有設置成功

命令行:與操作系統交互的文本接口。
Bash:主要用于 Unix 系統,命令行解釋器的一種。
PowerShell:起源于 Windows,命令行解釋器的一種。
PyCharm 中的終端:可配置為多種 shell,適應不同開發需求,在win里面就用PowerShell,在linux里面就用Bash。

正確的添加,(開頭代碼已修改為正確

$env:AZURE_OPENAI_API_KEY = 'REPLACE_WITH_YOUR_KEY_VALUE_HERE'
$env:AZURE_OPENAI_ENDPOINT = 'REPLACE_WITH_YOUR_ENDPOINT_HERE'

原因,一個立即生效,一個有作用時間和范圍

在 PowerShell 中,[System.Environment]::SetEnvironmentVariable
$env: 都是設置環境變量的方法,但它們的作用范圍和生效時間有所不同,這就是為什么前者不行而后者可以的原因。

[System.Environment]::SetEnvironmentVariable 的行為

[System.Environment]::SetEnvironmentVariable
方法可以用于設置環境變量,并且可以指定作用范圍(當前進程、當前用戶、所有用戶)。使用此方法設置的環境變量可能需要重新啟動終端或進程才能生效,尤其是在
UserMachine 作用范圍時。

# 設置當前用戶范圍的環境變量 [System.Environment]::SetEnvironmentVariable('AZURE_OPENAI_API_KEY',
'REPLACE_WITH_YOUR_KEY_VALUE_HERE', 'User')
[System.Environment]::SetEnvironmentVariable('AZURE_OPENAI_ENDPOINT',
'REPLACE_WITH_YOUR_ENDPOINT_HERE', 'User') ```此方法在 PyCharm 終端中可能不會立即生效,因為 PyCharm
終端是一個已經啟動的進程,設置的用戶或系統范圍的環境變量不會影響當前已經運行的進程。### `$env:` 的行為`$env:` 是 PowerShell 中設置環境變量的另一種方式,這種方式直接在當前 PowerShell
會話中設置環境變量,并且立即生效。這就是為什么在 PyCharm 終端中使用 `$env:` 能夠立即看到環境變量的變化。```powershell
# 設置當前 PowerShell 會話的環境變量 $env:AZURE_OPENAI_API_KEY = 'REPLACE_WITH_YOUR_KEY_VALUE_HERE' $env:AZURE_OPENAI_ENDPOINT =
'REPLACE_WITH_YOUR_ENDPOINT_HERE' ```### 區別總結1. **作用范圍**- `[System.Environment]::SetEnvironmentVariable` 可以設置當前進程、當前用戶或所有用戶的環境變量。- `$env:` 僅在當前 PowerShell 會話中設置環境變量。2. **生效時間**- `[System.Environment]::SetEnvironmentVariable` 設置的環境變量可能需要重新啟動終端或進程才能生效。- `$env:` 設置的環境變量在當前 PowerShell 會話中立即生效。3. **適用場景**- `[System.Environment]::SetEnvironmentVariable` 適用于需要在多個會話或系統范圍內生效的環境變量設置。- `$env:` 適用于需要在當前 PowerShell 會話中臨時使用的環境變量設置。### 為什么前者不行后者可以在 PyCharm 終端中,使用 `[System.Environment]::SetEnvironmentVariable`
設置用戶范圍的環境變量不會立即在當前終端會話中生效,因為當前終端是一個已經運行的進程,新的環境變量設置不會影響到它。而使用 `$env:`
則會立即在當前 PowerShell 會話中生效,因此可以立即看到和使用新設置的環境變量。### 建議的使用方法如果您需要在當前 PyCharm 終端會話中設置環境變量,請使用 `$env:` 方式:```powershell $env:AZURE_OPENAI_API_KEY =
'REPLACE_WITH_YOUR_KEY_VALUE_HERE' $env:AZURE_OPENAI_ENDPOINT =
'REPLACE_WITH_YOUR_ENDPOINT_HERE' ```如果您需要在多個會話或系統范圍內生效,請使用 `[System.Environment]::SetEnvironmentVariable`
并重新啟動終端或系統以確保設置生效:```powershell
[System.Environment]::SetEnvironmentVariable('AZURE_OPENAI_API_KEY',
'REPLACE_WITH_YOUR_KEY_VALUE_HERE', 'User')
[System.Environment]::SetEnvironmentVariable('AZURE_OPENAI_ENDPOINT',
'REPLACE_WITH_YOUR_ENDPOINT_HERE', 'User') ```這樣可以確保環境變量在不同的使用場景中正確設置和生效。

response內容:

{"id": "chatcmpl-9k4JY8EuQR3TLfai4ze8TMNylKTB0","choices": [{"finish_reason": "stop","index": 0,"logprobs": null,"message": {"content": "Yes, several other Azure AI services also support customer managed keys (CMK). This capability allows you to have greater control over the encryption of your data by using your own encryption keys stored in Azure Key Vault. Some of the Azure AI services that support CMK include:\n\n1. **Azure Cognitive Services**:\n   - Text Analytics\n   - Computer Vision\n   - Translator\n   - Speech Services\n\n2. **Azure Machine Learning**:\n   - Offers encryption of data at rest using customer managed keys.\n\n3. **Azure Synapse Analytics**:\n   - Provides support for customer managed keys for data encryption.\n\nBy using customer managed keys, you can satisfy compliance requirements and have more control over key rotation and revocation. For specific implementation details and supported features, it's always a good idea to check the latest documentation for each service, as Microsoft regularly updates and expands their support for security features.","role": "assistant","function_call": null,"tool_calls": null},"content_filter_results": {"hate": {"filtered": false, "severity": "safe"},"self_harm": {"filtered": false, "severity": "safe"},"sexual": {"filtered": false, "severity": "safe"},"violence": {"filtered": false, "severity": "safe"}}}],"created": 1720766700,"model": "gpt-4o-2024-05-13","object": "chat.completion","service_tier": null,"system_fingerprint": "fp_abc28019ad","usage": {"completion_tokens": 179,"prompt_tokens": 55,"total_tokens": 234},"prompt_filter_results": [{"prompt_index": 0,"content_filter_results": {"hate": {"filtered": false, "severity": "safe"},"self_harm": {"filtered": false, "severity": "safe"},"sexual": {"filtered": false, "severity": "safe"},"violence": {"filtered": false, "severity": "safe"}}}]
}

可以看到response里面只有一個choice 為choice[0],所以是response.choices[0].message.content。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44460.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44460.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44460.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

input上傳--upload

1.HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>上傳文件</title><link rel"…

《C++并發編程實戰》筆記(一、二)

一、簡介 抽象損失&#xff1a;對于實現某個功能時&#xff0c;可以使用高級工具&#xff0c;也可以直接使用底層工具。這兩種方式運行的開銷差異稱為抽象損失。 二、線程管控 2.1 線程的基本控制 1. 創建線程 線程相關的管理函數和類在頭文件&#xff1a; #include <…

數據結構——線性表(C語言實現)

寫在前面&#xff1a; 在前面C語言的結構體學習中&#xff0c;我提及了鏈表的操作&#xff0c; 學習數據結構我認為還是需要對C語言的數組、函數、指針、結構體有一定的了解&#xff0c;不然對于結構體的代碼可能很難理解&#xff0c;特別是一些書籍上面用的還是偽代碼&#xf…

OpenGL筆記一之基礎窗體搭建以及事件響應

OpenGL筆記一之基礎窗體搭建以及事件響應 總結自bilibili趙新政老師的教程 code review! 文章目錄 OpenGL筆記一之基礎窗體搭建以及事件響應1.運行2.目錄結構3.main.cpp4.CMakeList.txt 1.運行 2.目錄結構 01_GLFW_WINDOW/ ├── CMakeLists.txt ├── glad.c ├── main…

Linux基于centos7指令初學3

date指令 作用&#xff1a; date指令可以查看時間 這個指令可以進行格式化 格式&#xff1a;date %想要的內容 Y&#xff1a;年份 m&#xff1a;月份 d&#xff1a;日 H&#xff1a;時 M&#xff1a;分 S&#xff1a;秒 時間分界線可以由…

GIT相關操作,推送本地分支到遠程倉庫流程記錄學習

git流程 切換到源文件夾&#xff1a;cd 源文件夾克隆遠程倉庫&#xff1a;git clone [ssh]進入項目文件夾&#xff1a;cd .\project\查看本地分支&#xff1a;git branch獲取遠程倉庫更新&#xff0c;使遠程同步&#xff1a;git fetch查看所有分支&#xff08;包括遠程分支&am…

OJ-0712

示例1&#xff1a; input 8 123 124 125 121 119 122 126 123 output 1 2 6 5 5 6 0 0示例2&#xff1a; input 2 95 100 output 1 0示例3&#xff1a; input 2 100 95 output 0 1package com.wsdcode.od;import java.util.Scanner;public class Main {public static void m…

LabVIEW比例壓力控制閥自動測試系統

開發了一套基于LabVIEW編程和PLC控制的比例控制閥自動測試系統。該系統能夠實現共軌管穩定的超高壓供給&#xff0c;自動完成比例壓力控制閥的耐久測試、流量滯環測試及壓力-流量測試。該系統操作簡便&#xff0c;具有高精度和高可靠性&#xff0c;完全滿足企業對自動化測試的需…

安裝jenkins最新版本初始化配置及使用JDK1.8構建項目詳細講解

導讀 1.安裝1.1.相關網址1.2.準備環境1.3.下載安裝 2. 配置jenkins2.1.安裝插件2.2.配置全局工具2.3.系統配置 3. 使用3.1.配置job3.2.構建 提示&#xff1a;如果只想看如何使用jdk1.8構建項目&#xff0c;直接看3.1即可。 1.安裝 1.1.相關網址 Jenkins官網&#xff1a;https…

RabbitMq如何保證消息的可靠性和穩定性

RabbitMq如何保證消息的可靠性和穩定性 rabbitMq不會百分之百讓我們的消息安全被消費&#xff0c;但是rabbitMq提供了一些機制來保證我們的消息可以被安全的消費。 消息確認 消息者在成功處理消息后可以發送確認&#xff08;ACK&#xff09;給rabbitMq&#xff0c;通知消息已…

Hadoop-25 Sqoop遷移 增量數據導入 CDC 變化數據捕獲 差量同步數據 觸發器 快照 日志

章節內容 上節我們完成了如下的內容&#xff1a; Sqoop MySQL遷移到HiveSqoop Hive遷移數據到MySQL編寫腳本進行數據導入導出測試 背景介紹 這里是三臺公網云服務器&#xff0c;每臺 2C4G&#xff0c;搭建一個Hadoop的學習環境&#xff0c;供我學習。 之前已經在 VM 虛擬機…

計算機的錯誤計算(二十九)

摘要 &#xff08;1&#xff09;討論近似值的錯誤數字個數。有時&#xff0c;遇到數字9或0, 不太好確認近似值的錯誤數字個數。&#xff08;2&#xff09;并進一步解釋確認計算機的錯誤計算&#xff08;二十八&#xff09;中一個函數值的錯誤數字個數。 理論上&#xff0c;我…

py2neo常用語句

1.連接數據庫 Neo4j服務器默認的端口號就是7474,所以本地的主機就是"http://localhost:7474" 。 默認的用戶名密碼都是neo4j&#xff0c; # 連接數據庫&#xff0c;輸入個人配置 graph Graph("http://localhost:7474//browser/", auth("neo4j"…

百日筑基第十九天-一頭扎進消息隊列2

百日筑基第十九天-一頭扎進消息隊列2 消息隊列的通訊協議 目前業界的通信協議可以分為公有協議和私有協議兩種。公有協議指公開的受到認可的具有規 范的協議&#xff0c;比如 JMS、HTTP、STOMP 等。私有協議是指根據自身的功能和需求設計的協 議&#xff0c;一般不具備通用性&…

數學建模·熵權法

熵權法 一種計算評價指標之間權重的方法。熵權法是一種客觀的方法&#xff0c;沒有主觀性&#xff0c;比較可靠。 具體定義 熵權法的核心在于計算信息熵&#xff0c;信息熵反映了一個信息的紊亂程度&#xff0c;體現了信息的可靠性 具體步驟 Step1正向化處理 將所以評價指標轉…

智能家居裝修怎么布線?智能家居網絡與開關插座布置

打造全屋智能家居。計劃的智能家居方案以米家系列為主&#xff0c;智能家居聯網方案以無線為主。裝修前為了裝備智能家居做了很多準備工作&#xff0c;本文深圳僑杰智能分享一個智能家居裝修和布線方面的心得與實戰知識。希望能對大家的裝修有所幫助。 ?1.關于網絡 如果房子比…

HTML基本標簽(二)

HTML基本標簽&#xff08;二&#xff09; 表格標簽 table媒體元素audio 音頻vido 視頻 form 表單元素 表格標簽 table <!-- caption 代表表格標題相關屬性border 邊框cellpadding 設置單元格內填充cellspacing 設置單元格間空隙width 設置表格寬度&#xff0c;默認是內容撐…

Python-數據爬取(爬蟲)

~~~理性爬取~~~ 杜絕從入門到入獄 1.簡要描述一下Python爬蟲的工作原理&#xff0c;并介紹幾個常用的Python爬蟲庫。 Python爬蟲的工作原理 發送請求&#xff1a;爬蟲向目標網站發送HTTP請求&#xff0c;通常使用GET請求來獲取網頁內容。解析響應&#xff1a;接收并解析HTTP響…

結合實體類型信息1——基于本體的知識圖譜補全深度學習方法

1 引言 1.1 問題 目前KGC和KGE提案的兩個主要缺點是:(1)它們沒有利用本體信息;(二)對訓練時未見的事實和新鮮事物不能預測的。 1.2 解決方案 一種新的知識圖嵌入初始化方法。 1.3 結合的信息 知識庫中的實體向量表示&#xff0b;編碼后的本體信息——>增強 KGC 2基…

基于AT89C51單片機超聲波水位液位控制系統設計(含文檔、源碼與proteus仿真,以及系統詳細介紹)

本篇文章論述的是基于AT89C51單片機的1616點陣LED顯示器字符滾動顯示設計的詳情介紹&#xff0c;如果對您有幫助的話&#xff0c;還請關注一下哦&#xff0c;如果有資源方面的需要可以聯系我。 目錄 設計任務與要求 原理圖 仿真圖 代碼 系統論文 資源下載 設計任務與要求…