Dela via


Så här använder du cohere-kommandochattmodeller

Viktigt!

Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

I den här artikeln får du lära dig mer om cohere-kommandochattmodeller och hur du använder dem. Cohere-serien med modeller innehåller olika modeller som är optimerade för olika användningsfall, inklusive chattavslut, inbäddningar och omrankning. Sammanhållna modeller är optimerade för olika användningsfall som inkluderar resonemang, sammanfattning och frågesvar.

Viktigt!

Modeller som är i förhandsversion markeras som förhandsversioner på sina modellkort i modellkatalogen.

Cohere-kommandochattmodeller

Cohere Command-chattmodellerna innehåller följande modeller:

Kommando R+ 08-2024 är en generativ stor språkmodell som är optimerad för olika användningsfall, inklusive resonemang, sammanfattning och svar på frågor.

  • Modellarkitektur: Kommando R+ 08-2024 är en autoregressiv språkmodell som använder en optimerad transformeringsarkitektur. Efter förträningen använder modellen övervakad finjustering (SFT) och inställningsträning för att anpassa modellbeteendet till mänskliga preferenser för hjälp och säkerhet.
  • Språk som omfattas: Läget är optimerat för att fungera bra på följande språk: engelska, franska, spanska, italienska, tyska, brasilianska portugisiska, japanska, koreanska, förenklad kinesiska och arabiska.
  • Förträningsdata omfattade även följande 13 språk: ryska, polska, turkiska, vietnamesiska, nederländska, tjeckiska, indonesiska, ukrainska, rumänska, grekiska, hindi, hebreiska och persiska.
  • Kontextlängd: Kommando R+ 08-2024 stöder en kontextlängd på 128 K.
  • Indata: Endast text.
  • Utdata: Endast text.

Vi rekommenderar att du använder Kommando R+ 08-2024 för de arbetsflöden som lutar sig mot funktioner för avancerad hämtning (RAG), användning av flerstegsverktyg (agenter) och strukturerade utdata.

Följande modeller är tillgängliga:

Dricks

Dessutom stöder Cohere användning av ett skräddarsytt API för användning med specifika funktioner i modellen. Om du vill använda det specifika API:et för modellprovidern läser du dokumentationen för Cohere eller läser avsnittet slutsatsdragningsexempel för kodexempel.

Förutsättningar

Om du vill använda Cohere Command-chattmodeller med Azure AI Foundry behöver du följande förutsättningar:

En modelldistribution

Distribution till serverlösa API:er

Cohere Command-chattmodeller kan distribueras till serverlösa API-slutpunkter med betala per användning-fakturering. Den här typen av distribution ger ett sätt att använda modeller som ett API utan att vara värd för dem i din prenumeration, samtidigt som den företagssäkerhet och efterlevnad som organisationer behöver bevaras.

Distribution till en serverlös API-slutpunkt kräver inte kvot från din prenumeration. Om din modell inte redan har distribuerats använder du Azure AI Foundry-portalen, Azure Machine Learning SDK för Python, Azure CLI eller ARM-mallar för att distribuera modellen som ett serverlöst API.

Inferenspaketet installerat

Du kan använda förutsägelser från den här modellen med hjälp azure-ai-inference av paketet med Python. För att installera det här paketet behöver du följande krav:

  • Python 3.8 eller senare installerat, inklusive pip.
  • Slutpunkts-URL:en. Om du vill skapa klientbiblioteket måste du skicka in slutpunkts-URL:en. Slutpunkts-URL:en har formuläret https://your-host-name.your-azure-region.inference.ai.azure.com, där your-host-name är värdnamnet för din unika modelldistribution och your-azure-region är den Azure-region där modellen distribueras (till exempel eastus2).
  • Beroende på din modelldistribution och autentiseringsinställning behöver du antingen en nyckel för att autentisera mot tjänsten eller autentiseringsuppgifter för Microsoft Entra-ID. Nyckeln är en sträng på 32 tecken.

När du har dessa förutsättningar installerar du Azure AI-slutsatsdragningspaketet med följande kommando:

pip install azure-ai-inference

Läs mer om Azure AI-slutsatsdragningspaketet och referensen.

Arbeta med chattens slutföranden

I det här avsnittet använder du Azure AI-modellinferens-API :et med en modell för chattavslut för chatt.

Dricks

Med Azure AI-modellinferens-API:et kan du prata med de flesta modeller som distribueras i Azure AI Foundry-portalen med samma kod och struktur, inklusive cohere-kommandochattmodeller.

Skapa en klient för att använda modellen

Skapa först klienten för att använda modellen. I följande kod används en slutpunkts-URL och nyckel som lagras i miljövariabler.

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

Hämta modellens funktioner

Vägen /info returnerar information om den modell som distribueras till slutpunkten. Returnera modellens information genom att anropa följande metod:

model_info = client.get_model_info()

Svaret är följande:

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

Skapa en begäran om att chatten ska slutföras

I följande exempel visas hur du kan skapa en grundläggande begäran om att slutföra chatten till modellen.

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

Svaret är följande, där du kan se modellens användningsstatistik:

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 Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.

