共用方式為


如何搭配 Azure Machine Learning 使用 Phi-3 系列聊天模型

在本文中,您將瞭解 Phi-3 系列聊天模型,以及如何使用這些模型。 Phi-3 系列的小型語言模型 (SLM) 是一組經指令微調的生成式文字模型。

重要

此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議用於處理生產工作負載。 可能不支援特定功能,或可能已經限制功能。

如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

Phi-3 系列聊天模型

Phi-3 系列聊天模型包含下列模型:

Phi-3.5 模型是最先進的小型開源模型。 這些模型使用 Phi-3 資料集進行訓練,其中包含綜合資料和已篩選、公開可用的網站資料,並著重於高品質和密集推理的屬性。

Phi-3.5 擁有 38 億個參數,且為使用與 Phi-3 Mini 相同權杖化工具的密集解碼專用轉換器模型。

Phi-3.5 MoE (mixture-of-expert) 在使用 2 位專家時,使用 16x3.8B 參數搭配 6.6B 作用中的參數。 模型是僅專家解碼器的轉換器模型之混合,使用詞彙量為 32,064 的權杖化工具。

模型歷經嚴格的產品功能加強流程,納入了受監督的微調、近端原則最佳化,以及直接喜好設定最佳化,以確保精確的指令遵循和強固的安全措施。 在以測試常識、語言理解、數學、程式碼、長內容和邏輯推理的進行基準評估時,在低於 130 億個參數的模型中,Phi-3.5 模型展現了強大且極為先進的效能。

Phi-3.5 模型提供多種下列變體,其內容長度 (以詞元為單位) 可達 128K。

有下列模型可用:

  • Phi-3.5-Mini-Instruct
  • [Phi-3.5-MoE-Instruct]

必要條件

若要搭配 Azure Machine Learning 使用 Phi-3 系列聊天模型,則必須符合下列必要條件:

模型部署

部署至無伺服器 API

您可以將 Phi-3 系列聊天模型部署至無伺服器 API 端點,並採用隨用隨付計費方式。 這種部署可讓您以 API 的形式取用模型,而不必在您的訂用帳戶上裝載模型,同時讓組織保持所需的企業安全性和合規性。

部署至無伺服器 API 端點不需要您訂用帳戶的配額。 如果您的模型尚未部署,請使用 Azure Machine Learning 工作室、適用於 Python 的 Azure Machine Learning SDK、Azure CLI 或 ARM 範本來將模型部署為無伺服器 API

部署至自我裝載的受控計算

Phi-3 系列聊天模型可以部署至我們自我裝載的受控推斷解決方案,供您自訂和控制模型提供方式的所有詳細資料。

若要部署至自我裝載的受控計算,您的訂用帳戶必須具有足夠的配額。 如果您沒有足夠的可用配額,您可以透過選取 [我想要使用共用配額且我了解此端點將會在 168 小時後刪除] 選項,來使用我們的臨時配額存取。

[將模型部署至受控計算]

已安裝推斷套件

您可以透過使用 azure-ai-inference 套件搭配 Python,從此模型取用預測。 若要安裝此套件,您需要下列先決條件:

  • 已安裝 Python 3.8 或更新版本,包括 pip。
  • 端點 URL。 若要建構用戶端程式庫,您必須傳遞端點 URL。 端點 URL 具有 https://your-host-name.your-azure-region.inference.ai.azure.com 的形式,其中 your-host-name 是您唯一的模型部署主機名稱,且 your-azure-region 是模型所部署的 Azure 區域 (例如 eastus2)。
  • 視您的模型部署和驗證喜好設定而定,您需要金鑰來針對服務進行驗證,或是 Microsoft Entra ID 認證。 金鑰是 32 個字元的字串。

具備這些先決條件之後,請使用下列命令安裝 Azure AI 推斷套件:

pip install azure-ai-inference

深入了解 [Azure AI 推斷套件和參考]

使用聊天完成

在本節中,您會使用 [Azure AI 模型推斷 API] 搭配聊天完成模型來用於聊天。

提示

透過 Azure AI 模型推斷 API,您能夠與部署於 Azure AI Studio,且具有相同程式碼和結構的大多數模型進行對話,包括 Phi-3 系列聊天模型。

建立用戶端以取用模型

首先,建立用戶端以取用模型。 下列程式碼會使用儲存在環境變數中的端點 URL 和金鑰。

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

client = ChatCompletionsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)

當您將模型部署至具有 Microsoft Entra ID 支援的自我裝載線上端點時,您可以使用下列程式碼片段來建立用戶端。

import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential

client = ChatCompletionsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=DefaultAzureCredential(),
)

注意

目前,無伺服器 API 端點不支援使用 Microsoft Entra ID 進行驗證。

取得模型的功能

/info 路由會傳回部署至端點之模型的相關資訊。 透過呼叫下列方法,以傳回模型的資訊:

model_info = client.get_model_info()

回應如下:

print("Model name:", model_info.model_name)
print("Model type:", model_info.model_type)
print("Model provider name:", model_info.model_provider_name)
Model name: Phi-3.5-Mini-Instruct
Model type: chat-completions
Model provider name: Microsoft

建立聊天完成要求

下列範例示範如何針對模型建立基本聊天完成要求。

from azure.ai.inference.models import SystemMessage, UserMessage

response = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
)

注意

Phi-3.5-Mini-Instruct、Phi-3.5-MoE-Instruct、Phi-3-mini-4k-Instruct、Phi-3-mini-128k-Instruct、Phi-3-small-8k-Instruct、Phi-3-small-128k-Instruct 和 Phi-3-medium-128k-Instruct 不支援系統訊息 (role="system")。 當您使用 Azure AI 模型推斷 API 時,系統訊息會轉譯為使用者訊息,這是可用功能中最為相似的功能。 此轉譯功能是為了方便起見而提供,但請務必確認模型遵循系統訊息中的指示,且具有正確的信賴度等級。

回應如下,您可以在其中查看模型的使用量統計資料:

