Поделиться через


Использование моделей семейного чата Phi-3

Внимание

Некоторые функции, описанные в этой статье, могут быть доступны только в предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

В этой статье вы узнаете о моделях семейного чата Phi-3 и их использовании. Семейство небольших языковых моделей (SLM) Phi-3 — это коллекция моделей сгенерируемыми инструкциями текстовых моделей.

Модели семейного чата Phi-3

Модели семейного чата Phi-3 включают следующие модели:

Модели Phi-3.5 являются упрощенными, открытыми моделями. Эти модели были обучены с помощью наборов данных Phi-3, которые включают как искусственные данные, так и отфильтрованные, общедоступные данные веб-сайтов, с акцентом на высококачественные и обоснованные свойства.

Phi-3.5 Mini использует параметры 3,8B и является плотной моделью преобразователя только декодировщика с использованием того же токенизатора, что и Phi-3 Mini.

Phi-3.5 MoE (смесь эксперта) использует параметры 16x3.8B с активными параметрами 6,6B при использовании 2 экспертов. Модель — это модель преобразователя, доступная только для декодирования эксперта, с использованием токенизатора с размером словаря 32 064.

Модели прошли строгий процесс усовершенствования, включив как контролируемые тонкой настройки, оптимизацию проксимальной политики, так и прямую оптимизацию предпочтений, чтобы обеспечить точное соблюдение инструкций и надежные меры безопасности. При оценке на основе эталонных показателей, которые проверяют здравый смысл, распознавание речи, математику, код, длинный контекст и логическую причину, модели Phi-3.5 демонстрируют надежную и высокую производительность среди моделей с менее чем 13 миллиардами параметров.

Модели Phi-3.5 представлены в следующих вариантах, при этом варианты имеют длину контекста (в токенах) 128K.

Доступны следующие модели:

Необходимые компоненты

Чтобы использовать модели семейного чата Phi-3 с Azure AI Studio, вам потребуется следующее:

Развертывание модели

Развертывание в бессерверных API

Модели семейного чата Phi-3 можно развернуть на бессерверных конечных точках API с выставлением счетов по мере использования. Такой тип развертывания позволяет использовать модели в качестве API без размещения их в подписке, сохраняя корпоративную безопасность и соответствие требованиям, необходимым организациям.

Развертывание в конечной точке API без сервера не требует квоты из подписки. Если модель еще не развернута, используйте Azure AI Studio, Машинное обучение Azure ПАКЕТ SDK для Python, 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. Ключ представляет собой 32-символьную строку.

После получения этих предварительных требований установите пакет вывода искусственного интеллекта Azure с помощью следующей команды:

pip install azure-ai-inference

Дополнительные сведения о пакете вывода и справочнике по выводу искусственного интеллекта Azure.

Работа с завершением чата

В этом разделе описано, как использовать API вывода модели ИИ Azure с моделью завершения чата для чата.

Совет

API вывода модели ИИ Azure позволяет взаимодействовать с большинством моделей, развернутых в 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 можно использовать следующий фрагмент кода для создания клиента.

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 для проверки подлинности.

Получение возможностей модели

Маршрут /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"). При использовании API вывода модели искусственного интеллекта Azure системные сообщения переводятся в сообщения пользователей, что является наиболее доступной возможностью. Этот перевод предлагается для удобства, но важно убедиться, что модель выполняет инструкции в системном сообщении с правильным уровнем достоверности.

Ответ выглядит следующим образом, где можно просмотреть статистику использования модели:

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)

Дополнительные параметры, поддерживаемые клиентом вывода

Изучите другие параметры, которые можно указать в клиенте вывода. Полный список всех поддерживаемых параметров и их соответствующей документации см . в справочнике по API вывода модели ИИ Azure.

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.

Если вы хотите передать параметр, который отсутствует в списке поддерживаемых параметров, его можно передать в базовую модель с помощью дополнительных параметров. Дополнительные параметры см. в разделе "Передача дополнительных параметров в модель".