Strömma innehåll

Som standard returnerar API:et för slutförande hela det genererade innehållet i ett enda svar. Om du genererar långa slutföranden kan det ta många sekunder att vänta på svaret.

Du kan strömma innehållet för att hämta det när det genereras. Med strömmande innehåll kan du börja bearbeta slutförandet när innehållet blir tillgängligt. Det här läget returnerar ett objekt som strömmar tillbaka svaret som databaserade serverutskickade händelser. Extrahera segment från deltafältet i stället för meddelandefältet.

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

Om du vill strömma slutföranden anger stream=True du när du anropar modellen.

Om du vill visualisera utdata definierar du en hjälpfunktion för att skriva ut strömmen.

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="")

Du kan visualisera hur strömning genererar innehåll:

print_stream(result)

Utforska fler parametrar som stöds av slutsatsdragningsklienten

Utforska andra parametrar som du kan ange i slutsatsdragningsklienten. En fullständig lista över alla parametrar som stöds och deras motsvarande dokumentation finns i API-referensen för Azure AI-modellinferens.

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

Om du vill skicka en parameter som inte finns med i listan över parametrar som stöds kan du skicka den till den underliggande modellen med hjälp av extra parametrar. Se Skicka extra parametrar till modellen.

Skapa JSON-utdata

Cohere-kommandochattmodeller kan skapa JSON-utdata. Ange response_format till json_object för att aktivera JSON-läge och garantera att meddelandet som modellen genererar är giltigt JSON. Du måste också instruera modellen att skapa JSON själv via ett system- eller användarmeddelande. Dessutom kan meddelandeinnehållet vara delvis avskuret om finish_reason="length", vilket indikerar att genereringen överskred max_tokens eller att konversationen överskred den maximala kontextlängden.

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

Skicka extra parametrar till modellen

Med AZURE AI Model Inference API kan du skicka extra parametrar till modellen. Följande kodexempel visar hur du skickar den extra parametern logprobs till modellen.

Innan du skickar extra parametrar till Azure AI-modellinferens-API:et kontrollerar du att din modell stöder dessa extra parametrar. När begäran görs till den underliggande modellen skickas rubriken extra-parameters till modellen med värdet pass-through. Det här värdet anger att slutpunkten ska skicka de extra parametrarna till modellen. Användning av extra parametrar med modellen garanterar inte att modellen faktiskt kan hantera dem. Läs modellens dokumentation för att förstå vilka extra parametrar som stöds.

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

Använda verktyg

Cohere Command-chattmodeller stöder användning av verktyg, vilket kan vara en extraordinär resurs när du behöver avlasta specifika uppgifter från språkmodellen och i stället förlitar dig på ett mer deterministiskt system eller till och med en annan språkmodell. Med AZURE AI Model Inference API kan du definiera verktyg på följande sätt.

I följande kodexempel skapas en verktygsdefinition som kan titta från flyginformation från två olika städer.

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]

I det här exemplet är funktionens utdata att det inte finns några tillgängliga flyg för den valda rutten, men användaren bör överväga att ta ett tåg.

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

Kommentar

Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus och Cohere-command-r kräver att ett verktygs svar är ett giltigt JSON-innehåll formaterat som en sträng. När du skapar meddelanden av typen Verktyg kontrollerar du att svaret är en giltig JSON-sträng.

Uppmana modellen att boka flyg med hjälp av den här funktionen:

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

Du kan kontrollera svaret för att ta reda på om ett verktyg behöver anropas. Kontrollera avslutsorsaken för att avgöra om verktyget ska anropas. Kom ihåg att flera verktygstyper kan anges. Det här exemplet visar ett verktyg av typen 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)

Om du vill fortsätta lägger du till det här meddelandet i chatthistoriken:

messages.append(
    response_message
)

Nu är det dags att anropa rätt funktion för att hantera verktygsanropet. Följande kodfragment itererar över alla verktygsanrop som anges i svaret och anropar motsvarande funktion med lämpliga parametrar. Svaret läggs också till i chatthistoriken.

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

Visa svaret från modellen:

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

Tillämpa innehållssäkerhet

Azure AI-modellinferens-API:et stöder Azure AI-innehållssäkerhet. När du använder distributioner med Azure AI-innehållssäkerhet aktiverad passerar indata och utdata genom en uppsättning klassificeringsmodeller som syftar till att identifiera och förhindra utdata från skadligt innehåll. Systemet för innehållsfiltrering (förhandsversion) identifierar och vidtar åtgärder för specifika kategorier av potentiellt skadligt innehåll i både inkommande prompter och slutföranden av utdata.

I följande exempel visas hur du hanterar händelser när modellen identifierar skadligt innehåll i indataprompten och innehållssäkerhet är aktiverat.

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

Dricks

Mer information om hur du kan konfigurera och kontrollera säkerhetsinställningar för Azure AI-innehåll finns i säkerhetsdokumentationen för Azure AI-innehåll.

Cohere-kommandochattmodeller

Cohere Command-chattmodellerna innehåller följande modeller:

Kommando R+ 08-2024 är en generativ stor språkmodell som är optimerad för olika användningsfall, inklusive resonemang, sammanfattning och svar på frågor.

  • Modellarkitektur: Kommando R+ 08-2024 är en autoregressiv språkmodell som använder en optimerad transformeringsarkitektur. Efter förträningen använder modellen övervakad finjustering (SFT) och inställningsträning för att anpassa modellbeteendet till mänskliga preferenser för hjälp och säkerhet.
  • Språk som omfattas: Läget är optimerat för att fungera bra på följande språk: engelska, franska, spanska, italienska, tyska, brasilianska portugisiska, japanska, koreanska, förenklad kinesiska och arabiska.
  • Förträningsdata omfattade även följande 13 språk: ryska, polska, turkiska, vietnamesiska, nederländska, tjeckiska, indonesiska, ukrainska, rumänska, grekiska, hindi, hebreiska och persiska.
  • Kontextlängd: Kommando R+ 08-2024 stöder en kontextlängd på 128 K.
  • Indata: Endast text.
  • Utdata: Endast text.

Vi rekommenderar att du använder Kommando R+ 08-2024 för de arbetsflöden som lutar sig mot funktioner för avancerad hämtning (RAG), användning av flerstegsverktyg (agenter) och strukturerade utdata.

Följande modeller är tillgängliga:

Dricks

Dessutom stöder Cohere användning av ett skräddarsytt API för användning med specifika funktioner i modellen. Om du vill använda det specifika API:et för modellprovidern läser du dokumentationen för Cohere eller läser avsnittet slutsatsdragningsexempel för kodexempel.

Förutsättningar

Om du vill använda Cohere Command-chattmodeller med Azure AI Foundry behöver du följande förutsättningar:

En modelldistribution

Distribution till serverlösa API:er

Cohere Command-chattmodeller kan distribueras till serverlösa API-slutpunkter med betala per användning-fakturering. Den här typen av distribution ger ett sätt att använda modeller som ett API utan att vara värd för dem i din prenumeration, samtidigt som den företagssäkerhet och efterlevnad som organisationer behöver bevaras.

Distribution till en serverlös API-slutpunkt kräver inte kvot från din prenumeration. Om din modell inte redan har distribuerats använder du Azure AI Foundry-portalen, Azure Machine Learning SDK för Python, Azure CLI eller ARM-mallar för att distribuera modellen som ett serverlöst API.

Inferenspaketet installerat

Du kan använda förutsägelser från den här modellen med hjälp @azure-rest/ai-inference av paketet från npm. För att installera det här paketet behöver du följande krav:

  • LTS-versioner av Node.js med npm.
  • Slutpunkts-URL:en. Om du vill skapa klientbiblioteket måste du skicka in slutpunkts-URL:en. Slutpunkts-URL:en har formuläret https://your-host-name.your-azure-region.inference.ai.azure.com, där your-host-name är värdnamnet för din unika modelldistribution och your-azure-region är den Azure-region där modellen distribueras (till exempel eastus2).
  • Beroende på din modelldistribution och autentiseringsinställning behöver du antingen en nyckel för att autentisera mot tjänsten eller autentiseringsuppgifter för Microsoft Entra-ID. Nyckeln är en sträng på 32 tecken.

När du har dessa förutsättningar installerar du Azure Inference-biblioteket för JavaScript med följande kommando:

npm install @azure-rest/ai-inference

Arbeta med chattens slutföranden

I det här avsnittet använder du Azure AI-modellinferens-API :et med en modell för chattavslut för chatt.

Dricks

Med Azure AI-modellinferens-API:et kan du prata med de flesta modeller som distribueras i Azure AI Foundry-portalen med samma kod och struktur, inklusive cohere-kommandochattmodeller.

Skapa en klient för att använda modellen

Skapa först klienten för att använda modellen. I följande kod används en slutpunkts-URL och nyckel som lagras i miljövariabler.

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

Hämta modellens funktioner

Vägen /info returnerar information om den modell som distribueras till slutpunkten. Returnera modellens information genom att anropa följande metod:

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

Svaret är följande:

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

Skapa en begäran om att chatten ska slutföras

I följande exempel visas hur du kan skapa en grundläggande begäran om att slutföra chatten till modellen.

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

Svaret är följande, där du kan se modellens användningsstatistik:

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 Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.

Strömma innehåll

Som standard returnerar API:et för slutförande hela det genererade innehållet i ett enda svar. Om du genererar långa slutföranden kan det ta många sekunder att vänta på svaret.

Du kan strömma innehållet för att hämta det när det genereras. Med strömmande innehåll kan du börja bearbeta slutförandet när innehållet blir tillgängligt. Det här läget returnerar ett objekt som strömmar tillbaka svaret som databaserade serverutskickade händelser. Extrahera segment från deltafältet i stället för meddelandefältet.

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

Om du vill strömma slutföranden använder .asNodeStream() du när du anropar modellen.

Du kan visualisera hur strömning genererar innehåll:

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

Utforska fler parametrar som stöds av slutsatsdragningsklienten