print("Response:", response.choices[0].message.content)
print("Model:", response.model)
print("Usage:")
print("\tPrompt tokens:", response.usage.prompt_tokens)
print("\tTotal tokens:", response.usage.total_tokens)
print("\tCompletion tokens:", response.usage.completion_tokens)
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: Phi-3.5-Mini-Instruct
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

檢查回應中的 usage 區段,以查看提示所使用的權杖數目、產生的權杖總數,以及用於完成文字的權杖數目。

串流內容

根據預設,完成 API 會在單一回應中傳回整個產生的內容。 如果您正在產生的完成很長,則等候回應可能需要數秒鐘的時間。

您可以 [串流] 內容,以在內容產生期間取得它。 串流內容可讓您在內容變成可用時立即開始處理完成。 此模式會傳回以 [僅限資料的伺服器傳送事件] 形式將回應串流回來的物件。 從差異欄位擷取區塊,而不是訊息欄位。

result = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    temperature=0,
    top_p=1,
    max_tokens=2048,
    stream=True,
)

若要串流完成,請在呼叫模型時設定 stream=True

若要將輸出視覺化,請定義協助程式函式來列印串流。

def print_stream(result):
    """
    Prints the chat completion with streaming.
    """
    import time
    for update in result:
        if update.choices:
            print(update.choices[0].delta.content, end="")

您可以將串流產生內容的方式視覺化:

print_stream(result)

探索推斷用戶端支援的更多參數

探索您可以在推斷用戶端中指定的其他參數。 如需所有支援參數及其對應文件的完整清單,請參閱 [Azure AI 模型推斷 API 參考]

from azure.ai.inference.models import ChatCompletionsResponseFormat

response = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    presence_penalty=0.1,
    frequency_penalty=0.8,
    max_tokens=2048,
    stop=["<|endoftext|>"],
    temperature=0,
    top_p=1,
    response_format={ "type": ChatCompletionsResponseFormatText() },
)

警告

Phi-3 系列模型不支援 JSON 輸出格式化 (response_format = { "type": "json_object" })。 您隨時可以提示模型產生 JSON 輸出。 不過,這類輸出不保證為有效的 JSON。

如果您想要傳遞不在所支援參數清單中的參數,您可以使用 [額外的參數] 將其傳遞至基礎模型。 請參閱 [將額外的參數傳遞至模型]

將額外的參數傳遞至模型

Azure AI 模型推斷 API 可讓您將額外的參數傳遞至模型。 下列程式碼範例示範如何將額外的參數 logprobs 傳遞至模型。

將額外的參數傳遞至 Azure AI 模型推斷 API 之前,請確定您的模型支援那些額外的參數。 對基礎模型提出要求時,會將標頭 extra-parameters 傳遞至具有 pass-through 值的模型。 這個值會告訴端點將額外的參數傳遞至模型。 搭配模型使用額外的參數,不保證模型實際上可以處理這些參數。 請參閱模型的文件,以了解支援哪些額外的參數。

response = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    model_extras={
        "logprobs": True
    }
)

下列額外參數可以傳遞至 Phi-3 系列聊天模型:

名稱 描述 類型
logit_bias 接受 JSON 物件,此物件會將權杖 (由權杖化工具中的權杖識別碼所指定) 對應至 -100 到 100 的相關偏差值。 在數學上,偏差會先加到模型產生的對數,再取樣。 確切的效果會因模型而異,但介於 -1 到 1 之間的值應該會降低或提高選取的可能性;而 -100 或 100 之類的值應會導致禁止選取或獨佔選取相關權杖。 float
logprobs 是否要傳回輸出權杖的對數機率。 如果為 true,則會傳回在 messagecontent 中所傳回每個輸出權杖的對數機率。 int
top_logprobs 介於 0 到 20 之間的整數,其會指定最有可能在每個權杖位置傳回的權杖數目,每個都有相關聯的對數機率。 如果使用此參數,則 logprobs 必須設定為 true float
n 針對每個輸入訊息產生多少聊天完成選項。 請注意,您必須根據所有選擇中產生之權杖的數目來支付費用。 int

套用內容安全

Azure AI 模型推斷 API 支援 Azure AI 內容安全。 當您使用已開啟 Azure AI 內容安全的部署時,輸入和輸出都會通過旨在偵測及防止有害內容輸出的一組分類模型。 內容篩選 (預覽) 系統會偵測並針對輸入提示和輸出完成中潛在有害內容的特定類別採取動作。

下列範例示範當模型偵測到輸入提示中的有害內容並啟用內容安全時,如何處理事件。

from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage

try:
    response = client.complete(
        messages=[
            SystemMessage(content="You are an AI assistant that helps people find information."),
            UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
        ]
    )

    print(response.choices[0].message.content)

except HttpResponseError as ex:
    if ex.status_code == 400:
        response = ex.response.json()
        if isinstance(response, dict) and "error" in response:
            print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
        else:
            raise
    raise

提示

若要深入了解如何設定及控制 Azure AI 內容安全設定,請參閱 Azure AI 內容安全文件

注意

Azure AI 內容安全僅適用於部署為無伺服器 API 端點的模型。

Phi-3 系列聊天模型

Phi-3 系列聊天模型包含下列模型:

Phi-3.5 模型是最先進的小型開源模型。 這些模型使用 Phi-3 資料集進行訓練,其中包含綜合資料和已篩選、公開可用的網站資料,並著重於高品質和密集推理的屬性。

Phi-3.5 擁有 38 億個參數,且為使用與 Phi-3 Mini 相同權杖化工具的密集解碼專用轉換器模型。

Phi-3.5 MoE (mixture-of-expert) 在使用 2 位專家時,使用 16x3.8B 參數搭配 6.6B 作用中的參數。 模型是僅專家解碼器的轉換器模型之混合,使用詞彙量為 32,064 的權杖化工具。

模型歷經嚴格的產品功能加強流程,納入了受監督的微調、近端原則最佳化,以及直接喜好設定最佳化,以確保精確的指令遵循和強固的安全措施。 在以測試常識、語言理解、數學、程式碼、長內容和邏輯推理的進行基準評估時,在低於 130 億個參數的模型中,Phi-3.5 模型展現了強大且極為先進的效能。