Передача дополнительных параметров модели

API вывода модели ИИ Azure позволяет передавать дополнительные параметры модели в модель. В следующем примере кода показано, как передать дополнительный параметр logprobs модели.

Перед передачей дополнительных параметров в API вывода модели ИИ Azure убедитесь, что ваша модель поддерживает эти дополнительные параметры. Когда запрос выполняется в базовую модель, заголовок 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, возвращает вероятности журнала каждого выходного маркера, возвращаемого в параметре content message. int
top_logprobs Целое число от 0 до 20, указывающее число наиболее вероятных маркеров, возвращаемых по каждой позиции маркера, каждый из которых имеет связанную вероятность журнала. logprobs Необходимо задать значение true , если этот параметр используется. float
n Сколько вариантов завершения чата для каждого входного сообщения. Обратите внимание, что плата будет взиматься на основе количества созданных маркеров во всех вариантах. int

Применение безопасности содержимого

API вывода модели ИИ Azure поддерживает безопасность содержимого ИИ Azure. При использовании развертываний с включенной безопасностью содержимого искусственного интеллекта Azure входные и выходные данные проходят через ансамбль моделей классификации, направленных на обнаружение и предотвращение вывода вредного содержимого. Система фильтрации содержимого обнаруживает и принимает меры по определенным категориям потенциально вредного содержимого как в запросах ввода, так и в завершении выходных данных.

В следующем примере показано, как обрабатывать события, когда модель обнаруживает вредное содержимое во входном запросе и включена безопасность содержимого.

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 см. в документации по безопасности содержимого ИИ Azure.

Примечание.

Безопасность содержимого ИИ Azure доступна только для моделей, развернутых в качестве конечных точек API без сервера.

Модели семейного чата Phi-3

Модели семейного чата Phi-3 включают следующие модели:

Модели Phi-3.5 являются упрощенными, открытыми моделями. Эти модели были обучены с помощью наборов данных Phi-3, которые включают как искусственные данные, так и отфильтрованные, общедоступные данные веб-сайтов, с акцентом на высококачественные и обоснованные свойства.

Phi-3.5 Mini использует параметры 3,8B и является плотной моделью преобразователя только декодировщика с использованием того же токенизатора, что и Phi-3 Mini.

Phi-3.5 MoE (смесь эксперта) использует параметры 16x3.8B с активными параметрами 6,6B при использовании 2 экспертов. Модель — это модель преобразователя, доступная только для декодирования эксперта, с использованием токенизатора с размером словаря 32 064.

Модели прошли строгий процесс усовершенствования, включив как контролируемые тонкой настройки, оптимизацию проксимальной политики, так и прямую оптимизацию предпочтений, чтобы обеспечить точное соблюдение инструкций и надежные меры безопасности. При оценке на основе эталонных показателей, которые проверяют здравый смысл, распознавание речи, математику, код, длинный контекст и логическую причину, модели Phi-3.5 демонстрируют надежную и высокую производительность среди моделей с менее чем 13 миллиардами параметров.

Модели Phi-3.5 представлены в следующих вариантах, при этом варианты имеют длину контекста (в токенах) 128K.

Доступны следующие модели:

Необходимые компоненты

Чтобы использовать модели семейного чата Phi-3 с Azure AI Studio, вам потребуется следующее:

Развертывание модели

Развертывание в бессерверных API

Модели семейного чата Phi-3 можно развернуть на бессерверных конечных точках API с выставлением счетов по мере использования. Такой тип развертывания позволяет использовать модели в качестве API без размещения их в подписке, сохраняя корпоративную безопасность и соответствие требованиям, необходимым организациям.

Развертывание в конечной точке API без сервера не требует квоты из подписки. Если модель еще не развернута, используйте Azure AI Studio, Машинное обучение Azure ПАКЕТ SDK для Python, Azure CLI или шаблоны ARM для развертывания модели в качестве бессерверного API.