Utforska andra parametrar som du kan ange i slutsatsdragningsklienten. En fullständig lista över alla parametrar som stöds och deras motsvarande dokumentation finns i API-referensen för Azure AI-modellinferens.

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

Om du vill skicka en parameter som inte finns med i listan över parametrar som stöds kan du skicka den till den underliggande modellen med hjälp av extra parametrar. Se Skicka extra parametrar till modellen.

Skapa JSON-utdata

Cohere-kommandochattmodeller kan skapa JSON-utdata. Ange response_format till json_object för att aktivera JSON-läge och garantera att meddelandet som modellen genererar är giltigt JSON. Du måste också instruera modellen att skapa JSON själv via ett system- eller användarmeddelande. Dessutom kan meddelandeinnehållet vara delvis avskuret om finish_reason="length", vilket indikerar att genereringen överskred max_tokens eller att konversationen överskred den maximala kontextlängden.

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

Skicka extra parametrar till modellen

Med AZURE AI Model Inference API kan du skicka extra parametrar till modellen. Följande kodexempel visar hur du skickar den extra parametern logprobs till modellen.

Innan du skickar extra parametrar till Azure AI-modellinferens-API:et kontrollerar du att din modell stöder dessa extra parametrar. När begäran görs till den underliggande modellen skickas rubriken extra-parameters till modellen med värdet pass-through. Det här värdet anger att slutpunkten ska skicka de extra parametrarna till modellen. Användning av extra parametrar med modellen garanterar inte att modellen faktiskt kan hantera dem. Läs modellens dokumentation för att förstå vilka extra parametrar som stöds.

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

Använda verktyg

Cohere Command-chattmodeller stöder användning av verktyg, vilket kan vara en extraordinär resurs när du behöver avlasta specifika uppgifter från språkmodellen och i stället förlitar dig på ett mer deterministiskt system eller till och med en annan språkmodell. Med AZURE AI Model Inference API kan du definiera verktyg på följande sätt.

I följande kodexempel skapas en verktygsdefinition som kan titta från flyginformation från två olika städer.

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

I det här exemplet är funktionens utdata att det inte finns några tillgängliga flyg för den valda rutten, men användaren bör överväga att ta ett tåg.

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

Kommentar

Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus och Cohere-command-r kräver att ett verktygs svar är ett giltigt JSON-innehåll formaterat som en sträng. När du skapar meddelanden av typen Verktyg kontrollerar du att svaret är en giltig JSON-sträng.

Uppmana modellen att boka flyg med hjälp av den här funktionen:

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

Du kan kontrollera svaret för att ta reda på om ett verktyg behöver anropas. Kontrollera avslutsorsaken för att avgöra om verktyget ska anropas. Kom ihåg att flera verktygstyper kan anges. Det här exemplet visar ett verktyg av typen 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);

Om du vill fortsätta lägger du till det här meddelandet i chatthistoriken:

messages.push(response_message);

Nu är det dags att anropa rätt funktion för att hantera verktygsanropet. Följande kodfragment itererar över alla verktygsanrop som anges i svaret och anropar motsvarande funktion med lämpliga parametrar. Svaret läggs också till i chatthistoriken.

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

Visa svaret från modellen:

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

Tillämpa innehållssäkerhet

Azure AI-modellinferens-API:et stöder Azure AI-innehållssäkerhet. När du använder distributioner med Azure AI-innehållssäkerhet aktiverad passerar indata och utdata genom en uppsättning klassificeringsmodeller som syftar till att identifiera och förhindra utdata från skadligt innehåll. Systemet för innehållsfiltrering (förhandsversion) identifierar och vidtar åtgärder för specifika kategorier av potentiellt skadligt innehåll i både inkommande prompter och slutföranden av utdata.

I följande exempel visas hur du hanterar händelser när modellen identifierar skadligt innehåll i indataprompten och innehållssäkerhet är aktiverat.

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

Dricks

Mer information om hur du kan konfigurera och kontrollera säkerhetsinställningar för Azure AI-innehåll finns i säkerhetsdokumentationen för Azure AI-innehåll.

Cohere-kommandochattmodeller

Cohere Command-chattmodellerna innehåller följande modeller:

Kommando R+ 08-2024 är en generativ stor språkmodell som är optimerad för olika användningsfall, inklusive resonemang, sammanfattning och svar på frågor.

  • Modellarkitektur: Kommando R+ 08-2024 är en autoregressiv språkmodell som använder en optimerad transformeringsarkitektur. Efter förträningen använder modellen övervakad finjustering (SFT) och inställningsträning för att anpassa modellbeteendet till mänskliga preferenser för hjälp och säkerhet.
  • Språk som omfattas: Läget är optimerat för att fungera bra på följande språk: engelska, franska, spanska, italienska, tyska, brasilianska portugisiska, japanska, koreanska, förenklad kinesiska och arabiska.
  • Förträningsdata omfattade även följande 13 språk: ryska, polska, turkiska, vietnamesiska, nederländska, tjeckiska, indonesiska, ukrainska, rumänska, grekiska, hindi, hebreiska och persiska.
  • Kontextlängd: Kommando R+ 08-2024 stöder en kontextlängd på 128 K.
  • Indata: Endast text.
  • Utdata: Endast text.