Phi-3.5 模型提供多種下列變體,其內容長度 (以詞元為單位) 可達 128K。

有下列模型可用:

  • Phi-3.5-Mini-Instruct
  • [Phi-3.5-MoE-Instruct]

必要條件

若要搭配 Azure Machine Learning 工作室使用 Phi-3 系列聊天模型,則必須符合下列必要條件:

模型部署

部署至無伺服器 API

您可以將 Phi-3 系列聊天模型部署至無伺服器 API 端點,並採用隨用隨付計費方式。 這種部署可讓您以 API 的形式取用模型,而不必在您的訂用帳戶上裝載模型,同時讓組織保持所需的企業安全性和合規性。

部署至無伺服器 API 端點不需要您訂用帳戶的配額。 如果您的模型尚未部署,請使用 Azure Machine Learning 工作室、適用於 Python 的 Azure Machine Learning SDK、Azure CLI 或 ARM 範本來將模型部署為無伺服器 API

部署至自我裝載的受控計算

Phi-3 系列聊天模型可以部署至我們自我裝載的受控推斷解決方案,供您自訂和控制模型提供方式的所有詳細資料。

若要部署至自我裝載的受控計算,您的訂用帳戶必須具有足夠的配額。 如果您沒有足夠的可用配額,您可以透過選取 [我想要使用共用配額且我了解此端點將會在 168 小時後刪除] 選項,來使用我們的臨時配額存取。

[將模型部署至受控計算]

已安裝推斷套件

您可以使用 npm@azure-rest/ai-inference 套件來取用此模型的預測。 若要安裝此套件,您需要下列先決條件:

  • 具有 npmNode.js LTS 版本。
  • 端點 URL。 若要建構用戶端程式庫,您必須傳遞端點 URL。 端點 URL 具有 https://your-host-name.your-azure-region.inference.ai.azure.com 的形式,其中 your-host-name 是您唯一的模型部署主機名稱,且 your-azure-region 是模型所部署的 Azure 區域 (例如 eastus2)。
  • 視您的模型部署和驗證喜好設定而定,您需要金鑰來針對服務進行驗證,或是 Microsoft Entra ID 認證。 金鑰是 32 個字元的字串。

具備這些先決條件之後,使用下列命令來安裝適用於 JavaScript 的 Azure 推斷程式庫:

npm install @azure-rest/ai-inference

使用聊天完成

在本節中,您會使用 [Azure AI 模型推斷 API] 搭配聊天完成模型來用於聊天。

提示

透過 Azure AI 模型推斷 API,您能夠與部署於 Azure Machine Learning 工作室,且具有相同程式碼和結構的大多數模型進行對話,包括 Phi-3 系列聊天模型。

建立用戶端以取用模型

首先,建立用戶端以取用模型。 下列程式碼會使用儲存在環境變數中的端點 URL 和金鑰。

import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { AzureKeyCredential } from "@azure/core-auth";

const client = new ModelClient(
    process.env.AZURE_INFERENCE_ENDPOINT, 
    new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);

當您將模型部署至具有 Microsoft Entra ID 支援的自我裝載線上端點時,您可以使用下列程式碼片段來建立用戶端。

import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { DefaultAzureCredential }  from "@azure/identity";

const client = new ModelClient(
    process.env.AZURE_INFERENCE_ENDPOINT, 
    new DefaultAzureCredential()
);

注意

目前,無伺服器 API 端點不支援使用 Microsoft Entra ID 進行驗證。

取得模型的功能

/info 路由會傳回部署至端點之模型的相關資訊。 透過呼叫下列方法,以傳回模型的資訊:

var model_info = await client.path("/info").get()

回應如下:

console.log("Model name: ", model_info.body.model_name)
console.log("Model type: ", model_info.body.model_type)
console.log("Model provider name: ", model_info.body.model_provider_name)
Model name: Phi-3.5-Mini-Instruct
Model type: chat-completions
Model provider name: Microsoft

建立聊天完成要求

下列範例示範如何針對模型建立基本聊天完成要求。

var messages = [
    { role: "system", content: "You are a helpful assistant" },
    { role: "user", content: "How many languages are in the world?" },
];

var response = await client.path("/chat/completions").post({
    body: {
        messages: messages,
    }
});

注意

Phi-3.5-Mini-Instruct、Phi-3.5-MoE-Instruct、Phi-3-mini-4k-Instruct、Phi-3-mini-128k-Instruct、Phi-3-small-8k-Instruct、Phi-3-small-128k-Instruct 和 Phi-3-medium-128k-Instruct 不支援系統訊息 (role="system")。 當您使用 Azure AI 模型推斷 API 時,系統訊息會轉譯為使用者訊息,這是可用功能中最為相似的功能。 此轉譯功能是為了方便起見而提供,但請務必確認模型遵循系統訊息中的指示,且具有正確的信賴度等級。

回應如下,您可以在其中查看模型的使用量統計資料:

if (isUnexpected(response)) {
    throw response.body.error;
}

console.log("Response: ", response.body.choices[0].message.content);
console.log("Model: ", response.body.model);
console.log("Usage:");
console.log("\tPrompt tokens:", response.body.usage.prompt_tokens);
console.log("\tTotal tokens:", response.body.usage.total_tokens);
console.log("\tCompletion tokens:", response.body.usage.completion_tokens);
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: Phi-3.5-Mini-Instruct
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

檢查回應中的 usage 區段,以查看提示所使用的權杖數目、產生的權杖總數,以及用於完成文字的權杖數目。

串流內容

根據預設,完成 API 會在單一回應中傳回整個產生的內容。 如果您正在產生的完成很長,則等候回應可能需要數秒鐘的時間。

您可以 [串流] 內容,以在內容產生期間取得它。 串流內容可讓您在內容變成可用時立即開始處理完成。 此模式會傳回以 [僅限資料的伺服器傳送事件] 形式將回應串流回來的物件。 從差異欄位擷取區塊,而不是訊息欄位。

var messages = [
    { role: "system", content: "You are a helpful assistant" },
    { role: "user", content: "How many languages are in the world?" },
];

var response = await client.path("/chat/completions").post({
    body: {
        messages: messages,
    }
}).asNodeStream();

