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


Использование моделей командного чата Cohere

Внимание

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

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

Внимание

Модели, которые находятся в предварительной версии, помечены как предварительный просмотр на своих карточках моделей в каталоге моделей.

Модели чата команд Cohere

Модели чата cohere включают следующие модели:

Команда R+ 08-2024 — это созданная большая языковая модель, оптимизированная для различных вариантов использования, включая причины, сводку и ответы на вопросы.

  • Архитектура модели: Command R+ 08-2024 — это модель авторегистрирования языка, использующая оптимизированную архитектуру преобразователя. После предварительного обучения модель использует защищенное точное обучение (SFT) и обучение предпочтений для выравнивания поведения модели с человеческими предпочтениями для полезности и безопасности.
  • Языки рассматриваются: режим оптимизирован для работы на следующих языках: английский, французский, испанский, итальянский, немецкий, бразильский португальский, японский, корейский, упрощенный китайский и арабский.
  • Данные предварительного обучения также включали следующие 13 языков: русский, польский, турецкий, вьетнамский, голландский, чешский, индонезийский, украинский, румынский, греческий, хинди, иврит и персидской.
  • Длина контекста: Command R+ 08-2024 поддерживает длину контекста 128 K.
  • Входные данные: только текст.
  • Выходные данные: только текст.

Мы рекомендуем использовать Command R+ 08-2024 для этих рабочих процессов, которые опираются на функции комплексного извлечения дополненного поколения (RAG), использование многошаговых средств (агентов) и структурированные выходные данные.

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

Совет

Кроме того, Cohere поддерживает использование специализированного API для использования с определенными функциями модели. Чтобы использовать api для конкретного поставщика моделей, проверьте документацию Cohere или ознакомьтесь с разделом примеров вывода в примерах кода.

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

Чтобы использовать модели чата Cohere с Azure AI Studio, вам потребуется следующее:

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

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

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

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

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

Прогнозы из этой модели можно использовать с помощью 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, с тем же кодом и структурой, включая модели чата Cohere.

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

Сначала создайте клиент для использования модели. В следующем коде используется 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"]),
)

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

Маршрут /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: Cohere-command-r-plus-08-2024
Model type: chat-completions
Model provider name: Cohere

Создание запроса на завершение чата

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

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: Cohere-command-r-plus-08-2024
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 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() },
)

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

Создание выходных данных JSON

Модели чата cohere могут создавать выходные данные JSON. Установите response_format для json_object включения режима JSON и гарантирует, что создается сообщение, которое создает модель, является допустимым JSON. Кроме того, необходимо указать модели, чтобы создать JSON самостоятельно с помощью системного или пользовательского сообщения. Кроме того, содержимое сообщения может быть частично отрезано, если finish_reason="length"это означает, что превышено поколение max_tokens или что беседа превысила максимальную длину контекста.

from azure.ai.inference.models import ChatCompletionsResponseFormatJSON

response = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant that always generate responses in JSON format, using."
                      " the following format: { ""answer"": ""response"" }."),
        UserMessage(content="How many languages are in the world?"),
    ],
    response_format={ "type": ChatCompletionsResponseFormatJSON() }
)

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

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

Использование средств

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

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

from azure.ai.inference.models import FunctionDefinition, ChatCompletionsFunctionToolDefinition

flight_info = ChatCompletionsFunctionToolDefinition(
    function=FunctionDefinition(
        name="get_flight_info",
        description="Returns information about the next flight between two cities. This includes the name of the airline, flight number and the date and time of the next flight",
        parameters={
            "type": "object",
            "properties": {
                "origin_city": {
                    "type": "string",
                    "description": "The name of the city where the flight originates",
                },
                "destination_city": {
                    "type": "string",
                    "description": "The flight destination city",
                },
            },
            "required": ["origin_city", "destination_city"],
        },
    )
)

tools = [flight_info]

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

def get_flight_info(loc_origin: str, loc_destination: str):
    return { 
        "info": f"There are no flights available from {loc_origin} to {loc_destination}. You should take a train, specially if it helps to reduce CO2 emissions."
    }

