Meta Llama ファミリのモデルを使用する方法

重要

この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

この記事では、Meta Llama ファミリのモデルとその使用方法について説明します。 Meta Llama のモデルとツールは、事前トレーニングされ、微調整された生成 AI テキストと画像推論モデルのコレクションです。デバイス上とエッジ推論向けの SLM (1B、3B Base および Instruct モデル) から、中規模の LLM (7B、8B、70B Base および Instruct モデル)、合成データ生成や蒸留のユース ケース向けのハイ パフォーマンス モデル (Meta Llama 3.1 405B など) まで、さまざまな規模のものが揃っています。

現在、Azure AI モデル カタログでリリースされた Meta の Llama 3.2 ファミリ モデルのお知らせについては、Meta のブログMicrosoft Tech Community ブログを参照してください。

重要

プレビュー段階のモデルには、モデル カタログ内のモデル カードで "プレビュー" のマークが付けられます。

Meta Llama ファミリのモデル

Meta Llama ファミリのモデルには次のモデルが含まれています。

SLM および画像推論モデルの Llama 3.2 コレクションがリリースされました。 近日中に、Llama 3.2 11B Vision Instruct および Llama 3.2 90B Vision Instruct が、サービスとしてのモデルを介したサーバーレス API エンドポイントとして使用できるようになります。 本日より、マネージド コンピューティングを介して次のモデルをデプロイできるようになります。

  • Llama 3.2 1B
  • Llama 3.2 3B
  • Llama 3.2 1B Instruct
  • Llama 3.2 3B Instruct
  • Llama Guard 3 1B
  • Llama Guard 11B Vision
  • Llama 3.2 11B Vision Instruct
  • Llama 3.2 90B Vision Instruct は、マネージド コンピューティングのデプロイに使用できます。

前提条件

Azure AI Studio で Meta Llama モデルを使用するには、次の前提条件を満たす必要があります。

モデル デプロイ

サーバーレス API へのデプロイ

Meta Llama モデルは、従量課金制でサーバーレス API エンドポイントにデプロイできます。 この種類のデプロイは、組織が必要とする企業レベルのセキュリティとコンプライアンスを維持しながら、サブスクリプションでホストせずに API としてモデルを使用する方法を提供します。

サーバーレス API エンドポイントへのデプロイでは、サブスクリプションからのクォータは必要ありません。 モデルがまだデプロイされていない場合は、Azure AI Studio、Azure Machine Learning SDK for Python、Azure CLI、または ARM テンプレートを使用して、モデルをサーバーレス API としてデプロイします。

セルフホステッド マネージド コンピューティングへのデプロイ

Meta Llama モデルは、Microsoft のセルフホステッド マネージド推論ソリューションにデプロイできます。これにより、モデルの提供方法に関するすべての詳細をカスタマイズおよび制御できます。

セルフホステッド マネージド コンピューティングにデプロイするには、サブスクリプションに十分なクォータが必要です。 十分なクォータを使用できない場合は、「共有クォータを使用するオプションを使用します。このエンドポイントは 168 時間以内に削除されることを確認します」オプションを選択することで、一時的なクォータ アクセスを使用できます。

インストールされている推論パッケージ

Python で azure-ai-inference パッケージを使用して、このモデルから予測を実行できます。 このパッケージをインストールするには、次の前提条件を満たす必要があります。

  • 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 を使用すると、Meta Llama Instruct モデル (テキストのみまたは画像の理由のモデル) など、同じコードと構造で Azure AI Studio にデプロイされたほとんどのモデルと対話できます。

モデルを実行するクライアントを作成する

まず、モデルを実行するクライアントを作成します。 次のコードでは、環境変数に格納されているエンドポイント 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(),
)

Note

現在、サーバーレス 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: Meta-Llama-3.1-405B-Instruct
Model type: chat-completions
Model provider name: Meta

チャット入力候補要求を作成する

次の例に、モデルに対する基本的なチャット入力候補要求を作成する方法を示します。

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?"),
    ],
)

応答は次のとおりです。モデルの使用状況の統計情報が表示されます。

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: Meta-Llama-3.1-405B-Instruct
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