Vi rekommenderar att du använder Kommando R+ 08-2024 för de arbetsflöden som lutar sig mot funktioner för avancerad hämtning (RAG), användning av flerstegsverktyg (agenter) och strukturerade utdata.

Följande modeller är tillgängliga:

Dricks

Dessutom stöder Cohere användning av ett skräddarsytt API för användning med specifika funktioner i modellen. Om du vill använda det specifika API:et för modellprovidern läser du dokumentationen för Cohere eller läser avsnittet slutsatsdragningsexempel för kodexempel.

Förutsättningar

Om du vill använda Cohere Command-chattmodeller med Azure AI Foundry behöver du följande förutsättningar:

En modelldistribution

Distribution till serverlösa API:er

Cohere Command-chattmodeller kan distribueras till serverlösa API-slutpunkter med betala per användning-fakturering. Den här typen av distribution ger ett sätt att använda modeller som ett API utan att vara värd för dem i din prenumeration, samtidigt som den företagssäkerhet och efterlevnad som organisationer behöver bevaras.

Distribution till en serverlös API-slutpunkt kräver inte kvot från din prenumeration. Om din modell inte redan har distribuerats använder du Azure AI Foundry-portalen, Azure Machine Learning SDK för Python, Azure CLI eller ARM-mallar för att distribuera modellen som ett serverlöst API.

Inferenspaketet installerat

Du kan använda förutsägelser från den här modellen med hjälp Azure.AI.Inference av paketet från NuGet. För att installera det här paketet behöver du följande krav:

  • Slutpunkts-URL:en. Om du vill skapa klientbiblioteket måste du skicka in slutpunkts-URL:en. Slutpunkts-URL:en har formuläret https://your-host-name.your-azure-region.inference.ai.azure.com, där your-host-name är värdnamnet för din unika modelldistribution och your-azure-region är den Azure-region där modellen distribueras (till exempel eastus2).
  • Beroende på din modelldistribution och autentiseringsinställning behöver du antingen en nyckel för att autentisera mot tjänsten eller autentiseringsuppgifter för Microsoft Entra-ID. Nyckeln är en sträng på 32 tecken.

När du har dessa förutsättningar installerar du Azure AI-slutsatsdragningsbiblioteket med följande kommando:

dotnet add package Azure.AI.Inference --prerelease

Du kan också autentisera med Microsoft Entra-ID (tidigare Azure Active Directory). Om du vill använda autentiseringsprovidrar som medföljer Azure SDK installerar du Azure.Identity paketet:

dotnet add package Azure.Identity

Importera följande namnområden:

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

I det här exemplet används även följande namnområden, men du kanske inte alltid behöver dem:

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

Arbeta med chattens slutföranden

I det här avsnittet använder du Azure AI-modellinferens-API :et med en modell för chattavslut för chatt.

Dricks

Med Azure AI-modellinferens-API:et kan du prata med de flesta modeller som distribueras i Azure AI Foundry-portalen med samma kod och struktur, inklusive cohere-kommandochattmodeller.

Skapa en klient för att använda modellen

Skapa först klienten för att använda modellen. I följande kod används en slutpunkts-URL och nyckel som lagras i miljövariabler.

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

Hämta modellens funktioner

Vägen /info returnerar information om den modell som distribueras till slutpunkten. Returnera modellens information genom att anropa följande metod:

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

Svaret är följande:

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

Skapa en begäran om att chatten ska slutföras

I följande exempel visas hur du kan skapa en grundläggande begäran om att slutföra chatten till modellen.

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

Svaret är följande, där du kan se modellens användningsstatistik:

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 Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.

Strömma innehåll

Som standard returnerar API:et för slutförande hela det genererade innehållet i ett enda svar. Om du genererar långa slutföranden kan det ta många sekunder att vänta på svaret.

Du kan strömma innehållet för att hämta det när det genereras. Med strömmande innehåll kan du börja bearbeta slutförandet när innehållet blir tillgängligt. Det här läget returnerar ett objekt som strömmar tillbaka svaret som databaserade serverutskickade händelser. Extrahera segment från deltafältet i stället för meddelandefältet.

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

Om du vill strömma slutföranden använder CompleteStreamingAsync du metoden när du anropar modellen. Observera att i det här exemplet omsluts anropet i en asynkron metod.

Om du vill visualisera utdata definierar du en asynkron metod för att skriva ut strömmen i konsolen.

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

Du kan visualisera hur strömning genererar innehåll:

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

Utforska fler parametrar som stöds av slutsatsdragningsklienten

Utforska andra parametrar som du kan ange i slutsatsdragningsklienten. En fullständig lista över alla parametrar som stöds och deras motsvarande dokumentation finns i API-referensen för Azure AI-modellinferens.

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

Om du vill skicka en parameter som inte finns med i listan över parametrar som stöds kan du skicka den till den underliggande modellen med hjälp av extra parametrar. Se Skicka extra parametrar till modellen.

Skapa JSON-utdata

