距離上篇在 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 Cosmos DB,並將 FastAPI 服務運行在 GitHub Codespaces 中,還沒看過上一篇的朋友建議從以下連結開始觀看。 而在本篇文章中,將會介紹使用 Python SDK 連線 Cosmos DB,並且整合 FastAPI 進行基本的 CRUD 操作,完整程式碼歡迎參考下方 GitHub 連結。 相關連結: 【Azure Cosmos DB】使用 Python FastAPI 在 Cosmos DB 上的 CRUD 操作(上) 相關連結: https://github.com/charliewei0716/python-fastapi-azure-cosmos-db-todo-list 與 Azure Cosmos DB 建立連線 首先我們必須與 Azure Cosmos DB 帳戶建立連線,在程式碼中,我們將使用套件 dotenv 來管理連線資訊,切記絕對不要將敏感資訊直接寫在程式碼中。 透過 FastAPI 的生命週期管理機制,確保在應用啟動時順帶實例化 CosmosClient ,以留做後續程式使用這個物件,這個寫法並不是必要的,但是一個建議的做法。 再者有賴於 FastAPI 直接支援非同步寫法,在 SDK 的選擇上就能盡量使用像 azure.cosmos.aio 的非同步版本,在後面的程式碼中也可以注意 async 與 await 的出現。 這邊使用的 create_database_if_not_exists 與 create_container_if_not_exists 都是 SDK 內建的功能,算是非常好用的設計。 ToDoItem 使用 FastAPI 與 pydantic 先定義好資料模型有很多好處,除了後續可以以物件的方式來存取資料,還附帶了 API 呼叫時的自動格式驗證與生成 API 文件等功能,我們依照情境定義了如下欄位。 CRUD 完成以上後就可以進入重點的 CRUD 操作了,首先第一個 Create 操作可以直接對應到 SDK 的 create_item 方法。 而 Read All 則是使用 SDK 中的 read_all_items 方法,並透過 async for 逐一打印出。 Update 操作是 CRUD 中較...