応答の usage セクションを調べて、プロンプトに使用されたトークンの数、生成されたトークンの合計数、入力候補に使用されたトークンの数を確認します。

コンテンツのストリーミング

既定では、入力候補 API は生成されたコンテンツ全体を 1 つの応答で返します。 長い入力候補を生成する場合、応答が得られるまでに数秒かかることがあります。

コンテンツをストリーミングして、コンテンツが生成されるにつれ返されるようにできます。 コンテンツをストリーミングすると、コンテンツが使用可能になったときに入力候補の処理を開始できます。 このモードは、データのみのサーバー送信イベントとして応答をストリーム バックするオブジェクトを返します。 メッセージ フィールドではなく、デルタ フィールドからチャンクを抽出します。

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 ChatCompletionsResponseFormatText

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() },
)

警告

Meta Llama モデルは、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
    }
)

Meta Llama モデルには、次の追加パラメーターを渡すことができます。

名前 Description Type
n プロンプトごとに生成する入力候補の数。 注: このパラメーターにより多くの入力候補が生成されるため、トークン クォータがすぐに消費される可能性があります。 integer
best_of サーバー側 best_of 入力候補を生成し、best (トークンあたりのログ確率が最低のもの) を返します。 結果をストリーミングすることはできません。 n と共に使用する場合、best_of で補完候補数を制御し、n には返す数を指定します。best_of は n より大きくする必要があります。 注: このパラメーターにより多くの入力候補が生成されるため、トークン クォータがすぐに消費される可能性があります。 integer
logprobs logprobs の最も可能性の高いトークンと、選択したトークンのログ確率を含めることを示す数値。 たとえば、logprobs が 10 の場合、API は可能性が最も高い 10 個のトークンの一覧を返します。 API は、常にサンプリングされたトークンの logprob を返します。そのため、応答には、最大 logprobs+ 1 要素が含まれている場合があります。 integer
ignore_eos EOS トークンを無視し、EOS トークンの生成後もトークンの生成を続行するかどうかを指定します。 boolean
use_beam_search サンプリングの代わりにビーム検索を使用するかどうかを指定します。 この場合、best_of は 1 より大きく、温度は 0 である必要があります。 boolean
stop_token_ids 生成されると、以降のトークンの生成を停止するトークンの ID の一覧。 返される出力には、停止トークンが特殊なトークンでない限り、停止トークンが含まれます。 array
skip_special_tokens 出力内の特別なトークンをスキップするかどうかを指定します。 boolean

コンテンツの安全性を適用する

Azure AI モデル推論 API は、Azure AI Content Safety をサポートしています。 Azure AI Content Safety をオンにしてデプロイを使用すると、入力と出力は、有害なコンテンツの出力を検出して防ぐことを目的とした一連の分類モデルを通過します。 コンテンツ フィルタリング (プレビュー) システムは、入力プロンプトと出力される入力候補の両方で、有害な可能性があるコンテンツ特有のカテゴリを検出し、アクションを実行します。

次の例に、モデルが入力プロンプトで有害なコンテンツを検出し、コンテンツの安全性が有効になっている場合にイベントを処理する方法を示しています。

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 Content Safety の設定を構成および制御する方法の詳細については、Azure AI Content Safety のドキュメントを参照してください。

Note

Azure AI Content Safety は、サーバーレス API エンドポイントとしてデプロイされたモデルでのみ利用できます。

Meta Llama モデル

Meta Llama モデルには、次のようなモデルが含まれます。

多言語大規模言語モデル (LLM) の Meta Llama 3.1 コレクションは、8B、70B、405B サイズ (テキスト入力/テキスト出力) の事前トレーニングおよびインストラクション チューニングされた生成モデルのコレクションです。 Llama 3.1 インストラクション チューニングされたテキストのみのモデル (8B、70B、405B) は、多言語対話のユース ケース向けに最適化されており、一般的な業界ベンチマークで使用できるオープン ソース チャット モデルおよびクローズド チャット モデルの多くを上回ります。

以下のモデルが使用可能です:

前提条件

Azure AI Studio で Meta Llama モデルを使用するには、次の前提条件を満たす必要があります。