Примечание.

Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-plus и Cohere-command-r требуют, чтобы ответы средства были допустимыми содержимым JSON, отформатированными в виде строки. При создании сообщений типа Tool убедитесь, что ответ является допустимой строкой JSON.

Предложите модели забронировать рейсы с помощью этой функции:

messages = [
    SystemMessage(
        content="You are a helpful assistant that help users to find information about traveling, how to get"
                " to places and the different transportations options. You care about the environment and you"
                " always have that in mind when answering inqueries.",
    ),
    UserMessage(
        content="When is the next flight from Miami to Seattle?",
    ),
]

response = client.complete(
    messages=messages, tools=tools, tool_choice="auto"
)

Вы можете проверить ответ, чтобы узнать, нужно ли вызывать средство. Проверьте причину завершения, чтобы определить, следует ли вызывать средство. Помните, что можно указать несколько типов инструментов. В этом примере показан инструмент типа function.

response_message = response.choices[0].message
tool_calls = response_message.tool_calls

print("Finish reason:", response.choices[0].finish_reason)
print("Tool call:", tool_calls)

Чтобы продолжить, добавьте это сообщение в журнал чата:

messages.append(
    response_message
)

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

import json
from azure.ai.inference.models import ToolMessage

for tool_call in tool_calls:

    # Get the tool details:

    function_name = tool_call.function.name
    function_args = json.loads(tool_call.function.arguments.replace("\'", "\""))
    tool_call_id = tool_call.id

    print(f"Calling function `{function_name}` with arguments {function_args}")

    # Call the function defined above using `locals()`, which returns the list of all functions 
    # available in the scope as a dictionary. Notice that this is just done as a simple way to get
    # the function callable from its string name. Then we can call it with the corresponding
    # arguments.

    callable_func = locals()[function_name]
    function_response = callable_func(**function_args)

    print("->", function_response)

    # Once we have a response from the function and its arguments, we can append a new message to the chat 
    # history. Notice how we are telling to the model that this chat message came from a tool:

    messages.append(
        ToolMessage(
            tool_call_id=tool_call_id,
            content=json.dumps(function_response)
        )
    )

Просмотрите ответ модели:

response = client.complete(
    messages=messages,
    tools=tools,
)

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

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.

Модели чата команд Cohere

Модели чата cohere включают следующие модели:

Команда R+ 08-2024 — это созданная большая языковая модель, оптимизированная для различных вариантов использования, включая причины, сводку и ответы на вопросы.

  • Архитектура модели: Command R+ 08-2024 — это модель авторегистрирования языка, использующая оптимизированную архитектуру преобразователя. После предварительного обучения модель использует защищенное точное обучение (SFT) и обучение предпочтений для выравнивания поведения модели с человеческими предпочтениями для полезности и безопасности.
  • Языки рассматриваются: режим оптимизирован для работы на следующих языках: английский, французский, испанский, итальянский, немецкий, бразильский португальский, японский, корейский, упрощенный китайский и арабский.
  • Данные предварительного обучения также включали следующие 13 языков: русский, польский, турецкий, вьетнамский, голландский, чешский, индонезийский, украинский, румынский, греческий, хинди, иврит и персидской.
  • Длина контекста: Command R+ 08-2024 поддерживает длину контекста 128 K.
  • Входные данные: только текст.
  • Выходные данные: только текст.

Мы рекомендуем использовать Command R+ 08-2024 для этих рабочих процессов, которые опираются на функции комплексного извлечения дополненного поколения (RAG), использование многошаговых средств (агентов) и структурированные выходные данные.

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

Совет

Кроме того, Cohere поддерживает использование специализированного API для использования с определенными функциями модели. Чтобы использовать api для конкретного поставщика моделей, проверьте документацию Cohere или ознакомьтесь с разделом примеров вывода в примерах кода.

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

Чтобы использовать модели чата Cohere с Azure AI Studio, вам потребуется следующее:

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

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

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

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

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