Cohere-kommandochattmodeller kan skapa JSON-utdata. Ange response_format till json_object för att aktivera JSON-läge och garantera att meddelandet som modellen genererar är giltigt JSON. Du måste också instruera modellen att skapa JSON själv via ett system- eller användarmeddelande. Dessutom kan meddelandeinnehållet vara delvis avskuret om finish_reason="length", vilket indikerar att genereringen överskred max_tokens eller att konversationen överskred den maximala kontextlängden.

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

Skicka extra parametrar till modellen

Med AZURE AI Model Inference API kan du skicka extra parametrar till modellen. Följande kodexempel visar hur du skickar den extra parametern logprobs till modellen.

Innan du skickar extra parametrar till Azure AI-modellinferens-API:et kontrollerar du att din modell stöder dessa extra parametrar. När begäran görs till den underliggande modellen skickas rubriken extra-parameters till modellen med värdet pass-through. Det här värdet anger att slutpunkten ska skicka de extra parametrarna till modellen. Användning av extra parametrar med modellen garanterar inte att modellen faktiskt kan hantera dem. Läs modellens dokumentation för att förstå vilka extra parametrar som stöds.

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

Använda verktyg

Cohere Command-chattmodeller stöder användning av verktyg, vilket kan vara en extraordinär resurs när du behöver avlasta specifika uppgifter från språkmodellen och i stället förlitar dig på ett mer deterministiskt system eller till och med en annan språkmodell. Med AZURE AI Model Inference API kan du definiera verktyg på följande sätt.

I följande kodexempel skapas en verktygsdefinition som kan titta från flyginformation från två olika städer.

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

I det här exemplet är funktionens utdata att det inte finns några tillgängliga flyg för den valda rutten, men användaren bör överväga att ta ett tåg.

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

Kommentar

Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus och Cohere-command-r kräver att ett verktygs svar är ett giltigt JSON-innehåll formaterat som en sträng. När du skapar meddelanden av typen Verktyg kontrollerar du att svaret är en giltig JSON-sträng.

Uppmana modellen att boka flyg med hjälp av den här funktionen:

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

Du kan kontrollera svaret för att ta reda på om ett verktyg behöver anropas. Kontrollera avslutsorsaken för att avgöra om verktyget ska anropas. Kom ihåg att flera verktygstyper kan anges. Det här exemplet visar ett verktyg av typen 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}");

Om du vill fortsätta lägger du till det här meddelandet i chatthistoriken:

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

Nu är det dags att anropa rätt funktion för att hantera verktygsanropet. Följande kodfragment itererar över alla verktygsanrop som anges i svaret och anropar motsvarande funktion med lämpliga parametrar. Svaret läggs också till i chatthistoriken.

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

Visa svaret från modellen:

response = client.Complete(requestOptions);

Tillämpa innehållssäkerhet

Azure AI-modellinferens-API:et stöder Azure AI-innehållssäkerhet. När du använder distributioner med Azure AI-innehållssäkerhet aktiverad passerar indata och utdata genom en uppsättning klassificeringsmodeller som syftar till att identifiera och förhindra utdata från skadligt innehåll. Systemet för innehållsfiltrering (förhandsversion) identifierar och vidtar åtgärder för specifika kategorier av potentiellt skadligt innehåll i både inkommande prompter och slutföranden av utdata.

I följande exempel visas hur du hanterar händelser när modellen identifierar skadligt innehåll i indataprompten och innehållssäkerhet är aktiverat.

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

Dricks

Mer information om hur du kan konfigurera och kontrollera säkerhetsinställningar för Azure AI-innehåll finns i säkerhetsdokumentationen för Azure AI-innehåll.

Cohere-kommandochattmodeller

Cohere Command-chattmodellerna innehåller följande modeller:

Kommando R+ 08-2024 är en generativ stor språkmodell som är optimerad för olika användningsfall, inklusive resonemang, sammanfattning och svar på frågor.

  • Modellarkitektur: Kommando R+ 08-2024 är en autoregressiv språkmodell som använder en optimerad transformeringsarkitektur. Efter förträningen använder modellen övervakad finjustering (SFT) och inställningsträning för att anpassa modellbeteendet till mänskliga preferenser för hjälp och säkerhet.
  • Språk som omfattas: Läget är optimerat för att fungera bra på följande språk: engelska, franska, spanska, italienska, tyska, brasilianska portugisiska, japanska, koreanska, förenklad kinesiska och arabiska.
  • Förträningsdata omfattade även följande 13 språk: ryska, polska, turkiska, vietnamesiska, nederländska, tjeckiska, indonesiska, ukrainska, rumänska, grekiska, hindi, hebreiska och persiska.
  • Kontextlängd: Kommando R+ 08-2024 stöder en kontextlängd på 128 K.
  • Indata: Endast text.
  • Utdata: Endast text.

Vi rekommenderar att du använder Kommando R+ 08-2024 för de arbetsflöden som lutar sig mot funktioner för avancerad hämtning (RAG), användning av flerstegsverktyg (agenter) och strukturerade utdata.

Följande modeller är tillgängliga:

Dricks