モデル デプロイ

サーバーレス API へのデプロイ

Meta Llama モデルは、従量課金制でサーバーレス API エンドポイントにデプロイできます。 この種類のデプロイは、組織が必要とする企業レベルのセキュリティとコンプライアンスを維持しながら、サブスクリプションでホストせずに API としてモデルを使用する方法を提供します。

サーバーレス API エンドポイントへのデプロイでは、サブスクリプションからのクォータは必要ありません。 モデルがまだデプロイされていない場合は、Azure AI Studio、Azure Machine Learning SDK for Python、Azure CLI、または ARM テンプレートを使用して、モデルをサーバーレス API としてデプロイします。

セルフホステッド マネージド コンピューティングへのデプロイ

Meta Llama モデルは、Microsoft のセルフホステッド マネージド推論ソリューションにデプロイできます。これにより、モデルの提供方法に関するすべての詳細をカスタマイズおよび制御できます。

セルフホステッド マネージド コンピューティングにデプロイするには、サブスクリプションに十分なクォータが必要です。 十分なクォータを使用できない場合は、「共有クォータを使用するオプションを使用します。このエンドポイントは 168 時間以内に削除されることを確認します」オプションを選択することで、一時的なクォータ アクセスを使用できます。

インストールされている推論パッケージ

npm から @azure-rest/ai-inference パッケージを使用して、このモデルから予測を実行できます。 このパッケージをインストールするには、次の前提条件を満たす必要があります。

  • Node.js の LTS バージョン (npm を含む)
  • エンドポイント 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 を使用すると、Meta Llama モデルなど、同じコードと構造で Azure AI Studio にデプロイされたほとんどのモデルと対話できます。

モデルを実行するクライアントを作成する

まず、モデルを実行するクライアントを作成します。 次のコードでは、環境変数に格納されているエンドポイント 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()
);

Note

現在、サーバーレス 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: Meta-Llama-3.1-405B-Instruct
Model type: chat-completions
Model provider name: Meta

チャット入力候補要求を作成する

次の例に、モデルに対する基本的なチャット入力候補要求を作成する方法を示します。

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,
    }
});

応答は次のとおりです。モデルの使用状況の統計情報が表示されます。

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: Meta-Llama-3.1-405B-Instruct
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

応答の usage セクションを調べて、プロンプトに使用されたトークンの数、生成されたトークンの合計数、入力候補に使用されたトークンの数を確認します。

コンテンツのストリーミング

既定では、入力候補 API は生成されたコンテンツ全体を 1 つの応答で返します。 長い入力候補を生成する場合、応答が得られるまでに数秒かかることがあります。

コンテンツをストリーミングして、コンテンツが生成されるにつれ返されるようにできます。 コンテンツをストリーミングすると、コンテンツが使用可能になったときに入力候補の処理を開始できます。 このモードは、データのみのサーバー送信イベントとして応答をストリーム バックするオブジェクトを返します。 メッセージ フィールドではなく、デルタ フィールドからチャンクを抽出します。

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" },
    }
});

警告

Meta Llama モデルは、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
    }
});

Meta Llama モデルには、次の追加パラメーターを渡すことができます。

名前 Description Type
n プロンプトごとに生成する入力候補の数。 注: このパラメーターにより多くの入力候補が生成されるため、トークン クォータがすぐに消費される可能性があります。 integer
best_of サーバー側 best_of 入力候補を生成し、best (トークンあたりのログ確率が最低のもの) を返します。 結果をストリーミングすることはできません。 n と共に使用する場合、best_of で補完候補数を制御し、n には返す数を指定します。best_of は n より大きくする必要があります。 注: このパラメーターにより多くの入力候補が生成されるため、トークン クォータがすぐに消費される可能性があります。 integer
logprobs logprobs の最も可能性の高いトークンと、選択したトークンのログ確率を含めることを示す数値。 たとえば、logprobs が 10 の場合、API は可能性が最も高い 10 個のトークンの一覧を返します。 API は、常にサンプリングされたトークンの logprob を返します。そのため、応答には、最大 logprobs+ 1 要素が含まれている場合があります。 integer
ignore_eos EOS トークンを無視し、EOS トークンの生成後もトークンの生成を続行するかどうかを指定します。 boolean
use_beam_search サンプリングの代わりにビーム検索を使用するかどうかを指定します。 この場合、best_of は 1 より大きく、温度は 0 である必要があります。 boolean
stop_token_ids 生成されると、以降のトークンの生成を停止するトークンの ID の一覧。 返される出力には、停止トークンが特殊なトークンでない限り、停止トークンが含まれます。 array
skip_special_tokens 出力内の特別なトークンをスキップするかどうかを指定します。 boolean