Прогнозы из этой модели можно использовать с помощью @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, с тем же кодом и структурой, включая модели чата Cohere.

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

Сначала создайте клиент для использования модели. В следующем коде используется 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)
);

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

Маршрут /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: Cohere-command-r-plus-08-2024
Model type: chat-completions
Model provider name: Cohere

Создание запроса на завершение чата

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

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: Cohere-command-r-plus-08-2024
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" },
    }
});

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

Создание выходных данных JSON

Модели чата cohere могут создавать выходные данные JSON. Установите response_format для json_object включения режима JSON и гарантирует, что создается сообщение, которое создает модель, является допустимым JSON. Кроме того, необходимо указать модели, чтобы создать JSON самостоятельно с помощью системного или пользовательского сообщения. Кроме того, содержимое сообщения может быть частично отрезано, если finish_reason="length"это означает, что превышено поколение max_tokens или что беседа превысила максимальную длину контекста.

var messages = [
    { role: "system", content: "You are a helpful assistant that always generate responses in JSON format, using."
        + " the following format: { \"answer\": \"response\" }." },
    { role: "user", content: "How many languages are in the world?" },
];

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

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

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

Использование средств

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

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

const flight_info = {
    name: "get_flight_info",
    description: "Returns information about the next flight between two cities. This includes the name of the airline, flight number and the date and time of the next flight",
    parameters: {
        type: "object",
        properties: {
            origin_city: {
                type: "string",
                description: "The name of the city where the flight originates",
            },
            destination_city: {
                type: "string",
                description: "The flight destination city",
            },
        },
        required: ["origin_city", "destination_city"],
    },
}

const tools = [
    {
        type: "function",
        function: flight_info,
    },
];

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

function get_flight_info(loc_origin, loc_destination) {
    return {
        info: "There are no flights available from " + loc_origin + " to " + loc_destination + ". You should take a train, specially if it helps to reduce CO2 emissions."
    }
}

Примечание.

Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-plus и Cohere-command-r требуют, чтобы ответы средства были допустимыми содержимым JSON, отформатированными в виде строки. При создании сообщений типа Tool убедитесь, что ответ является допустимой строкой JSON.

Предложите модели забронировать рейсы с помощью этой функции:

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

Вы можете проверить ответ, чтобы узнать, нужно ли вызывать средство. Проверьте причину завершения, чтобы определить, следует ли вызывать средство. Помните, что можно указать несколько типов инструментов. В этом примере показан инструмент типа function.

const response_message = response.body.choices[0].message;
const tool_calls = response_message.tool_calls;

console.log("Finish reason: " + response.body.choices[0].finish_reason);
console.log("Tool call: " + tool_calls);

Чтобы продолжить, добавьте это сообщение в журнал чата:

messages.push(response_message);

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

function applyToolCall({ function: call, id }) {
    // Get the tool details:
    const tool_params = JSON.parse(call.arguments);
    console.log("Calling function " + call.name + " with arguments " + tool_params);

    // Call the function defined above using `window`, which returns the list of all functions 
    // available in the scope as a dictionary. Notice that this is just done as a simple way to get
    // the function callable from its string name. Then we can call it with the corresponding
    // arguments.
    const function_response = tool_params.map(window[call.name]);
    console.log("-> " + function_response);

    return function_response
}

for (const tool_call of tool_calls) {
    var tool_response = tool_call.apply(applyToolCall);

    messages.push(
        {
            role: "tool",
            tool_call_id: tool_call.id,
            content: tool_response
        }
    );
}

Просмотрите ответ модели:

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

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

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.

Модели чата команд Cohere

Модели чата cohere включают следующие модели:

Команда R+ 08-2024 — это созданная большая языковая модель, оптимизированная для различных вариантов использования, включая причины, сводку и ответы на вопросы.

  • Архитектура модели: Command R+ 08-2024 — это модель авторегистрирования языка, использующая оптимизированную архитектуру преобразователя. После предварительного обучения модель использует защищенное точное обучение (SFT) и обучение предпочтений для выравнивания поведения модели с человеческими предпочтениями для полезности и безопасности.
  • Языки рассматриваются: режим оптимизирован для работы на следующих языках: английский, французский, испанский, итальянский, немецкий, бразильский португальский, японский, корейский, упрощенный китайский и арабский.
  • Данные предварительного обучения также включали следующие 13 языков: русский, польский, турецкий, вьетнамский, голландский, чешский, индонезийский, украинский, румынский, греческий, хинди, иврит и персидской.
  • Длина контекста: Command R+ 08-2024 поддерживает длину контекста 128 K.
  • Входные данные: только текст.
  • Выходные данные: только текст.

Мы рекомендуем использовать Command R+ 08-2024 для этих рабочих процессов, которые опираются на функции комплексного извлечения дополненного поколения (RAG), использование многошаговых средств (агентов) и структурированные выходные данные.

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

Совет

Кроме того, Cohere поддерживает использование специализированного API для использования с определенными функциями модели. Чтобы использовать api для конкретного поставщика моделей, проверьте документацию Cohere или ознакомьтесь с разделом примеров вывода в примерах кода.

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

Чтобы использовать модели чата Cohere с Azure AI Studio, вам потребуется следующее:

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

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

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

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

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

Прогнозы из этой модели можно использовать с помощью 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, с тем же кодом и структурой, включая модели чата Cohere.

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

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

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

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

Маршрут /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: Cohere-command-r-plus-08-2024
Model type: chat-completions
Model provider name: Cohere

Создание запроса на завершение чата

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

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: Cohere-command-r-plus-08-2024
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}");

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

Создание выходных данных JSON

Модели чата cohere могут создавать выходные данные JSON. Установите response_format для json_object включения режима JSON и гарантирует, что создается сообщение, которое создает модель, является допустимым JSON. Кроме того, необходимо указать модели, чтобы создать JSON самостоятельно с помощью системного или пользовательского сообщения. Кроме того, содержимое сообщения может быть частично отрезано, если finish_reason="length"это означает, что превышено поколение max_tokens или что беседа превысила максимальную длину контекста.

requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage(
            "You are a helpful assistant that always generate responses in JSON format, " +
            "using. the following format: { \"answer\": \"response\" }."
        ),
        new ChatRequestUserMessage(
            "How many languages are in the world?"
        )
    },
    ResponseFormat = new ChatCompletionsResponseFormatJSON()
};

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

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

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

Использование средств

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

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

FunctionDefinition flightInfoFunction = new FunctionDefinition("getFlightInfo")
{
    Description = "Returns information about the next flight between two cities. This includes the name of the airline, flight number and the date and time of the next flight",
    Parameters = BinaryData.FromObjectAsJson(new
    {
        Type = "object",
        Properties = new
        {
            origin_city = new
            {
                Type = "string",
                Description = "The name of the city where the flight originates"
            },
            destination_city = new
            {
                Type = "string",
                Description = "The flight destination city"
            }
        }
    },
        new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }
    )
};

ChatCompletionsFunctionToolDefinition getFlightTool = new ChatCompletionsFunctionToolDefinition(flightInfoFunction);

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

static string getFlightInfo(string loc_origin, string loc_destination)
{
    return JsonSerializer.Serialize(new
    {
        info = $"There are no flights available from {loc_origin} to {loc_destination}. You " +
        "should take a train, specially if it helps to reduce CO2 emissions."
    });
}

Примечание.

Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-plus и Cohere-command-r требуют, чтобы ответы средства были допустимыми содержимым JSON, отформатированными в виде строки. При создании сообщений типа Tool убедитесь, что ответ является допустимой строкой JSON.

Предложите модели забронировать рейсы с помощью этой функции:

var chatHistory = new List<ChatRequestMessage>(){
        new ChatRequestSystemMessage(
            "You are a helpful assistant that help users to find information about traveling, " +
            "how to get to places and the different transportations options. You care about the" +
            "environment and you always have that in mind when answering inqueries."
        ),
        new ChatRequestUserMessage("When is the next flight from Miami to Seattle?")
    };

