跳到主要內容

【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 這麼簡單,先前在回應遇到...

【Azure APIM】在呼叫 Azure OpenAI 端點時使用 Managed Identity

在前一篇文章中我們使用了 APIM 來對多個 AOAI API 端點進行負載均衡,其中當然包含了多組 API 端點與 API 金鑰,也為了快速展示架構,我們非常直接明瞭的將金鑰以明碼的方式留在 APIM 的 Policy 中,並不是一個好的示範。

對於這個問題比較簡單的作法是使用 APIM 的俱名值來存放金鑰,至少不是直接寫在 Policy 裡,嚴謹一點就是選擇 Key Vault 來做金鑰管理,但兩種方式還是都需要複製貼上,感覺就不是這麼漂亮。所以在這篇文章中將使用沒有過期問題也不用看到密碼的 Managed Identity,並且重新修改 Policy 來讓 APIM 使用 Managed Identity 呼叫 AOAI API 端點。

系列文章

在 APIM 中啟用 Managed Identity

這步驟在 Azure Portal 中非常簡單,找到 APIM 下的受控識別,選擇啟用後儲存就完成了。

為 Managed Identity 進行授權

回想一下目標,我們希望使用 Managed Identity 的身分在 APIM 內呼叫 AOAI API 端點,而為了進行這個動作,Managed Identity 需要在 Azure OpenAI 中具備 Cognitive Services OpenAI User 的權限。

這步驟也非常簡單,都是在 Portal 上操作就可以了,只是別忘記在 APIM 內有用到的 Azure OpenAI 都需要做一次。

修改 APIM Policy

接下就是修改 APIM Policy 來使用已經具備 Azure OpenAI 權限的 Managed Identity,我們直接使用 APIM 內建的 authentication-managed-identity 取得 token,用法如下:

修改後的完整 Policy 如下:

測試

如果直接用 Postman 來打 API 肯定是成功的,但這樣就感覺不出與原本的差異了,所以這次改成由 APIM 的介面來測試。

一樣使用 Chat Completions API 測試,填妥上方參數後請求的 Body 使用以下範例,完成後點擊畫面下方的「Trace」。

觀察以下部分呼叫紀錄:


APIM 會先去取得 Managed Identity 的 Token,並在呼叫 AOAI API 端點時自己將 Token 帶上,測試成功!

結論

延續前一篇文章,我們修改了 Policy 讓 APIM 使用 Managed Identity 的身分,藉由 Portal 建立 Managed Identity 與進行授權的操作也非常簡單,小小幾個動作讓我們的架構更安全外,看起來也更高級了😎

留言