コンテンツの安全性を適用する

Azure AI モデル推論 API は、Azure AI Content Safety をサポートしています。 Azure AI Content Safety をオンにしてデプロイを使用すると、入力と出力は、有害なコンテンツの出力を検出して防ぐことを目的とした一連の分類モデルを通過します。 コンテンツ フィルタリング (プレビュー) システムは、入力プロンプトと出力される入力候補の両方で、有害な可能性があるコンテンツ特有のカテゴリを検出し、アクションを実行します。

次の例に、モデルが入力プロンプトで有害なコンテンツを検出し、コンテンツの安全性が有効になっている場合にイベントを処理する方法を示しています。

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 Content Safety の設定を構成および制御する方法の詳細については、Azure AI Content Safety のドキュメントを参照してください。

Note

Azure AI Content Safety は、サーバーレス API エンドポイントとしてデプロイされたモデルでのみ利用できます。

Meta Llama モデル

Meta Llama モデルには、次のようなモデルが含まれます。

多言語大規模言語モデル (LLM) の Meta Llama 3.1 コレクションは、8B、70B、405B サイズ (テキスト入力/テキスト出力) の事前トレーニングおよびインストラクション チューニングされた生成モデルのコレクションです。 Llama 3.1 インストラクション チューニングされたテキストのみのモデル (8B、70B、405B) は、多言語対話のユース ケース向けに最適化されており、一般的な業界ベンチマークで使用できるオープンソース チャット モデルおよびクローズド モデルの多くを上回ります。

以下のモデルが使用可能です:

前提条件

Azure AI Studio で Meta Llama モデルを使用するには、次の前提条件を満たす必要があります。

モデル デプロイ

サーバーレス API へのデプロイ

Meta Llama モデルは、従量課金制でサーバーレス API エンドポイントにデプロイできます。 この種類のデプロイは、組織が必要とする企業レベルのセキュリティとコンプライアンスを維持しながら、サブスクリプションでホストせずに API としてモデルを使用する方法を提供します。

サーバーレス API エンドポイントへのデプロイでは、サブスクリプションからのクォータは必要ありません。 モデルがまだデプロイされていない場合は、Azure AI Studio、Azure Machine Learning SDK for Python、Azure CLI、または ARM テンプレートを使用して、モデルをサーバーレス API としてデプロイします。

セルフホステッド マネージド コンピューティングへのデプロイ

Meta Llama モデルは、Microsoft のセルフホステッド マネージド推論ソリューションにデプロイできます。これにより、モデルの提供方法に関するすべての詳細をカスタマイズおよび制御できます。

セルフホステッド マネージド コンピューティングにデプロイするには、サブスクリプションに十分なクォータが必要です。 十分なクォータを使用できない場合は、「共有クォータを使用するオプションを使用します。このエンドポイントは 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 を使用すると、Meta Llama チャット モデルなど、同じコードと構造で Azure AI Studio にデプロイされたほとんどのモデルと対話できます。

モデルを実行するクライアントを作成する

まず、モデルを実行するクライアントを作成します。 次のコードでは、環境変数に格納されているエンドポイント 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)
);

Note

現在、サーバーレス 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: Meta-Llama-3.1-405B-Instruct
Model type: chat-completions
Model provider name: Meta

チャット入力候補要求を作成する

次の例に、モデルに対する基本的なチャット入力候補要求を作成する方法を示します。

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);

応答は次のとおりです。モデルの使用状況の統計情報が表示されます。

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: Meta-Llama-3.1-405B-Instruct
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