Dessutom stöder Cohere användning av ett skräddarsytt API för användning med specifika funktioner i modellen. Om du vill använda det specifika API:et för modellprovidern läser du dokumentationen för Cohere eller läser avsnittet slutsatsdragningsexempel för kodexempel.

Förutsättningar

Om du vill använda Cohere Command-chattmodeller med Azure AI Foundry behöver du följande förutsättningar:

En modelldistribution

Distribution till serverlösa API:er

Cohere Command-chattmodeller kan distribueras till serverlösa API-slutpunkter med betala per användning-fakturering. Den här typen av distribution ger ett sätt att använda modeller som ett API utan att vara värd för dem i din prenumeration, samtidigt som den företagssäkerhet och efterlevnad som organisationer behöver bevaras.

Distribution till en serverlös API-slutpunkt kräver inte kvot från din prenumeration. Om din modell inte redan har distribuerats använder du Azure AI Foundry-portalen, Azure Machine Learning SDK för Python, Azure CLI eller ARM-mallar för att distribuera modellen som ett serverlöst API.

En REST-klient

Modeller som distribueras med Azure AI-modellinferens-API :et kan användas med valfri REST-klient. Om du vill använda REST-klienten behöver du följande krav:

  • Om du vill skapa begäranden måste du skicka in slutpunkts-URL:en. Slutpunkts-URL:en har formuläret https://your-host-name.your-azure-region.inference.ai.azure.com, där your-host-name`` is your unique model deployment host name and din-azure-region är den Azure-region där modellen distribueras (till exempel eastus2).
  • Beroende på din modelldistribution och autentiseringsinställning behöver du antingen en nyckel för att autentisera mot tjänsten eller autentiseringsuppgifter för Microsoft Entra-ID. Nyckeln är en sträng på 32 tecken.

Arbeta med chattens slutföranden

I det här avsnittet använder du Azure AI-modellinferens-API :et med en modell för chattavslut för chatt.

Dricks

Med Azure AI-modellinferens-API:et kan du prata med de flesta modeller som distribueras i Azure AI Foundry-portalen med samma kod och struktur, inklusive cohere-kommandochattmodeller.

Skapa en klient för att använda modellen

Skapa först klienten för att använda modellen. I följande kod används en slutpunkts-URL och nyckel som lagras i miljövariabler.

Hämta modellens funktioner

Vägen /info returnerar information om den modell som distribueras till slutpunkten. Returnera modellens information genom att anropa följande metod:

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

Svaret är följande:

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

Skapa en begäran om att chatten ska slutföras

I följande exempel visas hur du kan skapa en grundläggande begäran om att slutföra chatten till modellen.

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

Svaret är följande, där du kan se modellens användningsstatistik:

{
    "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 Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.

Strömma innehåll

Som standard returnerar API:et för slutförande hela det genererade innehållet i ett enda svar. Om du genererar långa slutföranden kan det ta många sekunder att vänta på svaret.

Du kan strömma innehållet för att hämta det när det genereras. Med strömmande innehåll kan du börja bearbeta slutförandet när innehållet blir tillgängligt. Det här läget returnerar ett objekt som strömmar tillbaka svaret som databaserade serverutskickade händelser. Extrahera segment från deltafältet i stället för meddelandefältet.

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

Du kan visualisera hur strömning genererar innehåll:

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

Det sista meddelandet i strömmen har finish_reason angetts, vilket anger orsaken till att genereringsprocessen stoppas.

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

Utforska fler parametrar som stöds av slutsatsdragningsklienten

Utforska andra parametrar som du kan ange i slutsatsdragningsklienten. En fullständig lista över alla parametrar som stöds och deras motsvarande dokumentation finns i API-referensen för Azure AI-modellinferens.

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

Om du vill skicka en parameter som inte finns med i listan över parametrar som stöds kan du skicka den till den underliggande modellen med hjälp av extra parametrar. Se Skicka extra parametrar till modellen.

Skapa JSON-utdata

Cohere-kommandochattmodeller kan skapa JSON-utdata. Ange response_format till json_object för att aktivera JSON-läge och garantera att meddelandet som modellen genererar är giltigt JSON. Du måste också instruera modellen att skapa JSON själv via ett system- eller användarmeddelande. Dessutom kan meddelandeinnehållet vara delvis avskuret om finish_reason="length", vilket indikerar att genereringen överskred max_tokens eller att konversationen överskred den maximala kontextlängden.

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

Skicka extra parametrar till modellen

Med AZURE AI Model Inference API kan du skicka extra parametrar till modellen. Följande kodexempel visar hur du skickar den extra parametern logprobs till modellen.

Innan du skickar extra parametrar till Azure AI-modellinferens-API:et kontrollerar du att din modell stöder dessa extra parametrar. När begäran görs till den underliggande modellen skickas rubriken extra-parameters till modellen med värdet pass-through. Det här värdet anger att slutpunkten ska skicka de extra parametrarna till modellen. Användning av extra parametrar med modellen garanterar inte att modellen faktiskt kan hantera dem. Läs modellens dokumentation för att förstå vilka extra parametrar som stöds.

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
}