Развертывание в локальном управляемом вычислении

Модели семейного чата Phi-3 можно развернуть в нашем локальном решении для вывода, которое позволяет настраивать и контролировать все сведения о том, как работает модель.

Для развертывания в локальном управляемом вычислении необходимо иметь достаточную квоту в подписке. Если у вас нет достаточной квоты, вы можете использовать доступ к временной квоте, выбрав параметр , который я хочу использовать общую квоту, и я признаю, что эта конечная точка будет удалена в 168 часов.

Установленный пакет вывода

Прогнозы из этой модели можно использовать с помощью @azure-rest/ai-inference пакета npm. Чтобы установить этот пакет, вам потребуется следующее:

  • Версии LTS Node.js с 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. Ключ представляет собой 32-символьную строку.

После получения этих предварительных требований установите библиотеку вывода Azure для JavaScript с помощью следующей команды:

npm install @azure-rest/ai-inference

Работа с завершением чата

В этом разделе описано, как использовать API вывода модели ИИ Azure с моделью завершения чата для чата.

Совет

API вывода модели ИИ Azure позволяет взаимодействовать с большинством моделей, развернутых в Azure AI Studio, с тем же кодом и структурой, включая модели семейного чата 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 можно использовать следующий фрагмент кода для создания клиента.

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 для проверки подлинности.

Получение возможностей модели

Маршрут /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"). При использовании API вывода модели искусственного интеллекта Azure системные сообщения переводятся в сообщения пользователей, что является наиболее доступной возможностью. Этот перевод предлагается для удобства, но важно убедиться, что модель выполняет инструкции в системном сообщении с правильным уровнем достоверности.

Ответ выглядит следующим образом, где можно просмотреть статистику использования модели:

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

Дополнительные параметры, поддерживаемые клиентом вывода

Изучите другие параметры, которые можно указать в клиенте вывода. Полный список всех поддерживаемых параметров и их соответствующей документации см . в справочнике по API вывода модели ИИ Azure.

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.

Если вы хотите передать параметр, который отсутствует в списке поддерживаемых параметров, его можно передать в базовую модель с помощью дополнительных параметров. Дополнительные параметры см. в разделе "Передача дополнительных параметров в модель".

Передача дополнительных параметров модели

API вывода модели ИИ Azure позволяет передавать дополнительные параметры модели в модель. В следующем примере кода показано, как передать дополнительный параметр logprobs модели.

Перед передачей дополнительных параметров в API вывода модели ИИ Azure убедитесь, что ваша модель поддерживает эти дополнительные параметры. Когда запрос выполняется в базовую модель, заголовок 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, возвращает вероятности журнала каждого выходного маркера, возвращаемого в параметре content message. int
top_logprobs Целое число от 0 до 20, указывающее число наиболее вероятных маркеров, возвращаемых по каждой позиции маркера, каждый из которых имеет связанную вероятность журнала. logprobs Необходимо задать значение true , если этот параметр используется. float
n Сколько вариантов завершения чата для каждого входного сообщения. Обратите внимание, что плата будет взиматься на основе количества созданных маркеров во всех вариантах. int

Применение безопасности содержимого

API вывода модели ИИ Azure поддерживает безопасность содержимого ИИ Azure. При использовании развертываний с включенной безопасностью содержимого искусственного интеллекта Azure входные и выходные данные проходят через ансамбль моделей классификации, направленных на обнаружение и предотвращение вывода вредного содержимого. Система фильтрации содержимого обнаруживает и принимает меры по определенным категориям потенциально вредного содержимого как в запросах ввода, так и в завершении выходных данных.

В следующем примере показано, как обрабатывать события, когда модель обнаруживает вредное содержимое во входном запросе и включена безопасность содержимого.

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 см. в документации по безопасности содержимого ИИ Azure.

Примечание.

Безопасность содержимого ИИ Azure доступна только для моделей, развернутых в качестве конечных точек API без сервера.