requestOptions = new ChatCompletionsOptions(chatHistory);
requestOptions.Tools.Add(getFlightTool);
requestOptions.ToolChoice = ChatCompletionsToolChoice.Auto;

response = client.Complete(requestOptions);

Вы можете проверить ответ, чтобы узнать, нужно ли вызывать средство. Проверьте причину завершения, чтобы определить, следует ли вызывать средство. Помните, что можно указать несколько типов инструментов. В этом примере показан инструмент типа function.

var responseMenssage = response.Value.Choices[0].Message;
var toolsCall = responseMenssage.ToolCalls;

Console.WriteLine($"Finish reason: {response.Value.Choices[0].FinishReason}");
Console.WriteLine($"Tool call: {toolsCall[0].Id}");

Чтобы продолжить, добавьте это сообщение в журнал чата:

requestOptions.Messages.Add(new ChatRequestAssistantMessage(response.Value.Choices[0].Message));

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

foreach (ChatCompletionsToolCall tool in toolsCall)
{
    if (tool is ChatCompletionsFunctionToolCall functionTool)
    {
        // Get the tool details:
        string callId = functionTool.Id;
        string toolName = functionTool.Name;
        string toolArgumentsString = functionTool.Arguments;
        Dictionary<string, object> toolArguments = JsonSerializer.Deserialize<Dictionary<string, object>>(toolArgumentsString);

        // Here you have to call the function defined. In this particular example we use 
        // reflection to find the method we definied before in an static class called 
        // `ChatCompletionsExamples`. Using reflection allows us to call a function 
        // by string name. Notice that this is just done for demonstration purposes as a 
        // simple way to get the function callable from its string name. Then we can call 
        // it with the corresponding arguments.

        var flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static;
        string toolResponse = (string)typeof(ChatCompletionsExamples).GetMethod(toolName, flags).Invoke(null, toolArguments.Values.Cast<object>().ToArray());

        Console.WriteLine("->", toolResponse);
        requestOptions.Messages.Add(new ChatRequestToolMessage(toolResponse, callId));
    }
    else
        throw new Exception("Unsupported tool type");
}

Просмотрите ответ модели:

response = client.Complete(requestOptions);

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

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.

Модели чата команд Cohere

Модели чата cohere включают следующие модели:

Команда R+ 08-2024 — это созданная большая языковая модель, оптимизированная для различных вариантов использования, включая причины, сводку и ответы на вопросы.

  • Архитектура модели: Command R+ 08-2024 — это модель авторегистрирования языка, использующая оптимизированную архитектуру преобразователя. После предварительного обучения модель использует защищенное точное обучение (SFT) и обучение предпочтений для выравнивания поведения модели с человеческими предпочтениями для полезности и безопасности.
  • Языки рассматриваются: режим оптимизирован для работы на следующих языках: английский, французский, испанский, итальянский, немецкий, бразильский португальский, японский, корейский, упрощенный китайский и арабский.
  • Данные предварительного обучения также включали следующие 13 языков: русский, польский, турецкий, вьетнамский, голландский, чешский, индонезийский, украинский, румынский, греческий, хинди, иврит и персидской.
  • Длина контекста: Command R+ 08-2024 поддерживает длину контекста 128 K.
  • Входные данные: только текст.
  • Выходные данные: только текст.

Мы рекомендуем использовать Command R+ 08-2024 для этих рабочих процессов, которые опираются на функции комплексного извлечения дополненного поколения (RAG), использование многошаговых средств (агентов) и структурированные выходные данные.

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

Совет

Кроме того, Cohere поддерживает использование специализированного API для использования с определенными функциями модели. Чтобы использовать api для конкретного поставщика моделей, проверьте документацию Cohere или ознакомьтесь с разделом примеров вывода в примерах кода.

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

Чтобы использовать модели чата Cohere с Azure AI Studio, вам потребуется следующее:

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

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

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

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

Клиент 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, с тем же кодом и структурой, включая модели чата Cohere.

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

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

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