若要串流完成,在呼叫模型時使用 .asNodeStream()

您可以將串流產生內容的方式視覺化:

var stream = response.body;
if (!stream) {
    stream.destroy();
    throw new Error(`Failed to get chat completions with status: ${response.status}`);
}

if (response.status !== "200") {
    throw new Error(`Failed to get chat completions: ${response.body.error}`);
}

var sses = createSseStream(stream);

for await (const event of sses) {
    if (event.data === "[DONE]") {
        return;
    }
    for (const choice of (JSON.parse(event.data)).choices) {
        console.log(choice.delta?.content ?? "");
    }
}

探索推斷用戶端支援的更多參數

探索您可以在推斷用戶端中指定的其他參數。 如需所有支援參數及其對應文件的完整清單,請參閱 [Azure AI 模型推斷 API 參考]

var messages = [
    { role: "system", content: "You are a helpful assistant" },
    { role: "user", content: "How many languages are in the world?" },
];

var response = await client.path("/chat/completions").post({
    body: {
        messages: messages,
        presence_penalty: "0.1",
        frequency_penalty: "0.8",
        max_tokens: 2048,
        stop: ["<|endoftext|>"],
        temperature: 0,
        top_p: 1,
        response_format: { type: "text" },
    }
});

警告

Phi-3 系列模型不支援 JSON 輸出格式化 (response_format = { "type": "json_object" })。 您隨時可以提示模型產生 JSON 輸出。 不過,這類輸出不保證為有效的 JSON。

如果您想要傳遞不在所支援參數清單中的參數,您可以使用 [額外的參數] 將其傳遞至基礎模型。 請參閱 [將額外的參數傳遞至模型]

將額外的參數傳遞至模型

Azure AI 模型推斷 API 可讓您將額外的參數傳遞至模型。 下列程式碼範例示範如何將額外的參數 logprobs 傳遞至模型。

將額外的參數傳遞至 Azure AI 模型推斷 API 之前,請確定您的模型支援那些額外的參數。 對基礎模型提出要求時,會將標頭 extra-parameters 傳遞至具有 pass-through 值的模型。 這個值會告訴端點將額外的參數傳遞至模型。 搭配模型使用額外的參數,不保證模型實際上可以處理這些參數。 請參閱模型的文件,以了解支援哪些額外的參數。

var messages = [
    { role: "system", content: "You are a helpful assistant" },
    { role: "user", content: "How many languages are in the world?" },
];

var response = await client.path("/chat/completions").post({
    headers: {
        "extra-params": "pass-through"
    },
    body: {
        messages: messages,
        logprobs: true
    }
});

下列額外參數可以傳遞至 Phi-3 系列聊天模型:

名稱 描述 類型
logit_bias 接受 JSON 物件,此物件會將權杖 (由權杖化工具中的權杖識別碼所指定) 對應至 -100 到 100 的相關偏差值。 在數學上,偏差會先加到模型產生的對數,再取樣。 確切的效果會因模型而異,但介於 -1 到 1 之間的值應該會降低或提高選取的可能性;而 -100 或 100 之類的值應會導致禁止選取或獨佔選取相關權杖。 float
logprobs 是否要傳回輸出權杖的對數機率。 如果為 true,則會傳回在 messagecontent 中所傳回每個輸出權杖的對數機率。 int
top_logprobs 介於 0 到 20 之間的整數,其會指定最有可能在每個權杖位置傳回的權杖數目,每個都有相關聯的對數機率。 如果使用此參數,則 logprobs 必須設定為 true float
n 針對每個輸入訊息產生多少聊天完成選項。 請注意,您必須根據所有選擇中產生之權杖的數目來支付費用。 int

套用內容安全

Azure AI 模型推斷 API 支援 Azure AI 內容安全。 當您使用已開啟 Azure AI 內容安全的部署時,輸入和輸出都會通過旨在偵測及防止有害內容輸出的一組分類模型。 內容篩選 (預覽) 系統會偵測並針對輸入提示和輸出完成中潛在有害內容的特定類別採取動作。

下列範例示範當模型偵測到輸入提示中的有害內容並啟用內容安全時,如何處理事件。

try {
    var messages = [
        { role: "system", content: "You are an AI assistant that helps people find information." },
        { role: "user", content: "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills." },
    ];

    var response = await client.path("/chat/completions").post({
        body: {
            messages: messages,
        }
    });

    console.log(response.body.choices[0].message.content);
}
catch (error) {
    if (error.status_code == 400) {
        var response = JSON.parse(error.response._content);
        if (response.error) {
            console.log(`Your request triggered an ${response.error.code} error:\n\t ${response.error.message}`);
        }
        else
        {
            throw error;
        }
    }
}

提示

若要深入了解如何設定及控制 Azure AI 內容安全設定,請參閱 Azure AI 內容安全文件

注意

Azure AI 內容安全僅適用於部署為無伺服器 API 端點的模型。

Phi-3 系列聊天模型

Phi-3 系列聊天模型包含下列模型:

Phi-3.5 模型是最先進的小型開源模型。 這些模型使用 Phi-3 資料集進行訓練,其中包含綜合資料和已篩選、公開可用的網站資料,並著重於高品質和密集推理的屬性。

Phi-3.5 擁有 38 億個參數,且為使用與 Phi-3 Mini 相同權杖化工具的密集解碼專用轉換器模型。

Phi-3.5 MoE (mixture-of-expert) 在使用 2 位專家時,使用 16x3.8B 參數搭配 6.6B 作用中的參數。 模型是僅專家解碼器的轉換器模型之混合,使用詞彙量為 32,064 的權杖化工具。

模型歷經嚴格的產品功能加強流程,納入了受監督的微調、近端原則最佳化,以及直接喜好設定最佳化,以確保精確的指令遵循和強固的安全措施。 在以測試常識、語言理解、數學、程式碼、長內容和邏輯推理的進行基準評估時,在低於 130 億個參數的模型中,Phi-3.5 模型展現了強大且極為先進的效能。

Phi-3.5 模型提供多種下列變體,其內容長度 (以詞元為單位) 可達 128K。