Модели семейного чата Phi-3

Модели семейного чата Phi-3 включают следующие модели:

Модели Phi-3.5 являются упрощенными, открытыми моделями. Эти модели были обучены с помощью наборов данных Phi-3, которые включают как искусственные данные, так и отфильтрованные, общедоступные данные веб-сайтов, с акцентом на высококачественные и обоснованные свойства.

Phi-3.5 Mini использует параметры 3,8B и является плотной моделью преобразователя только декодировщика с использованием того же токенизатора, что и Phi-3 Mini.

Phi-3.5 MoE (смесь эксперта) использует параметры 16x3.8B с активными параметрами 6,6B при использовании 2 экспертов. Модель — это модель преобразователя, доступная только для декодирования эксперта, с использованием токенизатора с размером словаря 32 064.

Модели прошли строгий процесс усовершенствования, включив как контролируемые тонкой настройки, оптимизацию проксимальной политики, так и прямую оптимизацию предпочтений, чтобы обеспечить точное соблюдение инструкций и надежные меры безопасности. При оценке на основе эталонных показателей, которые проверяют здравый смысл, распознавание речи, математику, код, длинный контекст и логическую причину, модели Phi-3.5 демонстрируют надежную и высокую производительность среди моделей с менее чем 13 миллиардами параметров.

Модели Phi-3.5 представлены в следующих вариантах, при этом варианты имеют длину контекста (в токенах) 128K.

Доступны следующие модели:

Необходимые компоненты

Чтобы использовать модели семейного чата Phi-3 с Azure AI Studio, вам потребуется следующее:

Развертывание модели

Развертывание в бессерверных API

Модели семейного чата Phi-3 можно развернуть на бессерверных конечных точках API с выставлением счетов по мере использования. Такой тип развертывания позволяет использовать модели в качестве API без размещения их в подписке, сохраняя корпоративную безопасность и соответствие требованиям, необходимым организациям.

Развертывание в конечной точке API без сервера не требует квоты из подписки. Если модель еще не развернута, используйте Azure AI Studio, Машинное обучение Azure ПАКЕТ SDK для Python, Azure CLI или шаблоны ARM для развертывания модели в качестве бессерверного API.

Развертывание в локальном управляемом вычислении

Модели семейного чата Phi-3 можно развернуть в нашем локальном решении для вывода, которое позволяет настраивать и контролировать все сведения о том, как работает модель.

Для развертывания в локальном управляемом вычислении необходимо иметь достаточную квоту в подписке. Если у вас нет достаточной квоты, вы можете использовать доступ к временной квоте, выбрав параметр , который я хочу использовать общую квоту, и я признаю, что эта конечная точка будет удалена в 168 часов.

Установленный пакет вывода

Прогнозы из этой модели можно использовать с помощью Azure.AI.Inference пакета из NuGet. Чтобы установить этот пакет, вам потребуется следующее:

  • URL-адрес конечной точки. Для создания клиентской библиотеки необходимо передать URL-адрес конечной точки. URL-адрес конечной точки имеет форму https://your-host-name.your-azure-region.inference.ai.azure.com, где your-host-name находится уникальное имя узла развертывания модели и your-azure-region является регионом Azure, в котором развернута модель (например, eastus2).
  • В зависимости от предпочтений развертывания и проверки подлинности модели вам потребуется ключ для проверки подлинности в службе или учетных данных идентификатора Microsoft Entra. Ключ представляет собой 32-символьную строку.

После получения этих предварительных требований установите библиотеку вывода искусственного интеллекта Azure с помощью следующей команды:

dotnet add package Azure.AI.Inference --prerelease

Вы также можете пройти проверку подлинности с помощью идентификатора Microsoft Entra (ранее — Azure Active Directory). Чтобы использовать поставщики учетных данных, предоставляемые пакетом SDK Для Azure, установите 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;

Работа с завершением чата