Маршрут /info возвращает сведения о модели, развернутой в конечной точке. Верните сведения модели, вызвав следующий метод:

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

Ответ выглядит следующим образом:

{
    "model_name": "Cohere-command-r-plus-08-2024",
    "model_type": "chat-completions",
    "model_provider_name": "Cohere"
}

Создание запроса на завершение чата

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

{
    "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": "Cohere-command-r-plus-08-2024",
    "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": "Cohere-command-r-plus-08-2024",
    "choices": [
        {
            "index": 0,
            "delta": {
                "role": "assistant",
                "content": ""
            },
            "finish_reason": null,
            "logprobs": null
        }
    ]
}

Последнее сообщение в потоке установлено finish_reason , указывая причину остановки процесса создания.

{
    "id": "23b54589eba14564ad8a2e6978775a39",
    "object": "chat.completion.chunk",
    "created": 1718726371,
    "model": "Cohere-command-r-plus-08-2024",
    "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": "Cohere-command-r-plus-08-2024",
    "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
    }
}

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

Создание выходных данных JSON

Модели чата cohere могут создавать выходные данные JSON. Установите response_format для json_object включения режима JSON и гарантирует, что создается сообщение, которое создает модель, является допустимым JSON. Кроме того, необходимо указать модели, чтобы создать JSON самостоятельно с помощью системного или пользовательского сообщения. Кроме того, содержимое сообщения может быть частично отрезано, если finish_reason="length"это означает, что превышено поколение max_tokens или что беседа превысила максимальную длину контекста.

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant that always generate responses in JSON format, using the following format: { \"answer\": \"response\" }"
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "response_format": { "type": "json_object" }
}
{
    "id": "0a1234b5de6789f01gh2i345j6789klm",
    "object": "chat.completion",
    "created": 1718727522,
    "model": "Cohere-command-r-plus-08-2024",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "{\"answer\": \"There are approximately 7,117 living languages in the world today, according to the latest estimates. However, this number can vary as some languages become extinct and others are newly discovered or classified.\"}",
                "tool_calls": null
            },
            "finish_reason": "stop",
            "logprobs": null
        }
    ],
    "usage": {
        "prompt_tokens": 39,
        "total_tokens": 87,
        "completion_tokens": 48
    }
}

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

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
}

Использование средств

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

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

{
    "type": "function",
    "function": {
        "name": "get_flight_info",
        "description": "Returns information about the next flight between two cities. This includes the name of the airline, flight number and the date and time of the next flight",
        "parameters": {
            "type": "object",
            "properties": {
                "origin_city": {
                    "type": "string",
                    "description": "The name of the city where the flight originates"
                },
                "destination_city": {
                    "type": "string",
                    "description": "The flight destination city"
                }
            },
            "required": [
                "origin_city",
                "destination_city"
            ]
        }
    }
}

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

Примечание.

Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-plus и Cohere-command-r требуют, чтобы ответы средства были допустимыми содержимым JSON, отформатированными в виде строки. При создании сообщений типа Tool убедитесь, что ответ является допустимой строкой JSON.

Предложите модели забронировать рейсы с помощью этой функции:

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant that help users to find information about traveling, how to get to places and the different transportations options. You care about the environment and you always have that in mind when answering inqueries"
        },
        {
            "role": "user",
            "content": "When is the next flight from Miami to Seattle?"
        }
    ],
    "tool_choice": "auto",
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "get_flight_info",
                "description": "Returns information about the next flight between two cities. This includes the name of the airline, flight number and the date and time of the next flight",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "origin_city": {
                            "type": "string",
                            "description": "The name of the city where the flight originates"
                        },
                        "destination_city": {
                            "type": "string",
                            "description": "The flight destination city"
                        }
                    },
                    "required": [
                        "origin_city",
                        "destination_city"
                    ]
                }
            }
        }
    ]
}

Вы можете проверить ответ, чтобы узнать, нужно ли вызывать средство. Проверьте причину завершения, чтобы определить, следует ли вызывать средство. Помните, что можно указать несколько типов инструментов. В этом примере показан инструмент типа function.