応答の usage セクションを調べて、プロンプトに使用されたトークンの数、生成されたトークンの合計数、入力候補に使用されたトークンの数を確認します。

コンテンツのストリーミング

既定では、入力候補 API は生成されたコンテンツ全体を 1 つの応答で返します。 長い入力候補を生成する場合、応答が得られるまでに数秒かかることがあります。

コンテンツをストリーミングして、コンテンツが生成されるにつれ返されるようにできます。 コンテンツをストリーミングすると、コンテンツが使用可能になったときに入力候補の処理を開始できます。 このモードは、データのみのサーバー送信イベントとして応答をストリーム バックするオブジェクトを返します。 メッセージ フィールドではなく、デルタ フィールドからチャンクを抽出します。

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}");

警告

Meta Llama モデルは、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}");

Meta Llama モデルには、次の追加パラメーターを渡すことができます。

名前 Description Type
n プロンプトごとに生成する入力候補の数。 注: このパラメーターにより多くの入力候補が生成されるため、トークン クォータがすぐに消費される可能性があります。 integer
best_of サーバー側 best_of 入力候補を生成し、best (トークンあたりのログ確率が最低のもの) を返します。 結果をストリーミングすることはできません。 n と共に使用する場合、best_of で補完候補数を制御し、n には返す数を指定します。best_of は n より大きくする必要があります。 注: このパラメーターにより多くの入力候補が生成されるため、トークン クォータがすぐに消費される可能性があります。 integer
logprobs logprobs の最も可能性の高いトークンと、選択したトークンのログ確率を含めることを示す数値。 たとえば、logprobs が 10 の場合、API は可能性が最も高い 10 個のトークンの一覧を返します。 API は、常にサンプリングされたトークンの logprob を返します。そのため、応答には、最大 logprobs+ 1 要素が含まれている場合があります。 integer
ignore_eos EOS トークンを無視し、EOS トークンの生成後もトークンの生成を続行するかどうかを指定します。 boolean
use_beam_search サンプリングの代わりにビーム検索を使用するかどうかを指定します。 この場合、best_of は 1 より大きく、温度は 0 である必要があります。 boolean
stop_token_ids 生成されると、以降のトークンの生成を停止するトークンの ID の一覧。 返される出力には、停止トークンが特殊なトークンでない限り、停止トークンが含まれます。 array
skip_special_tokens 出力内の特別なトークンをスキップするかどうかを指定します。 boolean

コンテンツの安全性を適用する

Azure AI モデル推論 API は、Azure AI Content Safety をサポートしています。 Azure AI Content Safety をオンにしてデプロイを使用すると、入力と出力は、有害なコンテンツの出力を検出して防ぐことを目的とした一連の分類モデルを通過します。 コンテンツ フィルタリング (プレビュー) システムは、入力プロンプトと出力される入力候補の両方で、有害な可能性があるコンテンツ特有のカテゴリを検出し、アクションを実行します。

次の例に、モデルが入力プロンプトで有害なコンテンツを検出し、コンテンツの安全性が有効になっている場合にイベントを処理する方法を示しています。

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 Content Safety の設定を構成および制御する方法の詳細については、Azure AI Content Safety のドキュメントを参照してください。

Note

Azure AI Content Safety は、サーバーレス API エンドポイントとしてデプロイされたモデルでのみ利用できます。

Meta Llama チャット モデル

Meta Llama チャット モデルには、次のようなモデルが含まれます。

多言語大規模言語モデル (LLM) の Meta Llama 3.1 コレクションは、8B、70B、405B サイズ (テキスト入力/テキスト出力) の事前トレーニングおよびインストラクション チューニングされた生成モデルのコレクションです。 Llama 3.1 インストラクション チューニングされたテキストのみのモデル (8B、70B、405B) は、多言語対話のユース ケース向けに最適化されており、一般的な業界ベンチマークで使用できるオープン ソース チャット モデルおよびクローズド チャット モデルの多くを上回ります。

以下のモデルが使用可能です:

前提条件

Azure AI Studio で Meta Llama モデルを使用するには、次の前提条件を満たす必要があります。

モデル デプロイ

サーバーレス API へのデプロイ