有下列模型可用:

  • Phi-3.5-Mini-Instruct
  • [Phi-3.5-MoE-Instruct]

必要條件

若要搭配 Azure Machine Learning 工作室使用 Phi-3 系列聊天模型,則必須符合下列必要條件:

模型部署

部署至無伺服器 API

您可以將 Phi-3 系列聊天模型部署至無伺服器 API 端點,並採用隨用隨付計費方式。 這種部署可讓您以 API 的形式取用模型,而不必在您的訂用帳戶上裝載模型,同時讓組織保持所需的企業安全性和合規性。

部署至無伺服器 API 端點不需要您訂用帳戶的配額。 如果您的模型尚未部署,請使用 Azure Machine Learning 工作室、適用於 Python 的 Azure Machine Learning SDK、Azure CLI 或 ARM 範本來將模型部署為無伺服器 API

部署至自我裝載的受控計算

Phi-3 系列聊天模型可以部署至我們自我裝載的受控推斷解決方案,供您自訂和控制模型提供方式的所有詳細資料。

若要部署至自我裝載的受控計算,您的訂用帳戶必須具有足夠的配額。 如果您沒有足夠的可用配額,您可以透過選取 [我想要使用共用配額且我了解此端點將會在 168 小時後刪除] 選項,來使用我們的臨時配額存取。

[將模型部署至受控計算]

已安裝推斷套件

您可以從 [NuGet] 使用 Azure.AI.Inference 套件來取用此模型的預測。 若要安裝此套件,您需要下列先決條件:

  • 端點 URL。 若要建構用戶端程式庫,您必須傳遞端點 URL。 端點 URL 具有 https://your-host-name.your-azure-region.inference.ai.azure.com 的形式,其中 your-host-name 是您唯一的模型部署主機名稱,且 your-azure-region 是模型所部署的 Azure 區域 (例如 eastus2)。
  • 視您的模型部署和驗證喜好設定而定,您需要金鑰來針對服務進行驗證,或是 Microsoft Entra ID 認證。 金鑰是 32 個字元的字串。

具備這些先決條件之後,使用下列命令來安裝 Azure AI 推斷程式庫:

dotnet add package Azure.AI.Inference --prerelease

您也可以使用 Microsoft Entra ID (先前稱為 Azure Active Directory) 進行驗證。 若要使用 Azure SDK 所提供的認證提供者,請安裝 Azure.Identity 套件:

dotnet add package Azure.Identity

匯入下列命名空間:

using Azure;
using Azure.Identity;
using Azure.AI.Inference;

此範例也會使用下列命名空間,但您可能不一定需要它們:

using System.Text.Json;
using System.Text.Json.Serialization;
using System.Reflection;

使用聊天完成

在本節中,您會使用 [Azure AI 模型推斷 API] 搭配聊天完成模型來用於聊天。

提示

透過 Azure AI 模型推斷 API,您能夠與部署於 Azure Machine Learning 工作室,且具有相同程式碼和結構的大多數模型進行對話,包括 Phi-3 系列聊天模型。

建立用戶端以取用模型

首先,建立用戶端以取用模型。 下列程式碼會使用儲存在環境變數中的端點 URL 和金鑰。

ChatCompletionsClient client = new ChatCompletionsClient(
    new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
    new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);

當您將模型部署至具有 Microsoft Entra ID 支援的自我裝載線上端點時,您可以使用下列程式碼片段來建立用戶端。

client = new ChatCompletionsClient(
    new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
    new DefaultAzureCredential(includeInteractiveCredentials: true)
);

注意

目前,無伺服器 API 端點不支援使用 Microsoft Entra ID 進行驗證。

取得模型的功能

/info 路由會傳回部署至端點之模型的相關資訊。 透過呼叫下列方法,以傳回模型的資訊:

Response<ModelInfo> modelInfo = client.GetModelInfo();

回應如下:

Console.WriteLine($"Model name: {modelInfo.Value.ModelName}");
Console.WriteLine($"Model type: {modelInfo.Value.ModelType}");
Console.WriteLine($"Model provider name: {modelInfo.Value.ModelProviderName}");
Model name: Phi-3.5-Mini-Instruct
Model type: chat-completions
Model provider name: Microsoft

建立聊天完成要求

下列範例示範如何針對模型建立基本聊天完成要求。

ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("How many languages are in the world?")
    },
};

Response<ChatCompletions> response = client.Complete(requestOptions);

注意

Phi-3.5-Mini-Instruct、Phi-3.5-MoE-Instruct、Phi-3-mini-4k-Instruct、Phi-3-mini-128k-Instruct、Phi-3-small-8k-Instruct、Phi-3-small-128k-Instruct 和 Phi-3-medium-128k-Instruct 不支援系統訊息 (role="system")。 當您使用 Azure AI 模型推斷 API 時,系統訊息會轉譯為使用者訊息,這是可用功能中最為相似的功能。 此轉譯功能是為了方便起見而提供,但請務必確認模型遵循系統訊息中的指示,且具有正確的信賴度等級。

回應如下,您可以在其中查看模型的使用量統計資料:

Console.WriteLine($"Response: {response.Value.Choices[0].Message.Content}");
Console.WriteLine($"Model: {response.Value.Model}");
Console.WriteLine("Usage:");
Console.WriteLine($"\tPrompt tokens: {response.Value.Usage.PromptTokens}");
Console.WriteLine($"\tTotal tokens: {response.Value.Usage.TotalTokens}");
Console.WriteLine($"\tCompletion tokens: {response.Value.Usage.CompletionTokens}");
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: Phi-3.5-Mini-Instruct
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

檢查回應中的 usage 區段,以查看提示所使用的權杖數目、產生的權杖總數,以及用於完成文字的權杖數目。

串流內容

根據預設,完成 API 會在單一回應中傳回整個產生的內容。 如果您正在產生的完成很長,則等候回應可能需要數秒鐘的時間。

您可以 [串流] 內容,以在內容產生期間取得它。 串流內容可讓您在內容變成可用時立即開始處理完成。 此模式會傳回以 [僅限資料的伺服器傳送事件] 形式將回應串流回來的物件。 從差異欄位擷取區塊,而不是訊息欄位。