В этом разделе описано, как использовать API вывода модели ИИ Azure с моделью завершения чата для чата.

Совет

API вывода модели ИИ Azure позволяет взаимодействовать с большинством моделей, развернутых в Azure AI Studio, с тем же кодом и структурой, включая модели семейного чата Phi-3.

Создание клиента для использования модели

Сначала создайте клиент для использования модели. В следующем коде используется URL-адрес конечной точки и ключ, хранящиеся в переменных среды.

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

При развертывании модели в локальной сетевой конечной точке с поддержкой Идентификатора Microsoft Entra можно использовать следующий фрагмент кода для создания клиента.

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

Примечание.

В настоящее время конечные точки API без сервера не поддерживают использование идентификатора Microsoft Entra для проверки подлинности.

Получение возможностей модели

Маршрут /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"). При использовании API вывода модели искусственного интеллекта Azure системные сообщения переводятся в сообщения пользователей, что является наиболее доступной возможностью. Этот перевод предлагается для удобства, но важно убедиться, что модель выполняет инструкции в системном сообщении с правильным уровнем достоверности.

Ответ выглядит следующим образом, где можно просмотреть статистику использования модели:

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

Дополнительные параметры, поддерживаемые клиентом вывода

Изучите другие параметры, которые можно указать в клиенте вывода. Полный список всех поддерживаемых параметров и их соответствующей документации см . в справочнике по API вывода модели ИИ Azure.

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.

Если вы хотите передать параметр, который отсутствует в списке поддерживаемых параметров, его можно передать в базовую модель с помощью дополнительных параметров. Дополнительные параметры см. в разделе "Передача дополнительных параметров в модель".

Передача дополнительных параметров модели

API вывода модели ИИ Azure позволяет передавать дополнительные параметры модели в модель. В следующем примере кода показано, как передать дополнительный параметр logprobs модели.

Перед передачей дополнительных параметров в API вывода модели ИИ Azure убедитесь, что ваша модель поддерживает эти дополнительные параметры. Когда запрос выполняется в базовую модель, заголовок 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, возвращает вероятности журнала каждого выходного маркера, возвращаемого в параметре content message. int
top_logprobs Целое число от 0 до 20, указывающее число наиболее вероятных маркеров, возвращаемых по каждой позиции маркера, каждый из которых имеет связанную вероятность журнала. logprobs Необходимо задать значение true , если этот параметр используется. float
n Сколько вариантов завершения чата для каждого входного сообщения. Обратите внимание, что плата будет взиматься на основе количества созданных маркеров во всех вариантах. int

Применение безопасности содержимого

API вывода модели ИИ Azure поддерживает безопасность содержимого ИИ Azure. При использовании развертываний с включенной безопасностью содержимого искусственного интеллекта Azure входные и выходные данные проходят через ансамбль моделей классификации, направленных на обнаружение и предотвращение вывода вредного содержимого. Система фильтрации содержимого обнаруживает и принимает меры по определенным категориям потенциально вредного содержимого как в запросах ввода, так и в завершении выходных данных.

В следующем примере показано, как обрабатывать события, когда модель обнаруживает вредное содержимое во входном запросе и включена безопасность содержимого.

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 см. в документации по безопасности содержимого ИИ Azure.

Примечание.

Безопасность содержимого ИИ Azure доступна только для моделей, развернутых в качестве конечных точек API без сервера.

Модели семейного чата Phi-3

Модели семейного чата Phi-3 включают следующие модели:

Модели Phi-3.5 являются упрощенными, открытыми моделями. Эти модели были обучены с помощью наборов данных Phi-3, которые включают как искусственные данные, так и отфильтрованные, общедоступные данные веб-сайтов, с акцентом на высококачественные и обоснованные свойства.

Phi-3.5 Mini использует параметры 3,8B и является плотной моделью преобразователя только декодировщика с использованием того же токенизатора, что и Phi-3 Mini.