Meta Llama チャット モデルは、従量課金制でサーバーレス API エンドポイントにデプロイできます。 この種類のデプロイは、組織が必要とする企業レベルのセキュリティとコンプライアンスを維持しながら、サブスクリプションでホストせずに API としてモデルを使用する方法を提供します。

サーバーレス API エンドポイントへのデプロイでは、サブスクリプションからのクォータは必要ありません。 モデルがまだデプロイされていない場合は、Azure AI Studio、Azure Machine Learning SDK for Python、Azure CLI、または ARM テンプレートを使用して、モデルをサーバーレス API としてデプロイします。

セルフホステッド マネージド コンピューティングへのデプロイ

Meta Llama モデルは、Microsoft のセルフホステッド マネージド推論ソリューションにデプロイできます。これにより、モデルの提供方法に関するすべての詳細をカスタマイズおよび制御できます。

セルフホステッド マネージド コンピューティングにデプロイするには、サブスクリプションに十分なクォータが必要です。 十分なクォータを使用できない場合は、「共有クォータを使用するオプションを使用します。このエンドポイントは 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 を使用すると、Meta Llama チャット モデルなど、同じコードと構造で Azure AI Studio にデプロイされたほとんどのモデルと対話できます。

モデルを実行するクライアントを作成する

まず、モデルを実行するクライアントを作成します。 次のコードでは、環境変数に格納されているエンドポイント URL とキーを使用しています。

Microsoft Entra ID をサポートするセルフホステッド オンライン エンドポイントにモデルをデプロイする場合、次のコード スニペットを使用してクライアントを作成できます。

Note

現在、サーバーレス API エンドポイントでは、認証に Microsoft Entra ID を使用することはサポートされていません。

モデルの機能を取得する

/info ルートは、エンドポイントにデプロイされたモデルに関する情報を返します。 次のメソッドを呼び出してモデルの情報を返します。

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

応答は次のとおりです。

{
    "model_name": "Meta-Llama-3.1-405B-Instruct",
    "model_type": "chat-completions",
    "model_provider_name": "Meta"
}

チャット入力候補要求を作成する

次の例に、モデルに対する基本的なチャット入力候補要求を作成する方法を示します。

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

応答は次のとおりです。モデルの使用状況の統計情報が表示されます。

{
    "id": "0a1234b5de6789f01gh2i345j6789klm",
    "object": "chat.completion",
    "created": 1718726686,
    "model": "Meta-Llama-3.1-405B-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 は生成されたコンテンツ全体を 1 つの応答で返します。 長い入力候補を生成する場合、応答が得られるまでに数秒かかることがあります。

コンテンツをストリーミングして、コンテンツが生成されるにつれ返されるようにできます。 コンテンツをストリーミングすると、コンテンツが使用可能になったときに入力候補の処理を開始できます。 このモードは、データのみのサーバー送信イベントとして応答をストリーム バックするオブジェクトを返します。 メッセージ フィールドではなく、デルタ フィールドからチャンクを抽出します。

{
    "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": "Meta-Llama-3.1-405B-Instruct",
    "choices": [
        {
            "index": 0,
            "delta": {
                "role": "assistant",
                "content": ""
            },
            "finish_reason": null,
            "logprobs": null
        }
    ]
}

ストリーム内の最後のメッセージには、生成プロセスが停止した理由を示す finish_reason が設定されています。

{
    "id": "23b54589eba14564ad8a2e6978775a39",
    "object": "chat.completion.chunk",
    "created": 1718726371,
    "model": "Meta-Llama-3.1-405B-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": "Meta-Llama-3.1-405B-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
    }
}

警告

Meta Llama モデルは、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
}

Meta Llama チャット モデルには、次の追加パラメーターを渡すことができます。

