跳到主要內容

發表文章

目前顯示的是有「Azure AD」標籤的文章

【Azure OpenAI】o1 模型與 2024-09-01-preview API

距離上篇在 Early Access Playground 試用 o1 模型後又過了兩週,今天終於等到 API 開放使用啦!本篇將紀錄如何使用 Python SDK 存取 o1 模型。 系列文章 【Azure OpenAI】快速試用 o1 模型 模型佈署 在先前開放的 Early Access Playground 中使用 o1 是不需要另外佈署模型的,不過回到使用 API 來存取 o1 模型,就需要像之前的模型一樣先進行佈署才能使用,相信大家都很熟悉了。 使用 Python SDK 一樣使用熟悉的 openai 套件: 2024-09-01-preview 初始化的方式與先前模型都一樣,需要注意的是 o1 模型目前只能使用最新的 API 版本 2024-09-01-preview 來訪問。 Chat Completions 將 model 填入 o1-preview ,或是你的模型佈署名稱, messages 也一樣是歷史對話堆疊的 List。 回應如下: 查看 Token 使用量 內建 Chain of Thought 的 o1 比起過往的模型會消耗較多的 Token,因此我們特別把 Token 使用量拉出來看。 回應如下: 其中 prompt_tokens 、 completion_tokens 、 total_tokens 在先前的 API 就已經存在了,分別代表Token 的 Input、Output 與總使用量,而在新的 completion_tokens_details 中可以看到  reasoning_tokens 使用了 320 個 Tokens,居然佔了總輸出 Token 的 80% 以上! 控制 Token 成本 已往我們可以使用  max_tokens 參數來控制 Token 的用量,但在 o1 模型中棄用了 max_tokens ,取而代之的是使用  max_completion_tokens 參數,來看看這段程式碼: 回應如下: 沒東西?那再看一次 Token 量。 回應如下: Token 居然是有被使用的! 這表示 max_completion_tokens 並不像過往使用  max_tokens 這麼簡單,先前在回應遇到...

【Microsoft Entra ID】使用 Service Principal 呼叫 Azure API 的驗證流程

在 Azure 中提供了各式各樣的 API 讓我們可以在不同的場景中隨意組合使用,對於服務的 API 一般會在建立完成時分配一個專用的 Key,雖然這可能不是最佳作法,但直接使用 Key 來呼叫 API 的作法非常方便直觀。然而其他非服務類或管理層面的 API 就會遵循 OAuth 2.0 標準來設計,這對於初次使用且不太熟悉 OAuth 2.0 流程的人來說就不是很好上手。 這篇文章就來記錄一下如何在 Service Principal 中使用 OAuth 2.0 四個基礎流程之一的 Client Credentials 來呼叫 Azure API,並且盡量跳過那些繁雜的 OAuth 2.0 理論。 建立 Service Principal 首先建立要用來呼叫 API 的 Service Principal,使用以下 Azure CLI 指令: 指令在建立時會順便指派權限給 Service Principal,以這邊為例,我們將 Service Principal 指派在資源群組範圍 "/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/charlie-test" 上的 Reader 。 建立成功後會得到以下回應: 其中 appId 、 password 與 tenant 會在下一步中使用,記得要先記錄下來。 另外在 Portal 中的 Microsoft Entra ID 也可以搜尋得到建立完成的 Service Principal。 取得 Access Token 在上一步中我們得到了類似密碼或 Key 的 password ,但這並不能直接作為呼叫 API 的驗證,我們必須要先用這個 password 來換取 Access Token。 至於為什麼需要多這一步驟,就與最一開始提到 OAuth 2.0 的 Client Credentials 有關,我們將理論的部分留給有興趣的讀者,現在我們只要把他當成固定流程就好。 取得 Access Token 的方式是一個 HTTP Post,以下我們選擇可以直接在 Azure Cloud Shell 中執行的 curl 指令作為範例。 其中 <TENANT-ID> 、 <APP-ID> 與  ...

【Azure DevOps】如何限制成員創建 DevOps 組織

近期因一些資安因素,對 DevOps 環境整體視察了一輪,但不查還好,一查便發現居然有上百個 DevOps 組織與 Microsoft  Entra ID(AAD)建立了連結,雖說大量的 DevOps 組織對於資安並沒有立即性的危害,但還是難保有心人士藉此做為後門,而且這也一定層度上造成了管理的負擔。 凡事從源頭開始做起,如何限制成員創建新的 DevOps 組織成了首要目標。 組織設定 先進入「組織設定」,點擊查看左方的「Microsoft Entra」,這邊可以看到 DevOps 組織與 Entra ID 建立連結的設定,但目前還找不到跟「限制成員創建組織」有關的敘述。 進入「組織設定」查看「Microsoft Entra 」 主因是我們目前還沒有足夠的權限,而且就算是在 DevOps 中權限最大的 Organization Owner,都不一定具有這個權限,因為這項權限是由 Microsoft Entra ID(AAD)賦予的,這也是我第一時間沒找到的原因。 Azure Portal Microsoft Entra ID 進到 Azure Portal 的 Microsoft Entra ID 頁面,進到「角色和系統管理員 」中。 Microsoft Entra ID「角色和系統管理員」 向下滾動頁面找到 「 Azure DevOps 系統管理員 」角色, 這正是我們需要的,將需要的成員添加到角色中。 回到組織設定 完成成員添加後稍待幾秒,回到剛剛的組織設定中,就會看到如下畫面: 多了一些設定選項 具備「Azure DevOps 系統管理員」角色權限的人,在這個頁面中就會看到其他額外的設定選項。 其中的「Restrict organization creation」就是我們希望達成的「限制成員創建組織」目標,勾選起來後,下方也會有可以設定放行白名單的地方,可以同時配合使用。 總結 會有這篇文章誕生主要是因為這個問題在第一時間開出的 Support Case 中,Support 給出的回答竟然是沒辦法限制成員創建組織,當時保持了懷疑的態度。後來花了點時間從論壇上的討論找到了這個設定,趕緊文章記錄下來!😎

【Microsoft Entra ID】幫 Microsoft Entra ID (Azure AD) 中的 Service Principal 設定一個超長期限的 Secret

在一些自動化的場景中,我們很常需要使用 AP 帳號來做身份驗證,在管理層面上只需要對 AP 帳號開設必要的權限,可以說好處多多。 在 Azure 中 AP 帳號的概念被稱為服務主體 Service Principal,其中在身份驗證的過程中,有點類似個人帳號在登入時需要輸入自己的密碼,Service Principal 則需要一組 Secret。 建立 Secret 最簡單的方式是透過 Azure Portal,跟著 UI 點幾下分分鐘就能建好,但由這種方式建立的 Secret 會有一個最長 2 年的期限,對於一些架好就不想再管的自動化場景來說非常不友善。 這邊介紹一個 Azure PowerShell 指令,創建一組幾乎不會過期,超長期限的 Secret,來解決這個頭疼的問題。