static async Task StreamMessageAsync(ChatCompletionsClient client)
{
    ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
    {
        Messages = {
            new ChatRequestSystemMessage("You are a helpful assistant."),
            new ChatRequestUserMessage("How many languages are in the world? Write an essay about it.")
        },
        MaxTokens=4096
    };

    StreamingResponse<StreamingChatCompletionsUpdate> streamResponse = await client.CompleteStreamingAsync(requestOptions);

    await PrintStream(streamResponse);
}

若要串流完成,在呼叫模型時使用 CompleteStreamingAsync 方法。 請注意,在此範例中,呼叫會包裝在非同步方法中。

若要將輸出視覺化,請定義非同步方法,以在主控台中列印串流。

static async Task PrintStream(StreamingResponse<StreamingChatCompletionsUpdate> response)
{
    await foreach (StreamingChatCompletionsUpdate chatUpdate in response)
    {
        if (chatUpdate.Role.HasValue)
        {
            Console.Write($"{chatUpdate.Role.Value.ToString().ToUpperInvariant()}: ");
        }
        if (!string.IsNullOrEmpty(chatUpdate.ContentUpdate))
        {
            Console.Write(chatUpdate.ContentUpdate);
        }
    }
}

您可以將串流產生內容的方式視覺化:

StreamMessageAsync(client).GetAwaiter().GetResult();

探索推斷用戶端支援的更多參數

探索您可以在推斷用戶端中指定的其他參數。 如需所有支援參數及其對應文件的完整清單,請參閱 [Azure AI 模型推斷 API 參考]

requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("How many languages are in the world?")
    },
    PresencePenalty = 0.1f,
    FrequencyPenalty = 0.8f,
    MaxTokens = 2048,
    StopSequences = { "<|endoftext|>" },
    Temperature = 0,
    NucleusSamplingFactor = 1,
    ResponseFormat = new ChatCompletionsResponseFormatText()
};

response = client.Complete(requestOptions);
Console.WriteLine($"Response: {response.Value.Choices[0].Message.Content}");

警告

Phi-3 系列模型不支援 JSON 輸出格式化 (response_format = { "type": "json_object" })。 您隨時可以提示模型產生 JSON 輸出。 不過,這類輸出不保證為有效的 JSON。

如果您想要傳遞不在所支援參數清單中的參數,您可以使用 [額外的參數] 將其傳遞至基礎模型。 請參閱 [將額外的參數傳遞至模型]

將額外的參數傳遞至模型

Azure AI 模型推斷 API 可讓您將額外的參數傳遞至模型。 下列程式碼範例示範如何將額外的參數 logprobs 傳遞至模型。

將額外的參數傳遞至 Azure AI 模型推斷 API 之前,請確定您的模型支援那些額外的參數。 對基礎模型提出要求時,會將標頭 extra-parameters 傳遞至具有 pass-through 值的模型。 這個值會告訴端點將額外的參數傳遞至模型。 搭配模型使用額外的參數,不保證模型實際上可以處理這些參數。 請參閱模型的文件,以了解支援哪些額外的參數。

requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("How many languages are in the world?")
    },
    AdditionalProperties = { { "logprobs", BinaryData.FromString("true") } },
};

response = client.Complete(requestOptions, extraParams: ExtraParameters.PassThrough);
Console.WriteLine($"Response: {response.Value.Choices[0].Message.Content}");

下列額外參數可以傳遞至 Phi-3 系列聊天模型:

名稱 描述 類型
logit_bias 接受 JSON 物件,此物件會將權杖 (由權杖化工具中的權杖識別碼所指定) 對應至 -100 到 100 的相關偏差值。 在數學上,偏差會先加到模型產生的對數,再取樣。 確切的效果會因模型而異,但介於 -1 到 1 之間的值應該會降低或提高選取的可能性;而 -100 或 100 之類的值應會導致禁止選取或獨佔選取相關權杖。 float
logprobs 是否要傳回輸出權杖的對數機率。 如果為 true,則會傳回在 messagecontent 中所傳回每個輸出權杖的對數機率。 int
top_logprobs 介於 0 到 20 之間的整數,其會指定最有可能在每個權杖位置傳回的權杖數目,每個都有相關聯的對數機率。 如果使用此參數,則 logprobs 必須設定為 true float
n 針對每個輸入訊息產生多少聊天完成選項。 請注意,您必須根據所有選擇中產生之權杖的數目來支付費用。 int

套用內容安全

Azure AI 模型推斷 API 支援 Azure AI 內容安全。 當您使用已開啟 Azure AI 內容安全的部署時,輸入和輸出都會通過旨在偵測及防止有害內容輸出的一組分類模型。 內容篩選 (預覽) 系統會偵測並針對輸入提示和輸出完成中潛在有害內容的特定類別採取動作。

下列範例示範當模型偵測到輸入提示中的有害內容並啟用內容安全時,如何處理事件。

try
{
    requestOptions = new ChatCompletionsOptions()
    {
        Messages = {
            new ChatRequestSystemMessage("You are an AI assistant that helps people find information."),
            new ChatRequestUserMessage(
                "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
            ),
        },
    };

    response = client.Complete(requestOptions);
    Console.WriteLine(response.Value.Choices[0].Message.Content);
}
catch (RequestFailedException ex)
{
    if (ex.ErrorCode == "content_filter")
    {
        Console.WriteLine($"Your query has trigger Azure Content Safety: {ex.Message}");
    }
    else
    {
        throw;
    }
}

提示

若要深入了解如何設定及控制 Azure AI 內容安全設定,請參閱 Azure AI 內容安全文件

注意

Azure AI 內容安全僅適用於部署為無伺服器 API 端點的模型。

Phi-3 系列聊天模型

Phi-3 系列聊天模型包含下列模型:

Phi-3.5 模型是最先進的小型開源模型。 這些模型使用 Phi-3 資料集進行訓練,其中包含綜合資料和已篩選、公開可用的網站資料,並著重於高品質和密集推理的屬性。