Phi-3.5 MoE (смесь эксперта) использует параметры 16x3.8B с активными параметрами 6,6B при использовании 2 экспертов. Модель — это модель преобразователя, доступная только для декодирования эксперта, с использованием токенизатора с размером словаря 32 064.

Модели прошли строгий процесс усовершенствования, включив как контролируемые тонкой настройки, оптимизацию проксимальной политики, так и прямую оптимизацию предпочтений, чтобы обеспечить точное соблюдение инструкций и надежные меры безопасности. При оценке на основе эталонных показателей, которые проверяют здравый смысл, распознавание речи, математику, код, длинный контекст и логическую причину, модели Phi-3.5 демонстрируют надежную и высокую производительность среди моделей с менее чем 13 миллиардами параметров.

Модели Phi-3.5 представлены в следующих вариантах, при этом варианты имеют длину контекста (в токенах) 128K.

Доступны следующие модели:

Необходимые компоненты

Чтобы использовать модели семейного чата Phi-3 с Azure AI Studio, вам потребуется следующее:

Развертывание модели

Развертывание в бессерверных API

Модели семейного чата Phi-3 можно развернуть на бессерверных конечных точках API с выставлением счетов по мере использования. Такой тип развертывания позволяет использовать модели в качестве API без размещения их в подписке, сохраняя корпоративную безопасность и соответствие требованиям, необходимым организациям.

Развертывание в конечной точке API без сервера не требует квоты из подписки. Если модель еще не развернута, используйте Azure AI Studio, Машинное обучение Azure ПАКЕТ SDK для Python, Azure CLI или шаблоны ARM для развертывания модели в качестве бессерверного API.

Развертывание в локальном управляемом вычислении

Модели семейного чата Phi-3 можно развернуть в нашем локальном решении для вывода, которое позволяет настраивать и контролировать все сведения о том, как работает модель.

Для развертывания в локальном управляемом вычислении необходимо иметь достаточную квоту в подписке. Если у вас нет достаточной квоты, вы можете использовать доступ к временной квоте, выбрав параметр , который я хочу использовать общую квоту, и я признаю, что эта конечная точка будет удалена в 168 часов.

Клиент REST

Модели, развернутые с помощью API вывода модели ИИ Azure, можно использовать с помощью любого клиента REST. Чтобы использовать клиент REST, необходимо выполнить следующие предварительные требования:

  • Чтобы создать запросы, необходимо передать URL-адрес конечной точки. URL-адрес конечной точки имеет форму https://your-host-name.your-azure-region.inference.ai.azure.com, где ваш регион Azure — регион Azure, в котором your-host-name`` is your unique model deployment host name and развернута модель (например, eastus2).
  • В зависимости от предпочтений развертывания и проверки подлинности модели вам потребуется ключ для проверки подлинности в службе или учетных данных идентификатора Microsoft Entra. Ключ представляет собой 32-символьную строку.

Работа с завершением чата

В этом разделе описано, как использовать API вывода модели ИИ Azure с моделью завершения чата для чата.

Совет

API вывода модели ИИ Azure позволяет взаимодействовать с большинством моделей, развернутых в Azure AI Studio, с тем же кодом и структурой, включая модели семейного чата Phi-3.

Создание клиента для использования модели

Сначала создайте клиент для использования модели. В следующем коде используется URL-адрес конечной точки и ключ, хранящиеся в переменных среды.

При развертывании модели в локальной сетевой конечной точке с поддержкой Идентификатора Microsoft Entra можно использовать следующий фрагмент кода для создания клиента.

Примечание.

В настоящее время конечные точки API без сервера не поддерживают использование идентификатора Microsoft Entra для проверки подлинности.

Получение возможностей модели

Маршрут /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"). При использовании API вывода модели искусственного интеллекта Azure системные сообщения переводятся в сообщения пользователей, что является наиболее доступной возможностью. Этот перевод предлагается для удобства, но важно убедиться, что модель выполняет инструкции в системном сообщении с правильным уровнем достоверности.