Använda verktyg

Cohere Command-chattmodeller stöder användning av verktyg, vilket kan vara en extraordinär resurs när du behöver avlasta specifika uppgifter från språkmodellen och i stället förlitar dig på ett mer deterministiskt system eller till och med en annan språkmodell. Med AZURE AI Model Inference API kan du definiera verktyg på följande sätt.

I följande kodexempel skapas en verktygsdefinition som kan titta från flyginformation från två olika städer.

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

I det här exemplet är funktionens utdata att det inte finns några tillgängliga flyg för den valda rutten, men användaren bör överväga att ta ett tåg.

Kommentar

Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus och Cohere-command-r kräver att ett verktygs svar är ett giltigt JSON-innehåll formaterat som en sträng. När du skapar meddelanden av typen Verktyg kontrollerar du att svaret är en giltig JSON-sträng.

Uppmana modellen att boka flyg med hjälp av den här funktionen:

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

Du kan kontrollera svaret för att ta reda på om ett verktyg behöver anropas. Kontrollera avslutsorsaken för att avgöra om verktyget ska anropas. Kom ihåg att flera verktygstyper kan anges. Det här exemplet visar ett verktyg av typen 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
    }
}

Om du vill fortsätta lägger du till det här meddelandet i chatthistoriken:

Nu är det dags att anropa rätt funktion för att hantera verktygsanropet. Följande kodfragment itererar över alla verktygsanrop som anges i svaret och anropar motsvarande funktion med lämpliga parametrar. Svaret läggs också till i chatthistoriken.

Visa svaret från modellen:

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

Tillämpa innehållssäkerhet

Azure AI-modellinferens-API:et stöder Azure AI-innehållssäkerhet. När du använder distributioner med Azure AI-innehållssäkerhet aktiverad passerar indata och utdata genom en uppsättning klassificeringsmodeller som syftar till att identifiera och förhindra utdata från skadligt innehåll. Systemet för innehållsfiltrering (förhandsversion) identifierar och vidtar åtgärder för specifika kategorier av potentiellt skadligt innehåll i både inkommande prompter och slutföranden av utdata.

I följande exempel visas hur du hanterar händelser när modellen identifierar skadligt innehåll i indataprompten och innehållssäkerhet är aktiverat.

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

Dricks

Mer information om hur du kan konfigurera och kontrollera säkerhetsinställningar för Azure AI-innehåll finns i säkerhetsdokumentationen för Azure AI-innehåll.

Fler slutsatsdragningsexempel

Fler exempel på hur du använder Cohere-modeller finns i följande exempel och självstudier:

beskrivning Språk Exempel
Webbbegäranden Bash Command-R - Command-R+
Azure AI-slutsatsdragningspaket för JavaScript JavaScript Länk
Azure AI-slutsatsdragningspaket för Python Python Länk
OpenAI SDK (experimentell) Python Länk
LangChain Python Länk
Cohere SDK Python Länk
LiteLLM SDK Python Länk

Exempel på hämtning av utökad generation (RAG) och verktyg

beskrivning Paket Exempel
Skapa ett vektorindex för lokal Facebook AI-likhetssökning (FAISS) med hjälp av cohere-inbäddningar – Langchain langchain, langchain_cohere cohere_faiss_langchain_embed.ipynb
Använd Cohere Command R/R+ för att besvara frågor från data i det lokala FAISS-vektorindexet – Langchain langchain, langchain_cohere command_faiss_langchain.ipynb
Använd Cohere Command R/R+ för att besvara frågor från data i AI-sökvektorindex – Langchain langchain, langchain_cohere cohere-aisearch-langchain-rag.ipynb
Använd Cohere Command R/R+ för att besvara frågor från data i AI-sökvektorindex – Cohere SDK cohere, azure_search_documents cohere-aisearch-rag.ipynb
Kommando-R+-verktyg/funktionsanrop med Hjälp av LangChain cohere, , langchainlangchain_cohere command_tools-langchain.ipynb

Kostnads- och kvotöverväganden för cohere-modeller som distribueras som serverlösa API-slutpunkter

Kvot hanteras per distribution. Varje distribution har en hastighetsgräns på 200 000 token per minut och 1 000 API-begäranden per minut. För närvarande begränsar vi dock en distribution per modell per projekt. Kontakta Microsoft Azure Support om de aktuella hastighetsgränserna inte räcker för dina scenarier.

Enhetliga modeller som distribueras som ett serverlöst API erbjuds av Cohere via Azure Marketplace och integreras med Azure AI Foundry för användning. Du hittar prissättningen för Azure Marketplace när du distribuerar modellen.

Varje gång ett projekt prenumererar på ett visst erbjudande från Azure Marketplace skapas en ny resurs för att spåra de kostnader som är kopplade till förbrukningen. Samma resurs används för att spåra kostnader som är associerade med slutsatsdragning. Flera mätare är dock tillgängliga för att spåra varje scenario oberoende av varandra.

Mer information om hur du spårar kostnader finns i Övervaka kostnader för modeller som erbjuds via Azure Marketplace.