Phi-3.5 擁有 38 億個參數,且為使用與 Phi-3 Mini 相同權杖化工具的密集解碼專用轉換器模型。

Phi-3.5 MoE (mixture-of-expert) 在使用 2 位專家時,使用 16x3.8B 參數搭配 6.6B 作用中的參數。 模型是僅專家解碼器的轉換器模型之混合,使用詞彙量為 32,064 的權杖化工具。

模型歷經嚴格的產品功能加強流程,納入了受監督的微調、近端原則最佳化,以及直接喜好設定最佳化,以確保精確的指令遵循和強固的安全措施。 在以測試常識、語言理解、數學、程式碼、長內容和邏輯推理的進行基準評估時,在低於 130 億個參數的模型中,Phi-3.5 模型展現了強大且極為先進的效能。

Phi-3.5 模型提供多種下列變體,其內容長度 (以詞元為單位) 可達 128K。

有下列模型可用:

  • Phi-3.5-Mini-Instruct
  • [Phi-3.5-MoE-Instruct]

必要條件

若要搭配 Azure Machine Learning 工作室使用 Phi-3 系列聊天模型,則必須符合下列必要條件:

模型部署

部署至無伺服器 API

您可以將 Phi-3 系列聊天模型部署至無伺服器 API 端點,並採用隨用隨付計費方式。 這種部署可讓您以 API 的形式取用模型,而不必在您的訂用帳戶上裝載模型,同時讓組織保持所需的企業安全性和合規性。

部署至無伺服器 API 端點不需要您訂用帳戶的配額。 如果您的模型尚未部署,請使用 Azure Machine Learning 工作室、適用於 Python 的 Azure Machine Learning SDK、Azure CLI 或 ARM 範本來將模型部署為無伺服器 API

部署至自我裝載的受控計算

Phi-3 系列聊天模型可以部署至我們自我裝載的受控推斷解決方案,供您自訂和控制模型提供方式的所有詳細資料。

若要部署至自我裝載的受控計算,您的訂用帳戶必須具有足夠的配額。 如果您沒有足夠的可用配額,您可以透過選取 [我想要使用共用配額且我了解此端點將會在 168 小時後刪除] 選項,來使用我們的臨時配額存取。

[將模型部署至受控計算]

REST 用戶端

使用 [Azure AI 模型推斷 API] 部署的模型,可以使用任何 REST 用戶端來取用。 若要使用 REST 用戶端,您需要下列先決條件:

  • 若要建構要求,您必須傳入端點 URL。 端點 URL 具有 https://your-host-name.your-azure-region.inference.ai.azure.com 形式,其中 your-host-name`` is your unique model deployment host name and your-azure-region`` 是模型部署所在的 Azure 區域 (例如 eastus2)。
  • 視您的模型部署和驗證喜好設定而定,您需要金鑰來針對服務進行驗證,或是 Microsoft Entra ID 認證。 金鑰是 32 個字元的字串。

使用聊天完成

在本節中,您會使用 [Azure AI 模型推斷 API] 搭配聊天完成模型來用於聊天。

提示

透過 Azure AI 模型推斷 API,您能夠與部署於 Azure Machine Learning 工作室,且具有相同程式碼和結構的大多數模型進行對話,包括 Phi-3 系列聊天模型。

建立用戶端以取用模型

首先,建立用戶端以取用模型。 下列程式碼會使用儲存在環境變數中的端點 URL 和金鑰。

當您將模型部署至具有 Microsoft Entra ID 支援的自我裝載線上端點時,您可以使用下列程式碼片段來建立用戶端。

注意

目前,無伺服器 API 端點不支援使用 Microsoft Entra ID 進行驗證。

取得模型的功能

/info 路由會傳回部署至端點之模型的相關資訊。 透過呼叫下列方法,以傳回模型的資訊:

GET /info HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json

回應如下:

{
    "model_name": "Phi-3.5-Mini-Instruct",
    "model_type": "chat-completions",
    "model_provider_name": "Microsoft"
}

建立聊天完成要求

下列範例示範如何針對模型建立基本聊天完成要求。

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ]
}

注意

Phi-3.5-Mini-Instruct、Phi-3.5-MoE-Instruct、Phi-3-mini-4k-Instruct、Phi-3-mini-128k-Instruct、Phi-3-small-8k-Instruct、Phi-3-small-128k-Instruct 和 Phi-3-medium-128k-Instruct 不支援系統訊息 (role="system")。 當您使用 Azure AI 模型推斷 API 時,系統訊息會轉譯為使用者訊息,這是可用功能中最為相似的功能。 此轉譯功能是為了方便起見而提供,但請務必確認模型遵循系統訊息中的指示,且具有正確的信賴度等級。

回應如下,您可以在其中查看模型的使用量統計資料:

{
    "id": "0a1234b5de6789f01gh2i345j6789klm",
    "object": "chat.completion",
    "created": 1718726686,
    "model": "Phi-3.5-Mini-Instruct",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.",
                "tool_calls": null
            },
            "finish_reason": "stop",
            "logprobs": null
        }
    ],
    "usage": {
        "prompt_tokens": 19,
        "total_tokens": 91,
        "completion_tokens": 72
    }
}

檢查回應中的 usage 區段,以查看提示所使用的權杖數目、產生的權杖總數,以及用於完成文字的權杖數目。

串流內容

根據預設,完成 API 會在單一回應中傳回整個產生的內容。 如果您正在產生的完成很長,則等候回應可能需要數秒鐘的時間。

您可以 [串流] 內容,以在內容產生期間取得它。 串流內容可讓您在內容變成可用時立即開始處理完成。 此模式會傳回以 [僅限資料的伺服器傳送事件] 形式將回應串流回來的物件。 從差異欄位擷取區塊,而不是訊息欄位。

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "stream": true,
    "temperature": 0,
    "top_p": 1,
    "max_tokens": 2048
}

您可以將串流產生內容的方式視覺化:

{
    "id": "23b54589eba14564ad8a2e6978775a39",
    "object": "chat.completion.chunk",
    "created": 1718726371,
    "model": "Phi-3.5-Mini-Instruct",
    "choices": [
        {
            "index": 0,
            "delta": {
                "role": "assistant",
                "content": ""
            },
            "finish_reason": null,
            "logprobs": null
        }
    ]
}