{
    "id": "0a1234b5de6789f01gh2i345j6789klm",
    "object": "chat.completion",
    "created": 1718726007,
    "model": "Cohere-command-r-plus-08-2024",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "",
                "tool_calls": [
                    {
                        "id": "abc0dF1gh",
                        "type": "function",
                        "function": {
                            "name": "get_flight_info",
                            "arguments": "{\"origin_city\": \"Miami\", \"destination_city\": \"Seattle\"}",
                            "call_id": null
                        }
                    }
                ]
            },
            "finish_reason": "tool_calls",
            "logprobs": null
        }
    ],
    "usage": {
        "prompt_tokens": 190,
        "total_tokens": 226,
        "completion_tokens": 36
    }
}

Чтобы продолжить, добавьте это сообщение в журнал чата:

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

Просмотрите ответ модели:

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant that help users to find information about traveling, how to get to places and the different transportations options. You care about the environment and you always have that in mind when answering inqueries"
        },
        {
            "role": "user",
            "content": "When is the next flight from Miami to Seattle?"
        },
        {
            "role": "assistant",
            "content": "",
            "tool_calls": [
                {
                    "id": "abc0DeFgH",
                    "type": "function",
                    "function": {
                        "name": "get_flight_info",
                        "arguments": "{\"origin_city\": \"Miami\", \"destination_city\": \"Seattle\"}",
                        "call_id": null
                    }
                }
            ]
        },
        {
            "role": "tool",
            "content": "{ \"info\": \"There are no flights available from Miami to Seattle. You should take a train, specially if it helps to reduce CO2 emissions.\" }",
            "tool_call_id": "abc0DeFgH" 
        }
    ],
    "tool_choice": "auto",
    "tools": [
        {
            "type": "function",
            "function": {
            "name": "get_flight_info",
            "description": "Returns information about the next flight between two cities. This includes the name of the airline, flight number and the date and time of the next flight",
            "parameters":{
                "type": "object",
                "properties": {
                    "origin_city": {
                        "type": "string",
                        "description": "The name of the city where the flight originates"
                    },
                    "destination_city": {
                        "type": "string",
                        "description": "The flight destination city"
                    }
                },
                "required": ["origin_city", "destination_city"]
            }
            }
        }
    ]
}

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

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.

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

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

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

Извлечение дополненного поколения (RAG) и примеры использования инструментов

Description Packages Пример
Создание локального индекса сходства ИИ Facebook (FAISS) с помощью внедрения Cohere — Langchain langchain, langchain_cohere cohere_faiss_langchain_embed.ipynb
Используйте команду Cohere R/R+ для ответа на вопросы из данных в локальном индексе вектора FAISS — Langchain langchain, langchain_cohere command_faiss_langchain.ipynb
Использование Cohere Command R/R+ для ответа на вопросы из данных в индексе вектора поиска ИИ — Langchain langchain, langchain_cohere cohere-aisearch-langchain-rag.ipynb
Использование Cohere Command R/R+ для ответа на вопросы из данных в индексе вектора поиска ИИ — пакет SDK Cohere cohere, azure_search_documents cohere-aisearch-rag.ipynb
Вызов инструмента или функции команды R+ с помощью LangChain cohere, , langchainlangchain_cohere command_tools-langchain.ipynb

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

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

Модели Cohere, развернутые в качестве бессерверного API, предлагаются Cohere через Azure Marketplace и интегрированы с Azure AI Studio для использования. Цены на Azure Marketplace можно найти при развертывании модели.

Каждый раз, когда проект подписывается на данное предложение из Azure Marketplace, создается новый ресурс для отслеживания затрат, связанных с его потреблением. Тот же ресурс используется для отслеживания затрат, связанных с выводом; однако для отслеживания каждого сценария по отдельности можно использовать несколько счетчиков.

Дополнительные сведения о том, как отслеживать затраты, см. в статье Мониторинг затрат для моделей, предлагаемых в Azure Marketplace.