名前 Description Type
n プロンプトごとに生成する入力候補の数。 注: このパラメーターにより多くの入力候補が生成されるため、トークン クォータがすぐに消費される可能性があります。 integer
best_of サーバー側 best_of 入力候補を生成し、best (トークンあたりのログ確率が最低のもの) を返します。 結果をストリーミングすることはできません。 n と共に使用する場合、best_of で補完候補数を制御し、n には返す数を指定します。best_of は n より大きくする必要があります。 注: このパラメーターにより多くの入力候補が生成されるため、トークン クォータがすぐに消費される可能性があります。 integer
logprobs logprobs の最も可能性の高いトークンと、選択したトークンのログ確率を含めることを示す数値。 たとえば、logprobs が 10 の場合、API は可能性が最も高い 10 個のトークンの一覧を返します。 API は、常にサンプリングされたトークンの logprob を返します。そのため、応答には、最大 logprobs+ 1 要素が含まれている場合があります。 integer
ignore_eos EOS トークンを無視し、EOS トークンの生成後もトークンの生成を続行するかどうかを指定します。 boolean
use_beam_search サンプリングの代わりにビーム検索を使用するかどうかを指定します。 この場合、best_of は 1 より大きく、温度は 0 である必要があります。 boolean
stop_token_ids 生成されると、以降のトークンの生成を停止するトークンの ID の一覧。 返される出力には、停止トークンが特殊なトークンでない限り、停止トークンが含まれます。 array
skip_special_tokens 出力内の特別なトークンをスキップするかどうかを指定します。 boolean

コンテンツの安全性を適用する

Azure AI モデル推論 API は、Azure AI Content Safety をサポートしています。 Azure AI Content Safety をオンにしてデプロイを使用すると、入力と出力は、有害なコンテンツの出力を検出して防ぐことを目的とした一連の分類モデルを通過します。 コンテンツ フィルタリング (プレビュー) システムは、入力プロンプトと出力される入力候補の両方で、有害な可能性があるコンテンツ特有のカテゴリを検出し、アクションを実行します。

次の例に、モデルが入力プロンプトで有害なコンテンツを検出し、コンテンツの安全性が有効になっている場合にイベントを処理する方法を示しています。

{
    "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 Content Safety の設定を構成および制御する方法の詳細については、Azure AI Content Safety のドキュメントを参照してください。

Note

Azure AI Content Safety は、サーバーレス API エンドポイントとしてデプロイされたモデルでのみ利用できます。

推論のその他の例

Meta Llama モデルの使用方法のその他の例については、次の例とチュートリアルを参照してください。

説明 Language サンプル
CURL 要求 Bash リンク
JavaScript 用 Azure AI 推論パッケージ JavaScript リンク
Python 用 Azure AI 推論パッケージ Python リンク
Python Web 要求 Python リンク
OpenAI SDK (試験段階) Python リンク
LangChain Python リンク
LiteLLM Python リンク

サーバーレス API エンドポイントとしてデプロイされる Meta Llama モデルのコストとクォータに関する考慮事項

クォータはデプロイごとに管理されます。 各デプロイのレート制限は、1 分あたり 200,000 トークン、1 分あたり 1,000 個の API 要求です。 ただし、現在、プロジェクトのモデルごとに 1 つのデプロイに制限しています。 現在のレート制限がシナリオに十分でない場合は、Microsoft Azure サポートにお問い合わせください。

サーバーレス API としてデプロイされた Meta Llama モデルは、Azure Marketplace を通じて Meta によって提供され、使用するために Azure AI Studio と統合されます。 モデルをデプロイするときに、Azure Marketplace の価格を確認できます。

プロジェクトが Azure Marketplace から特定のオファーにサブスクライブするたびに、その消費に関連するコストを追跡するための新しいリソースが作成されます。 推論に関連するコストを追跡するために同じリソースが使用されますが、各シナリオを個別に追跡するために複数の測定値を使用できます。

コストを追跡する方法の詳細については、「Azure Marketplace を通じて提供されるモデルのコストを監視する」を参照してください。

マネージド コンピューティングにデプロイされる Meta Llama モデルのコストとクォータに関する考慮事項

マネージド コンピューティングにデプロイされた Meta Llama モデルは、関連するコンピューティング インスタンスのコア時間に基づいて課金されます。 コンピューティング インスタンスのコストは、インスタンスのサイズ、実行中のインスタンス数、実行期間によって決まります。

少ないインスタンス数で開始し、必要に応じてスケールアップすることをお勧めします。 Azure portal でコンピューティング インスタンスのコストを監視できます。