Ответ выглядит следующим образом, где можно просмотреть статистику использования модели:

{
    "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
    }
}

Дополнительные параметры, поддерживаемые клиентом вывода

Изучите другие параметры, которые можно указать в клиенте вывода. Полный список всех поддерживаемых параметров и их соответствующей документации см . в справочнике по API вывода модели ИИ Azure.

{
    "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.

Если вы хотите передать параметр, который отсутствует в списке поддерживаемых параметров, его можно передать в базовую модель с помощью дополнительных параметров. Дополнительные параметры см. в разделе "Передача дополнительных параметров в модель".

Передача дополнительных параметров модели

API вывода модели ИИ Azure позволяет передавать дополнительные параметры модели в модель. В следующем примере кода показано, как передать дополнительный параметр logprobs модели.

Перед передачей дополнительных параметров в API вывода модели ИИ Azure убедитесь, что ваша модель поддерживает эти дополнительные параметры. Когда запрос выполняется в базовую модель, заголовок 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, возвращает вероятности журнала каждого выходного маркера, возвращаемого в параметре content message. int
top_logprobs Целое число от 0 до 20, указывающее число наиболее вероятных маркеров, возвращаемых по каждой позиции маркера, каждый из которых имеет связанную вероятность журнала. logprobs Необходимо задать значение true , если этот параметр используется. float
n Сколько вариантов завершения чата для каждого входного сообщения. Обратите внимание, что плата будет взиматься на основе количества созданных маркеров во всех вариантах. int

Применение безопасности содержимого

API вывода модели ИИ Azure поддерживает безопасность содержимого ИИ Azure. При использовании развертываний с включенной безопасностью содержимого искусственного интеллекта Azure входные и выходные данные проходят через ансамбль моделей классификации, направленных на обнаружение и предотвращение вывода вредного содержимого. Система фильтрации содержимого обнаруживает и принимает меры по определенным категориям потенциально вредного содержимого как в запросах ввода, так и в завершении выходных данных.

В следующем примере показано, как обрабатывать события, когда модель обнаруживает вредное содержимое во входном запросе и включена безопасность содержимого.

{
    "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 см. в документации по безопасности содержимого ИИ Azure.

Примечание.

Безопасность содержимого ИИ Azure доступна только для моделей, развернутых в качестве конечных точек API без сервера.

Дополнительные примеры вывода

Дополнительные примеры использования семейных моделей Phi-3 см. в следующих примерах и руководствах.

Описание Language Пример
Запрос CURL Bash Ссылка
Пакет вывода искусственного интеллекта Azure для JavaScript JavaScript Ссылка
Пакет вывода искусственного интеллекта Azure для Python Python Ссылка
Веб-запросы Python Python Ссылка
Пакет SDK OpenAI (экспериментальный) Python Ссылка
LangChain Python Ссылка
LiteLLM Python Ссылка

Рекомендации по затратам и квотам для моделей семейства Phi-3, развернутых в качестве конечных точек API без сервера

Квота изменяется для каждого развертывания. Каждое развертывание имеет ограничение трафика в 200 000 токенов в минуту и 1000 запросов API в минуту. Однако в настоящее время мы ограничиваем одно развертывание на одну модель для одного проекта. Обратитесь в службу поддержки Microsoft Azure, если текущие ограничения трафика недостаточны для ваших сценариев.

Рекомендации по затратам и квотам для моделей семейства Phi-3, развернутых для управляемых вычислений

Модели семейства Phi-3, развернутые для управляемых вычислений, выставляются на основе основных часов связанного вычислительного экземпляра. Стоимость вычислительного экземпляра определяется размером экземпляра, количеством запущенных экземпляров и длительностью выполнения.

Рекомендуется начать с небольшого количества экземпляров и увеличить масштаб по мере необходимости. Вы можете отслеживать стоимость вычислительного экземпляра в портал Azure.