串流中的最後一則訊息已設定 finish_reason,其會指出產生流程停止的原因。

{
    "id": "23b54589eba14564ad8a2e6978775a39",
    "object": "chat.completion.chunk",
    "created": 1718726371,
    "model": "Phi-3.5-Mini-Instruct",
    "choices": [
        {
            "index": 0,
            "delta": {
                "content": ""
            },
            "finish_reason": "stop",
            "logprobs": null
        }
    ],
    "usage": {
        "prompt_tokens": 19,
        "total_tokens": 91,
        "completion_tokens": 72
    }
}

探索推斷用戶端支援的更多參數

探索您可以在推斷用戶端中指定的其他參數。 如需所有支援參數及其對應文件的完整清單,請參閱 [Azure AI 模型推斷 API 參考]

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "presence_penalty": 0.1,
    "frequency_penalty": 0.8,
    "max_tokens": 2048,
    "stop": ["<|endoftext|>"],
    "temperature" :0,
    "top_p": 1,
    "response_format": { "type": "text" }
}
{
    "id": "0a1234b5de6789f01gh2i345j6789klm",
    "object": "chat.completion",
    "created": 1718726686,
    "model": "Phi-3.5-Mini-Instruct",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.",
                "tool_calls": null
            },
            "finish_reason": "stop",
            "logprobs": null
        }
    ],
    "usage": {
        "prompt_tokens": 19,
        "total_tokens": 91,
        "completion_tokens": 72
    }
}

警告

Phi-3 系列模型不支援 JSON 輸出格式化 (response_format = { "type": "json_object" })。 您隨時可以提示模型產生 JSON 輸出。 不過,這類輸出不保證為有效的 JSON。

如果您想要傳遞不在所支援參數清單中的參數,您可以使用 [額外的參數] 將其傳遞至基礎模型。 請參閱 [將額外的參數傳遞至模型]

將額外的參數傳遞至模型

Azure AI 模型推斷 API 可讓您將額外的參數傳遞至模型。 下列程式碼範例示範如何將額外的參數 logprobs 傳遞至模型。

將額外的參數傳遞至 Azure AI 模型推斷 API 之前,請確定您的模型支援那些額外的參數。 對基礎模型提出要求時,會將標頭 extra-parameters 傳遞至具有 pass-through 值的模型。 這個值會告訴端點將額外的參數傳遞至模型。 搭配模型使用額外的參數,不保證模型實際上可以處理這些參數。 請參閱模型的文件,以了解支援哪些額外的參數。

POST /chat/completions HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json
extra-parameters: pass-through
{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "logprobs": true
}

下列額外參數可以傳遞至 Phi-3 系列聊天模型:

名稱 描述 類型
logit_bias 接受 JSON 物件,此物件會將權杖 (由權杖化工具中的權杖識別碼所指定) 對應至 -100 到 100 的相關偏差值。 在數學上,偏差會先加到模型產生的對數,再取樣。 確切的效果會因模型而異,但介於 -1 到 1 之間的值應該會降低或提高選取的可能性;而 -100 或 100 之類的值應會導致禁止選取或獨佔選取相關權杖。 float
logprobs 是否要傳回輸出權杖的對數機率。 如果為 true,則會傳回在 messagecontent 中所傳回每個輸出權杖的對數機率。 int
top_logprobs 介於 0 到 20 之間的整數,其會指定最有可能在每個權杖位置傳回的權杖數目,每個都有相關聯的對數機率。 如果使用此參數,則 logprobs 必須設定為 true float
n 針對每個輸入訊息產生多少聊天完成選項。 請注意,您必須根據所有選擇中產生之權杖的數目來支付費用。 int

套用內容安全

Azure AI 模型推斷 API 支援 Azure AI 內容安全。 當您使用已開啟 Azure AI 內容安全的部署時,輸入和輸出都會通過旨在偵測及防止有害內容輸出的一組分類模型。 內容篩選 (預覽) 系統會偵測並針對輸入提示和輸出完成中潛在有害內容的特定類別採取動作。

下列範例示範當模型偵測到輸入提示中的有害內容並啟用內容安全時,如何處理事件。

{
    "messages": [
        {
            "role": "system",
            "content": "You are an AI assistant that helps people find information."
        },
                {
            "role": "user",
            "content": "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
        }
    ]
}
{
    "error": {
        "message": "The response was filtered due to the prompt triggering Microsoft's content management policy. Please modify your prompt and retry.",
        "type": null,
        "param": "prompt",
        "code": "content_filter",
        "status": 400
    }
}

提示

若要深入了解如何設定及控制 Azure AI 內容安全設定,請參閱 Azure AI 內容安全文件

注意

Azure AI 內容安全僅適用於部署為無伺服器 API 端點的模型。

更多推斷範例

如需如何使用 Phi-3 系列模型的更多範例,請參閱下列範例和教學課程:

描述 語言 範例
CURL 要求 Bash 連結
適用於 JavaScript 的 Azure AI 推斷套件 JavaScript 連結
適用於 Python 的 Azure AI 推斷套件 Python 連結
Python Web 要求 Python 連結
OpenAI SDK (實驗性) Python 連結
LangChain Python 連結
LiteLLM Python 連結

部署為無伺服器 API 端點的 Phi-3 系列模型的成本和配額考量

配額會根據每個部署管理。 每個部署的速率限制為每分鐘 200,000 個權杖,每分鐘 1,000 個 API 要求。 不過,我們目前限制每個專案的每個模型為一個部署。 如果目前的速率限制無法滿足您的情節,請連絡 Microsoft Azure 支援。

部署至受控計算之 Phi-3 系列模型的成本和配額考量

部署至受控計算的 Phi-3 系列模型會根據相關計算執行個體的核心時數計費。 計算執行個體的成本取決於執行個體的大小、執行的執行個體數目,以及執行持續時間。

最好從少量的執行個體開始,並視需要擴大。 您可以在 Azure 入口網站中監視計算執行個體的成本。