Cohere Command-chatmodellen gebruiken met Azure Machine Learning-studio
In dit artikel leert u meer over Cohere Command-chatmodellen en hoe u deze kunt gebruiken. De cohere-serie met modellen bevat verschillende modellen die zijn geoptimaliseerd voor verschillende gebruiksvoorbeelden, waaronder chatvoltooiingen, insluitingen en herrankering. Cohere-modellen zijn geoptimaliseerd voor verschillende gebruiksvoorbeelden, waaronder redenering, samenvatting en antwoord op vragen.
Belangrijk
Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview-versie wordt geleverd zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt.
Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.
Cohere Command chatmodellen
De Cohere Command-chatmodellen bevatten de volgende modellen:
Command R+ 08-2024 is een generatief groot taalmodel dat is geoptimaliseerd voor verschillende gebruiksvoorbeelden, waaronder redenering, samenvatting en antwoord op vragen.
- Modelarchitectuur: Command R+ 08-2024 is een autoregressief taalmodel dat gebruikmaakt van een geoptimaliseerde transformatorarchitectuur. Na de pretraining gebruikt het model SFT (Supervisie fine-tuning) en voorkeurstraining om het gedrag van het model af te stemmen op menselijke voorkeuren voor behulpzaamheid en veiligheid.
- Talen die worden behandeld: de modus is geoptimaliseerd om goed te presteren in de volgende talen: Engels, Frans, Spaans, Italiaans, Duits, Braziliaans Portugees, Japans, Koreaans, vereenvoudigd Chinees en Arabisch.
- Pretrainingsgegevens omvatten ook de volgende 13 talen: Russisch, Pools, Turks, Vietnamees, Nederlands, Tsjechisch, Indonesisch, Oekraïens, Roemeens, Grieks, Hindi, Hebreeuws en Perzisch.
- Contextlengte: Command R+ 08-2024 ondersteunt een contextlengte van 128 K.
- Invoer: alleen tekst.
- Uitvoer: alleen tekst.
We raden u aan Command R+ 08-2024 te gebruiken voor werkstromen die leunen op complexe rag-functionaliteit (augmented generation), hulpprogramma's met meerdere stappen (agents) en gestructureerde uitvoer.
De volgende modellen zijn beschikbaar:
Tip
Daarnaast ondersteunt Cohere het gebruik van een op maat gemaakte API voor gebruik met specifieke functies van het model. Als u de specifieke API van de modelprovider wilt gebruiken, raadpleegt u de documentatie van Cohere of raadpleegt u de sectie met deductievoorbeelden voor codevoorbeelden.
Vereisten
Voor het gebruik van Cohere Command-chatmodellen met Azure Machine Learning hebt u de volgende vereisten nodig:
Een modelimplementatie
Implementatie naar serverloze API's
Cohere Command-chatmodellen kunnen worden geïmplementeerd op serverloze API-eindpunten met betalen per gebruik-facturering. Dit soort implementatie biedt een manier om modellen als API te gebruiken zonder deze te hosten in uw abonnement, terwijl de bedrijfsbeveiliging en -naleving die organisaties nodig hebben, behouden blijven.
Voor implementatie naar een serverloos API-eindpunt is geen quotum van uw abonnement vereist. Als uw model nog niet is geïmplementeerd, gebruikt u de Azure Machine Learning-studio, Azure Machine Learning-studio, Azure Machine Learning SDK voor Python, de Azure CLI of ARM-sjablonen om het model te implementeren als een serverloze API.
Het deductiepakket geïnstalleerd
U kunt voorspellingen van dit model gebruiken met behulp van het azure-ai-inference
pakket met Python. Als u dit pakket wilt installeren, hebt u de volgende vereisten nodig:
- Python 3.8 of hoger geïnstalleerd, inclusief pip.
- De eindpunt-URL. Als u de clientbibliotheek wilt maken, moet u de eindpunt-URL doorgeven. De eindpunt-URL heeft het formulier
https://your-host-name.your-azure-region.inference.ai.azure.com
, waaryour-host-name
de hostnaam van uw unieke modelimplementatie is enyour-azure-region
de Azure-regio is waar het model wordt geïmplementeerd (bijvoorbeeld eastus2). - Afhankelijk van uw modelimplementatie en verificatievoorkeur hebt u een sleutel nodig om te verifiëren bij de service of referenties voor Microsoft Entra ID. De sleutel is een tekenreeks van 32 tekens.
Zodra u aan deze vereisten voldoet, installeert u het Azure AI-deductiepakket met de volgende opdracht:
pip install azure-ai-inference
Lees meer over het Azure AI-deductiepakket en de naslaginformatie.
Werken met chatvoltooiingen
In deze sectie gebruikt u de deductie-API van het Azure AI-model met een model voor chatvoltooiing voor chatten.
Tip
Met de Azure AI-modeldeductie-API kunt u communiceren met de meeste modellen die zijn geïmplementeerd in Azure Machine Learning met dezelfde code en structuur, waaronder chatmodellen voor cohere-opdrachten.
Een client maken om het model te gebruiken
Maak eerst de client om het model te gebruiken. De volgende code maakt gebruik van een eindpunt-URL en -sleutel die zijn opgeslagen in omgevingsvariabelen.
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"]),
)
De mogelijkheden van het model ophalen
De /info
route retourneert informatie over het model dat is geïmplementeerd op het eindpunt. Retourneer de gegevens van het model door de volgende methode aan te roepen:
model_info = client.get_model_info()
Het antwoord is als volgt:
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
Een aanvraag voor het voltooien van een chat maken
In het volgende voorbeeld ziet u hoe u een aanvraag voor voltooiing van een eenvoudige chat kunt maken voor het model.
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?"),
],
)
Het antwoord is als volgt, waar u de gebruiksstatistieken van het model kunt zien:
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
Inspecteer de usage
sectie in het antwoord om het aantal tokens te zien dat wordt gebruikt voor de prompt, het totale aantal gegenereerde tokens en het aantal tokens dat wordt gebruikt voor de voltooiing.
Inhoud streamen
Standaard retourneert de voltooiings-API de volledige gegenereerde inhoud in één antwoord. Als u lange voltooiingen genereert, kan het wachten op het antwoord vele seconden duren.
U kunt de inhoud streamen om deze te verkrijgen terwijl deze wordt gegenereerd. Met streaming-inhoud kunt u beginnen met het verwerken van de voltooiing wanneer inhoud beschikbaar komt. Deze modus retourneert een object dat het antwoord terugstuurt als gebeurtenissen die alleen door de server worden verzonden. Extraheer segmenten uit het deltaveld in plaats van het berichtveld.
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,
)
Als u voltooiingen wilt streamen, stelt u in stream=True
wanneer u het model aanroept.
Als u de uitvoer wilt visualiseren, definieert u een helperfunctie om de stream af te drukken.
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="")
U kunt visualiseren hoe streaming inhoud genereert:
print_stream(result)
Meer parameters verkennen die worden ondersteund door de deductieclient
Verken andere parameters die u kunt opgeven in de deductieclient. Zie de naslaginformatie over de Deductie-API voor Azure AI-modellen voor een volledige lijst met alle ondersteunde parameters en de bijbehorende documentatie.
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() },
)
Als u een parameter wilt doorgeven die niet in de lijst met ondersteunde parameters staat, kunt u deze doorgeven aan het onderliggende model met behulp van extra parameters. Zie Extra parameters doorgeven aan het model.
JSON-uitvoer maken
Chatmodellen voor cohere Command kunnen JSON-uitvoer maken. Ingesteld response_format
om de JSON-modus in te json_object
schakelen en te garanderen dat het bericht dat het model genereert geldige JSON is. U moet ook het model instrueren om zelf JSON te produceren via een systeem- of gebruikersbericht. De inhoud van het bericht kan ook gedeeltelijk worden afgekapt als finish_reason="length"
, wat aangeeft dat de generatie is overschreden max_tokens
of dat het gesprek de maximale contextlengte heeft overschreden.
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() }
)
Extra parameters doorgeven aan het model
Met de Azure AI-modeldeductie-API kunt u extra parameters doorgeven aan het model. In het volgende codevoorbeeld ziet u hoe u de extra parameter logprobs
doorgeeft aan het model.
Voordat u extra parameters doorgeeft aan de deductie-API van het Azure AI-model, moet u ervoor zorgen dat uw model deze extra parameters ondersteunt. Wanneer de aanvraag wordt ingediend bij het onderliggende model, wordt de header extra-parameters
met de waarde pass-through
doorgegeven aan het model. Met deze waarde wordt aan het eindpunt doorgegeven dat de extra parameters aan het model moeten worden doorgegeven. Het gebruik van extra parameters met het model garandeert niet dat het model deze daadwerkelijk kan verwerken. Lees de documentatie van het model om te begrijpen welke extra parameters worden ondersteund.
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
model_extras={
"logprobs": True
}
)
Hulpprogramma's gebruiken
Cohere Command-chatmodellen ondersteunen het gebruik van hulpprogramma's. Dit kan een buitengewone resource zijn wanneer u specifieke taken uit het taalmodel moet offloaden en in plaats daarvan afhankelijk bent van een meer deterministisch systeem of zelfs een ander taalmodel. Met de Azure AI-modeldeductie-API kunt u hulpprogramma's op de volgende manier definiëren.
In het volgende codevoorbeeld wordt een hulpprogrammadefinitie gemaakt die kan zoeken op basis van vluchtinformatie uit twee verschillende steden.
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]
In dit voorbeeld is de uitvoer van de functie dat er geen vluchten beschikbaar zijn voor de geselecteerde route, maar de gebruiker moet overwegen om een trein te nemen.
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."
}
Notitie
Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus en Cohere-command-r vereisen dat de antwoorden van een hulpprogramma een geldige JSON-inhoud zijn die is opgemaakt als een tekenreeks. Zorg ervoor dat het antwoord een geldige JSON-tekenreeks is bij het samenstellen van berichten van het type Tool.
Vraag het model om vluchten te boeken met behulp van deze functie:
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"
)
U kunt het antwoord controleren om erachter te komen of een hulpprogramma moet worden aangeroepen. Controleer de eindreden om te bepalen of het hulpprogramma moet worden aangeroepen. Houd er rekening mee dat er meerdere hulpprogrammatypen kunnen worden aangegeven. In dit voorbeeld ziet u een hulpprogramma van het type 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)
Als u wilt doorgaan, voegt u dit bericht toe aan de chatgeschiedenis:
messages.append(
response_message
)
Nu is het tijd om de juiste functie aan te roepen om de aanroep van het hulpprogramma af te handelen. Het volgende codefragment herhaalt alle hulpprogramma-aanroepen die in het antwoord worden aangegeven en roept de bijbehorende functie aan met de juiste parameters. Het antwoord wordt ook toegevoegd aan de chatgeschiedenis.
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)
)
)
Bekijk het antwoord van het model:
response = client.complete(
messages=messages,
tools=tools,
)
Inhoudsveiligheid toepassen
De Azure AI-modeldeductie-API ondersteunt de veiligheid van Azure AI-inhoud. Wanneer u implementaties gebruikt waarbij de veiligheid van Azure AI-inhoud is ingeschakeld, passeren invoer en uitvoer een ensemble van classificatiemodellen die zijn gericht op het detecteren en voorkomen van de uitvoer van schadelijke inhoud. Het systeem voor inhoudsfiltering (preview) detecteert en onderneemt actie op specifieke categorieën van mogelijk schadelijke inhoud in invoerprompts en uitvoervoltooiingen.
In het volgende voorbeeld ziet u hoe gebeurtenissen worden verwerkt wanneer het model schadelijke inhoud detecteert in de invoerprompt en de veiligheid van inhoud is ingeschakeld.
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
Tip
Raadpleeg de documentatie over de veiligheid van Azure AI-inhoud voor meer informatie over hoe u de beveiligingsinstellingen voor Azure AI-inhoud kunt configureren en beheren.
Cohere Command chatmodellen
De Cohere Command-chatmodellen bevatten de volgende modellen:
Command R+ 08-2024 is een generatief groot taalmodel dat is geoptimaliseerd voor verschillende gebruiksvoorbeelden, waaronder redenering, samenvatting en antwoord op vragen.
- Modelarchitectuur: Command R+ 08-2024 is een autoregressief taalmodel dat gebruikmaakt van een geoptimaliseerde transformatorarchitectuur. Na de pretraining gebruikt het model SFT (Supervisie fine-tuning) en voorkeurstraining om het gedrag van het model af te stemmen op menselijke voorkeuren voor behulpzaamheid en veiligheid.
- Talen die worden behandeld: de modus is geoptimaliseerd om goed te presteren in de volgende talen: Engels, Frans, Spaans, Italiaans, Duits, Braziliaans Portugees, Japans, Koreaans, vereenvoudigd Chinees en Arabisch.
- Pretrainingsgegevens omvatten ook de volgende 13 talen: Russisch, Pools, Turks, Vietnamees, Nederlands, Tsjechisch, Indonesisch, Oekraïens, Roemeens, Grieks, Hindi, Hebreeuws en Perzisch.
- Contextlengte: Command R+ 08-2024 ondersteunt een contextlengte van 128 K.
- Invoer: alleen tekst.
- Uitvoer: alleen tekst.
We raden u aan Command R+ 08-2024 te gebruiken voor werkstromen die leunen op complexe rag-functionaliteit (augmented generation), hulpprogramma's met meerdere stappen (agents) en gestructureerde uitvoer.
De volgende modellen zijn beschikbaar:
Tip
Daarnaast ondersteunt Cohere het gebruik van een op maat gemaakte API voor gebruik met specifieke functies van het model. Als u de specifieke API van de modelprovider wilt gebruiken, raadpleegt u de documentatie van Cohere of raadpleegt u de sectie met deductievoorbeelden voor codevoorbeelden.
Vereisten
Voor het gebruik van Cohere Command-chatmodellen met Azure Machine Learning hebt u de volgende vereisten nodig:
Een modelimplementatie
Implementatie naar serverloze API's
Cohere Command-chatmodellen kunnen worden geïmplementeerd op serverloze API-eindpunten met betalen per gebruik-facturering. Dit soort implementatie biedt een manier om modellen als API te gebruiken zonder deze te hosten in uw abonnement, terwijl de bedrijfsbeveiliging en -naleving die organisaties nodig hebben, behouden blijven.
Voor implementatie naar een serverloos API-eindpunt is geen quotum van uw abonnement vereist. Als uw model nog niet is geïmplementeerd, gebruikt u de Azure Machine Learning-studio, Azure Machine Learning SDK voor Python, de Azure CLI of ARM-sjablonen om het model te implementeren als een serverloze API.
Het deductiepakket geïnstalleerd
U kunt voorspellingen van dit model gebruiken met behulp van het @azure-rest/ai-inference
pakket van npm
. Als u dit pakket wilt installeren, hebt u de volgende vereisten nodig:
- LTS-versies van
Node.js
metnpm
. - De eindpunt-URL. Als u de clientbibliotheek wilt maken, moet u de eindpunt-URL doorgeven. De eindpunt-URL heeft het formulier
https://your-host-name.your-azure-region.inference.ai.azure.com
, waaryour-host-name
de hostnaam van uw unieke modelimplementatie is enyour-azure-region
de Azure-regio is waar het model wordt geïmplementeerd (bijvoorbeeld eastus2). - Afhankelijk van uw modelimplementatie en verificatievoorkeur hebt u een sleutel nodig om te verifiëren bij de service of referenties voor Microsoft Entra ID. De sleutel is een tekenreeks van 32 tekens.
Nadat u deze vereisten hebt, installeert u de Azure-deductiebibliotheek voor JavaScript met de volgende opdracht:
npm install @azure-rest/ai-inference
Werken met chatvoltooiingen
In deze sectie gebruikt u de deductie-API van het Azure AI-model met een model voor chatvoltooiing voor chatten.
Tip
Met de Azure AI-modeldeductie-API kunt u communiceren met de meeste modellen die zijn geïmplementeerd in Azure Machine Learning met dezelfde code en structuur, waaronder chatmodellen voor cohere-opdrachten.
Een client maken om het model te gebruiken
Maak eerst de client om het model te gebruiken. De volgende code maakt gebruik van een eindpunt-URL en -sleutel die zijn opgeslagen in omgevingsvariabelen.
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)
);
De mogelijkheden van het model ophalen
De /info
route retourneert informatie over het model dat is geïmplementeerd op het eindpunt. Retourneer de gegevens van het model door de volgende methode aan te roepen:
var model_info = await client.path("/info").get()
Het antwoord is als volgt:
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
Een aanvraag voor het voltooien van een chat maken
In het volgende voorbeeld ziet u hoe u een aanvraag voor voltooiing van een eenvoudige chat kunt maken voor het model.
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,
}
});
Het antwoord is als volgt, waar u de gebruiksstatistieken van het model kunt zien:
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
Inspecteer de usage
sectie in het antwoord om het aantal tokens te zien dat wordt gebruikt voor de prompt, het totale aantal gegenereerde tokens en het aantal tokens dat wordt gebruikt voor de voltooiing.
Inhoud streamen
Standaard retourneert de voltooiings-API de volledige gegenereerde inhoud in één antwoord. Als u lange voltooiingen genereert, kan het wachten op het antwoord vele seconden duren.
U kunt de inhoud streamen om deze te verkrijgen terwijl deze wordt gegenereerd. Met streaming-inhoud kunt u beginnen met het verwerken van de voltooiing wanneer inhoud beschikbaar komt. Deze modus retourneert een object dat het antwoord terugstuurt als gebeurtenissen die alleen door de server worden verzonden. Extraheer segmenten uit het deltaveld in plaats van het berichtveld.
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();
Als u voltooiingen wilt streamen, gebruikt .asNodeStream()
u deze wanneer u het model aanroept.
U kunt visualiseren hoe streaming inhoud genereert:
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 ?? "");
}
}
Meer parameters verkennen die worden ondersteund door de deductieclient
Verken andere parameters die u kunt opgeven in de deductieclient. Zie de naslaginformatie over de Deductie-API voor Azure AI-modellen voor een volledige lijst met alle ondersteunde parameters en de bijbehorende documentatie.
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" },
}
});
Als u een parameter wilt doorgeven die niet in de lijst met ondersteunde parameters staat, kunt u deze doorgeven aan het onderliggende model met behulp van extra parameters. Zie Extra parameters doorgeven aan het model.
JSON-uitvoer maken
Chatmodellen voor cohere Command kunnen JSON-uitvoer maken. Ingesteld response_format
om de JSON-modus in te json_object
schakelen en te garanderen dat het bericht dat het model genereert geldige JSON is. U moet ook het model instrueren om zelf JSON te produceren via een systeem- of gebruikersbericht. De inhoud van het bericht kan ook gedeeltelijk worden afgekapt als finish_reason="length"
, wat aangeeft dat de generatie is overschreden max_tokens
of dat het gesprek de maximale contextlengte heeft overschreden.
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" }
}
});
Extra parameters doorgeven aan het model
Met de Azure AI-modeldeductie-API kunt u extra parameters doorgeven aan het model. In het volgende codevoorbeeld ziet u hoe u de extra parameter logprobs
doorgeeft aan het model.
Voordat u extra parameters doorgeeft aan de deductie-API van het Azure AI-model, moet u ervoor zorgen dat uw model deze extra parameters ondersteunt. Wanneer de aanvraag wordt ingediend bij het onderliggende model, wordt de header extra-parameters
met de waarde pass-through
doorgegeven aan het model. Met deze waarde wordt aan het eindpunt doorgegeven dat de extra parameters aan het model moeten worden doorgegeven. Het gebruik van extra parameters met het model garandeert niet dat het model deze daadwerkelijk kan verwerken. Lees de documentatie van het model om te begrijpen welke extra parameters worden ondersteund.
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
}
});
Hulpprogramma's gebruiken
Cohere Command-chatmodellen ondersteunen het gebruik van hulpprogramma's. Dit kan een buitengewone resource zijn wanneer u specifieke taken uit het taalmodel moet offloaden en in plaats daarvan afhankelijk bent van een meer deterministisch systeem of zelfs een ander taalmodel. Met de Azure AI-modeldeductie-API kunt u hulpprogramma's op de volgende manier definiëren.
In het volgende codevoorbeeld wordt een hulpprogrammadefinitie gemaakt die kan zoeken op basis van vluchtinformatie uit twee verschillende steden.
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,
},
];
In dit voorbeeld is de uitvoer van de functie dat er geen vluchten beschikbaar zijn voor de geselecteerde route, maar de gebruiker moet overwegen om een trein te nemen.
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."
}
}
Notitie
Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus en Cohere-command-r vereisen dat de antwoorden van een hulpprogramma een geldige JSON-inhoud zijn die is opgemaakt als een tekenreeks. Zorg ervoor dat het antwoord een geldige JSON-tekenreeks is bij het samenstellen van berichten van het type Tool.
Vraag het model om vluchten te boeken met behulp van deze functie:
var result = await client.path("/chat/completions").post({
body: {
messages: messages,
tools: tools,
tool_choice: "auto"
}
});
U kunt het antwoord controleren om erachter te komen of een hulpprogramma moet worden aangeroepen. Controleer de eindreden om te bepalen of het hulpprogramma moet worden aangeroepen. Houd er rekening mee dat er meerdere hulpprogrammatypen kunnen worden aangegeven. In dit voorbeeld ziet u een hulpprogramma van het type 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);
Als u wilt doorgaan, voegt u dit bericht toe aan de chatgeschiedenis:
messages.push(response_message);
Nu is het tijd om de juiste functie aan te roepen om de aanroep van het hulpprogramma af te handelen. Het volgende codefragment herhaalt alle hulpprogramma-aanroepen die in het antwoord worden aangegeven en roept de bijbehorende functie aan met de juiste parameters. Het antwoord wordt ook toegevoegd aan de chatgeschiedenis.
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
}
);
}
Bekijk het antwoord van het model:
var result = await client.path("/chat/completions").post({
body: {
messages: messages,
tools: tools,
}
});
Inhoudsveiligheid toepassen
De Azure AI-modeldeductie-API ondersteunt de veiligheid van Azure AI-inhoud. Wanneer u implementaties gebruikt waarbij de veiligheid van Azure AI-inhoud is ingeschakeld, passeren invoer en uitvoer een ensemble van classificatiemodellen die zijn gericht op het detecteren en voorkomen van de uitvoer van schadelijke inhoud. Het systeem voor inhoudsfiltering (preview) detecteert en onderneemt actie op specifieke categorieën van mogelijk schadelijke inhoud in invoerprompts en uitvoervoltooiingen.
In het volgende voorbeeld ziet u hoe gebeurtenissen worden verwerkt wanneer het model schadelijke inhoud detecteert in de invoerprompt en de veiligheid van inhoud is ingeschakeld.
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;
}
}
}
Tip
Raadpleeg de documentatie over de veiligheid van Azure AI-inhoud voor meer informatie over hoe u de beveiligingsinstellingen voor Azure AI-inhoud kunt configureren en beheren.
Cohere Command chatmodellen
De Cohere Command-chatmodellen bevatten de volgende modellen:
Command R+ 08-2024 is een generatief groot taalmodel dat is geoptimaliseerd voor verschillende gebruiksvoorbeelden, waaronder redenering, samenvatting en antwoord op vragen.
- Modelarchitectuur: Command R+ 08-2024 is een autoregressief taalmodel dat gebruikmaakt van een geoptimaliseerde transformatorarchitectuur. Na de pretraining gebruikt het model SFT (Supervisie fine-tuning) en voorkeurstraining om het gedrag van het model af te stemmen op menselijke voorkeuren voor behulpzaamheid en veiligheid.
- Talen die worden behandeld: de modus is geoptimaliseerd om goed te presteren in de volgende talen: Engels, Frans, Spaans, Italiaans, Duits, Braziliaans Portugees, Japans, Koreaans, vereenvoudigd Chinees en Arabisch.
- Pretrainingsgegevens omvatten ook de volgende 13 talen: Russisch, Pools, Turks, Vietnamees, Nederlands, Tsjechisch, Indonesisch, Oekraïens, Roemeens, Grieks, Hindi, Hebreeuws en Perzisch.
- Contextlengte: Command R+ 08-2024 ondersteunt een contextlengte van 128 K.
- Invoer: alleen tekst.
- Uitvoer: alleen tekst.
We raden u aan Command R+ 08-2024 te gebruiken voor werkstromen die leunen op complexe rag-functionaliteit (augmented generation), hulpprogramma's met meerdere stappen (agents) en gestructureerde uitvoer.
De volgende modellen zijn beschikbaar:
Tip
Daarnaast ondersteunt Cohere het gebruik van een op maat gemaakte API voor gebruik met specifieke functies van het model. Als u de specifieke API van de modelprovider wilt gebruiken, raadpleegt u de documentatie van Cohere of raadpleegt u de sectie met deductievoorbeelden voor codevoorbeelden.
Vereisten
Voor het gebruik van Cohere Command-chatmodellen met Azure Machine Learning hebt u de volgende vereisten nodig:
Een modelimplementatie
Implementatie naar serverloze API's
Cohere Command-chatmodellen kunnen worden geïmplementeerd op serverloze API-eindpunten met betalen per gebruik-facturering. Dit soort implementatie biedt een manier om modellen als API te gebruiken zonder deze te hosten in uw abonnement, terwijl de bedrijfsbeveiliging en -naleving die organisaties nodig hebben, behouden blijven.
Voor implementatie naar een serverloos API-eindpunt is geen quotum van uw abonnement vereist. Als uw model nog niet is geïmplementeerd, gebruikt u de Azure Machine Learning-studio, Azure Machine Learning SDK voor Python, de Azure CLI of ARM-sjablonen om het model te implementeren als een serverloze API.
Het deductiepakket geïnstalleerd
U kunt voorspellingen van dit model gebruiken met behulp van het Azure.AI.Inference
pakket van NuGet. Als u dit pakket wilt installeren, hebt u de volgende vereisten nodig:
- De eindpunt-URL. Als u de clientbibliotheek wilt maken, moet u de eindpunt-URL doorgeven. De eindpunt-URL heeft het formulier
https://your-host-name.your-azure-region.inference.ai.azure.com
, waaryour-host-name
de hostnaam van uw unieke modelimplementatie is enyour-azure-region
de Azure-regio is waar het model wordt geïmplementeerd (bijvoorbeeld eastus2). - Afhankelijk van uw modelimplementatie en verificatievoorkeur hebt u een sleutel nodig om te verifiëren bij de service of referenties voor Microsoft Entra ID. De sleutel is een tekenreeks van 32 tekens.
Nadat u deze vereisten hebt, installeert u de Azure AI-deductiebibliotheek met de volgende opdracht:
dotnet add package Azure.AI.Inference --prerelease
U kunt zich ook verifiëren met Microsoft Entra ID (voorheen Azure Active Directory). Als u referentieproviders wilt gebruiken die bij de Azure SDK zijn geleverd, installeert u het Azure.Identity
pakket:
dotnet add package Azure.Identity
Importeer de volgende naamruimten:
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
In dit voorbeeld worden ook de volgende naamruimten gebruikt, maar u hebt ze mogelijk niet altijd nodig:
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Reflection;
Werken met chatvoltooiingen
In deze sectie gebruikt u de deductie-API van het Azure AI-model met een model voor chatvoltooiing voor chatten.
Tip
Met de Azure AI-modeldeductie-API kunt u communiceren met de meeste modellen die zijn geïmplementeerd in Azure Machine Learning met dezelfde code en structuur, waaronder chatmodellen voor cohere-opdrachten.
Een client maken om het model te gebruiken
Maak eerst de client om het model te gebruiken. De volgende code maakt gebruik van een eindpunt-URL en -sleutel die zijn opgeslagen in omgevingsvariabelen.
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);
De mogelijkheden van het model ophalen
De /info
route retourneert informatie over het model dat is geïmplementeerd op het eindpunt. Retourneer de gegevens van het model door de volgende methode aan te roepen:
Response<ModelInfo> modelInfo = client.GetModelInfo();
Het antwoord is als volgt:
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
Een aanvraag voor het voltooien van een chat maken
In het volgende voorbeeld ziet u hoe u een aanvraag voor voltooiing van een eenvoudige chat kunt maken voor het model.
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);
Het antwoord is als volgt, waar u de gebruiksstatistieken van het model kunt zien:
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
Inspecteer de usage
sectie in het antwoord om het aantal tokens te zien dat wordt gebruikt voor de prompt, het totale aantal gegenereerde tokens en het aantal tokens dat wordt gebruikt voor de voltooiing.
Inhoud streamen
Standaard retourneert de voltooiings-API de volledige gegenereerde inhoud in één antwoord. Als u lange voltooiingen genereert, kan het wachten op het antwoord vele seconden duren.
U kunt de inhoud streamen om deze te verkrijgen terwijl deze wordt gegenereerd. Met streaming-inhoud kunt u beginnen met het verwerken van de voltooiing wanneer inhoud beschikbaar komt. Deze modus retourneert een object dat het antwoord terugstuurt als gebeurtenissen die alleen door de server worden verzonden. Extraheer segmenten uit het deltaveld in plaats van het berichtveld.
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);
}
Als u voltooiingen wilt streamen, gebruikt CompleteStreamingAsync
u de methode wanneer u het model aanroept. In dit voorbeeld wordt de aanroep verpakt in een asynchrone methode.
Als u de uitvoer wilt visualiseren, definieert u een asynchrone methode om de stream in de console af te drukken.
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);
}
}
}
U kunt visualiseren hoe streaming inhoud genereert:
StreamMessageAsync(client).GetAwaiter().GetResult();
Meer parameters verkennen die worden ondersteund door de deductieclient
Verken andere parameters die u kunt opgeven in de deductieclient. Zie de naslaginformatie over de Deductie-API voor Azure AI-modellen voor een volledige lijst met alle ondersteunde parameters en de bijbehorende documentatie.
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}");
Als u een parameter wilt doorgeven die niet in de lijst met ondersteunde parameters staat, kunt u deze doorgeven aan het onderliggende model met behulp van extra parameters. Zie Extra parameters doorgeven aan het model.
JSON-uitvoer maken
Chatmodellen voor cohere Command kunnen JSON-uitvoer maken. Ingesteld response_format
om de JSON-modus in te json_object
schakelen en te garanderen dat het bericht dat het model genereert geldige JSON is. U moet ook het model instrueren om zelf JSON te produceren via een systeem- of gebruikersbericht. De inhoud van het bericht kan ook gedeeltelijk worden afgekapt als finish_reason="length"
, wat aangeeft dat de generatie is overschreden max_tokens
of dat het gesprek de maximale contextlengte heeft overschreden.
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}");
Extra parameters doorgeven aan het model
Met de Azure AI-modeldeductie-API kunt u extra parameters doorgeven aan het model. In het volgende codevoorbeeld ziet u hoe u de extra parameter logprobs
doorgeeft aan het model.
Voordat u extra parameters doorgeeft aan de deductie-API van het Azure AI-model, moet u ervoor zorgen dat uw model deze extra parameters ondersteunt. Wanneer de aanvraag wordt ingediend bij het onderliggende model, wordt de header extra-parameters
met de waarde pass-through
doorgegeven aan het model. Met deze waarde wordt aan het eindpunt doorgegeven dat de extra parameters aan het model moeten worden doorgegeven. Het gebruik van extra parameters met het model garandeert niet dat het model deze daadwerkelijk kan verwerken. Lees de documentatie van het model om te begrijpen welke extra parameters worden ondersteund.
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}");
Hulpprogramma's gebruiken
Cohere Command-chatmodellen ondersteunen het gebruik van hulpprogramma's. Dit kan een buitengewone resource zijn wanneer u specifieke taken uit het taalmodel moet offloaden en in plaats daarvan afhankelijk bent van een meer deterministisch systeem of zelfs een ander taalmodel. Met de Azure AI-modeldeductie-API kunt u hulpprogramma's op de volgende manier definiëren.
In het volgende codevoorbeeld wordt een hulpprogrammadefinitie gemaakt die kan zoeken op basis van vluchtinformatie uit twee verschillende steden.
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);
In dit voorbeeld is de uitvoer van de functie dat er geen vluchten beschikbaar zijn voor de geselecteerde route, maar de gebruiker moet overwegen om een trein te nemen.
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."
});
}
Notitie
Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus en Cohere-command-r vereisen dat de antwoorden van een hulpprogramma een geldige JSON-inhoud zijn die is opgemaakt als een tekenreeks. Zorg ervoor dat het antwoord een geldige JSON-tekenreeks is bij het samenstellen van berichten van het type Tool.
Vraag het model om vluchten te boeken met behulp van deze functie:
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);
U kunt het antwoord controleren om erachter te komen of een hulpprogramma moet worden aangeroepen. Controleer de eindreden om te bepalen of het hulpprogramma moet worden aangeroepen. Houd er rekening mee dat er meerdere hulpprogrammatypen kunnen worden aangegeven. In dit voorbeeld ziet u een hulpprogramma van het type 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}");
Als u wilt doorgaan, voegt u dit bericht toe aan de chatgeschiedenis:
requestOptions.Messages.Add(new ChatRequestAssistantMessage(response.Value.Choices[0].Message));
Nu is het tijd om de juiste functie aan te roepen om de aanroep van het hulpprogramma af te handelen. Het volgende codefragment herhaalt alle hulpprogramma-aanroepen die in het antwoord worden aangegeven en roept de bijbehorende functie aan met de juiste parameters. Het antwoord wordt ook toegevoegd aan de chatgeschiedenis.
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");
}
Bekijk het antwoord van het model:
response = client.Complete(requestOptions);
Inhoudsveiligheid toepassen
De Azure AI-modeldeductie-API ondersteunt de veiligheid van Azure AI-inhoud. Wanneer u implementaties gebruikt waarbij de veiligheid van Azure AI-inhoud is ingeschakeld, passeren invoer en uitvoer een ensemble van classificatiemodellen die zijn gericht op het detecteren en voorkomen van de uitvoer van schadelijke inhoud. Het systeem voor inhoudsfiltering (preview) detecteert en onderneemt actie op specifieke categorieën van mogelijk schadelijke inhoud in invoerprompts en uitvoervoltooiingen.
In het volgende voorbeeld ziet u hoe gebeurtenissen worden verwerkt wanneer het model schadelijke inhoud detecteert in de invoerprompt en de veiligheid van inhoud is ingeschakeld.
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;
}
}
Tip
Raadpleeg de documentatie over de veiligheid van Azure AI-inhoud voor meer informatie over hoe u de beveiligingsinstellingen voor Azure AI-inhoud kunt configureren en beheren.
Cohere Command chatmodellen
De Cohere Command-chatmodellen bevatten de volgende modellen:
Command R+ 08-2024 is een generatief groot taalmodel dat is geoptimaliseerd voor verschillende gebruiksvoorbeelden, waaronder redenering, samenvatting en antwoord op vragen.
- Modelarchitectuur: Command R+ 08-2024 is een autoregressief taalmodel dat gebruikmaakt van een geoptimaliseerde transformatorarchitectuur. Na de pretraining gebruikt het model SFT (Supervisie fine-tuning) en voorkeurstraining om het gedrag van het model af te stemmen op menselijke voorkeuren voor behulpzaamheid en veiligheid.
- Talen die worden behandeld: de modus is geoptimaliseerd om goed te presteren in de volgende talen: Engels, Frans, Spaans, Italiaans, Duits, Braziliaans Portugees, Japans, Koreaans, vereenvoudigd Chinees en Arabisch.
- Pretrainingsgegevens omvatten ook de volgende 13 talen: Russisch, Pools, Turks, Vietnamees, Nederlands, Tsjechisch, Indonesisch, Oekraïens, Roemeens, Grieks, Hindi, Hebreeuws en Perzisch.
- Contextlengte: Command R+ 08-2024 ondersteunt een contextlengte van 128 K.
- Invoer: alleen tekst.
- Uitvoer: alleen tekst.
We raden u aan Command R+ 08-2024 te gebruiken voor werkstromen die leunen op complexe rag-functionaliteit (augmented generation), hulpprogramma's met meerdere stappen (agents) en gestructureerde uitvoer.
De volgende modellen zijn beschikbaar:
Tip
Daarnaast ondersteunt Cohere het gebruik van een op maat gemaakte API voor gebruik met specifieke functies van het model. Als u de specifieke API van de modelprovider wilt gebruiken, raadpleegt u de documentatie van Cohere of raadpleegt u de sectie met deductievoorbeelden voor codevoorbeelden.
Vereisten
Voor het gebruik van Cohere Command-chatmodellen met Azure Machine Learning hebt u de volgende vereisten nodig:
Een modelimplementatie
Implementatie naar serverloze API's
Cohere Command-chatmodellen kunnen worden geïmplementeerd op serverloze API-eindpunten met betalen per gebruik-facturering. Dit soort implementatie biedt een manier om modellen als API te gebruiken zonder deze te hosten in uw abonnement, terwijl de bedrijfsbeveiliging en -naleving die organisaties nodig hebben, behouden blijven.
Voor implementatie naar een serverloos API-eindpunt is geen quotum van uw abonnement vereist. Als uw model nog niet is geïmplementeerd, gebruikt u de Azure Machine Learning-studio, Azure Machine Learning SDK voor Python, de Azure CLI of ARM-sjablonen om het model te implementeren als een serverloze API.
Een REST-client
Modellen die zijn geïmplementeerd met de Deductie-API van het Azure AI-model kunnen worden gebruikt met behulp van een REST-client. Als u de REST-client wilt gebruiken, hebt u de volgende vereisten nodig:
- Als u de aanvragen wilt maken, moet u de eindpunt-URL doorgeven. De eindpunt-URL heeft het formulier
https://your-host-name.your-azure-region.inference.ai.azure.com
, waarbijyour-host-name`` is your unique model deployment host name and
uw azure-regio de Azure-regio is waar het model is geïmplementeerd (bijvoorbeeld eastus2). - Afhankelijk van uw modelimplementatie en verificatievoorkeur hebt u een sleutel nodig om te verifiëren bij de service of referenties voor Microsoft Entra ID. De sleutel is een tekenreeks van 32 tekens.
Werken met chatvoltooiingen
In deze sectie gebruikt u de deductie-API van het Azure AI-model met een model voor chatvoltooiing voor chatten.
Tip
Met de Azure AI-modeldeductie-API kunt u communiceren met de meeste modellen die zijn geïmplementeerd in Azure Machine Learning met dezelfde code en structuur, waaronder chatmodellen voor cohere-opdrachten.
Een client maken om het model te gebruiken
Maak eerst de client om het model te gebruiken. De volgende code maakt gebruik van een eindpunt-URL en -sleutel die zijn opgeslagen in omgevingsvariabelen.
De mogelijkheden van het model ophalen
De /info
route retourneert informatie over het model dat is geïmplementeerd op het eindpunt. Retourneer de gegevens van het model door de volgende methode aan te roepen:
GET /info HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json
Het antwoord is als volgt:
{
"model_name": "Cohere-command-r-plus-08-2024",
"model_type": "chat-completions",
"model_provider_name": "Cohere"
}
Een aanvraag voor het voltooien van een chat maken
In het volgende voorbeeld ziet u hoe u een aanvraag voor voltooiing van een eenvoudige chat kunt maken voor het model.
{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "How many languages are in the world?"
}
]
}
Het antwoord is als volgt, waar u de gebruiksstatistieken van het model kunt zien:
{
"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
}
}
Inspecteer de usage
sectie in het antwoord om het aantal tokens te zien dat wordt gebruikt voor de prompt, het totale aantal gegenereerde tokens en het aantal tokens dat wordt gebruikt voor de voltooiing.
Inhoud streamen
Standaard retourneert de voltooiings-API de volledige gegenereerde inhoud in één antwoord. Als u lange voltooiingen genereert, kan het wachten op het antwoord vele seconden duren.
U kunt de inhoud streamen om deze te verkrijgen terwijl deze wordt gegenereerd. Met streaming-inhoud kunt u beginnen met het verwerken van de voltooiing wanneer inhoud beschikbaar komt. Deze modus retourneert een object dat het antwoord terugstuurt als gebeurtenissen die alleen door de server worden verzonden. Extraheer segmenten uit het deltaveld in plaats van het berichtveld.
{
"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
}
U kunt visualiseren hoe streaming inhoud genereert:
{
"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
}
]
}
Het laatste bericht in de stream is finish_reason
ingesteld, wat de reden aangeeft waarom het generatieproces moet worden gestopt.
{
"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
}
}
Meer parameters verkennen die worden ondersteund door de deductieclient
Verken andere parameters die u kunt opgeven in de deductieclient. Zie de naslaginformatie over de Deductie-API voor Azure AI-modellen voor een volledige lijst met alle ondersteunde parameters en de bijbehorende documentatie.
{
"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
}
}
Als u een parameter wilt doorgeven die niet in de lijst met ondersteunde parameters staat, kunt u deze doorgeven aan het onderliggende model met behulp van extra parameters. Zie Extra parameters doorgeven aan het model.
JSON-uitvoer maken
Chatmodellen voor cohere Command kunnen JSON-uitvoer maken. Ingesteld response_format
om de JSON-modus in te json_object
schakelen en te garanderen dat het bericht dat het model genereert geldige JSON is. U moet ook het model instrueren om zelf JSON te produceren via een systeem- of gebruikersbericht. De inhoud van het bericht kan ook gedeeltelijk worden afgekapt als finish_reason="length"
, wat aangeeft dat de generatie is overschreden max_tokens
of dat het gesprek de maximale contextlengte heeft overschreden.
{
"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
}
}
Extra parameters doorgeven aan het model
Met de Azure AI-modeldeductie-API kunt u extra parameters doorgeven aan het model. In het volgende codevoorbeeld ziet u hoe u de extra parameter logprobs
doorgeeft aan het model.
Voordat u extra parameters doorgeeft aan de deductie-API van het Azure AI-model, moet u ervoor zorgen dat uw model deze extra parameters ondersteunt. Wanneer de aanvraag wordt ingediend bij het onderliggende model, wordt de header extra-parameters
met de waarde pass-through
doorgegeven aan het model. Met deze waarde wordt aan het eindpunt doorgegeven dat de extra parameters aan het model moeten worden doorgegeven. Het gebruik van extra parameters met het model garandeert niet dat het model deze daadwerkelijk kan verwerken. Lees de documentatie van het model om te begrijpen welke extra parameters worden ondersteund.
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
}
Hulpprogramma's gebruiken
Cohere Command-chatmodellen ondersteunen het gebruik van hulpprogramma's. Dit kan een buitengewone resource zijn wanneer u specifieke taken uit het taalmodel moet offloaden en in plaats daarvan afhankelijk bent van een meer deterministisch systeem of zelfs een ander taalmodel. Met de Azure AI-modeldeductie-API kunt u hulpprogramma's op de volgende manier definiëren.
In het volgende codevoorbeeld wordt een hulpprogrammadefinitie gemaakt die vluchtinformatie uit twee verschillende steden kan zoeken.
{
"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"
]
}
}
}
In dit voorbeeld is de uitvoer van de functie dat er geen vluchten beschikbaar zijn voor de geselecteerde route, maar de gebruiker moet overwegen om een trein te nemen.
Notitie
Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus en Cohere-command-r vereisen dat de antwoorden van een hulpprogramma een geldige JSON-inhoud zijn die is opgemaakt als een tekenreeks. Zorg ervoor dat het antwoord een geldige JSON-tekenreeks is bij het samenstellen van berichten van het type Tool.
Vraag het model om vluchten te boeken met behulp van deze functie:
{
"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"
]
}
}
}
]
}
U kunt het antwoord controleren om erachter te komen of een hulpprogramma moet worden aangeroepen. Controleer de eindreden om te bepalen of het hulpprogramma moet worden aangeroepen. Houd er rekening mee dat er meerdere hulpprogrammatypen kunnen worden aangegeven. In dit voorbeeld ziet u een hulpprogramma van het type 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
}
}
Als u wilt doorgaan, voegt u dit bericht toe aan de chatgeschiedenis:
Nu is het tijd om de juiste functie aan te roepen om de aanroep van het hulpprogramma af te handelen. Het volgende codefragment herhaalt alle hulpprogramma-aanroepen die in het antwoord worden aangegeven en roept de bijbehorende functie aan met de juiste parameters. Het antwoord wordt ook toegevoegd aan de chatgeschiedenis.
Bekijk het antwoord van het model:
{
"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"]
}
}
}
]
}
Inhoudsveiligheid toepassen
De Azure AI-modeldeductie-API ondersteunt de veiligheid van Azure AI-inhoud. Wanneer u implementaties gebruikt waarbij de veiligheid van Azure AI-inhoud is ingeschakeld, passeren invoer en uitvoer een ensemble van classificatiemodellen die zijn gericht op het detecteren en voorkomen van de uitvoer van schadelijke inhoud. Het systeem voor inhoudsfiltering (preview) detecteert en onderneemt actie op specifieke categorieën van mogelijk schadelijke inhoud in invoerprompts en uitvoervoltooiingen.
In het volgende voorbeeld ziet u hoe gebeurtenissen worden verwerkt wanneer het model schadelijke inhoud detecteert in de invoerprompt en de veiligheid van inhoud is ingeschakeld.
{
"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
}
}
Tip
Raadpleeg de documentatie over de veiligheid van Azure AI-inhoud voor meer informatie over hoe u de beveiligingsinstellingen voor Azure AI-inhoud kunt configureren en beheren.
Meer deductievoorbeelden
Zie de volgende voorbeelden en zelfstudies voor meer voorbeelden van het gebruik van Cohere-modellen:
Beschrijving | Taal | Voorbeeld |
---|---|---|
Webaanvragen | Bash | Command-R - Command-R+ |
Azure AI-deductiepakket voor JavaScript | JavaScript | Koppeling |
Azure AI-deductiepakket voor Python | Python | Koppeling |
OpenAI SDK (experimenteel) | Python | Koppeling |
LangChain | Python | Koppeling |
Cohere SDK | Python | Koppeling |
LiteLLM SDK | Python | Koppeling |
Rag -voorbeelden (Augmented Generation) ophalen en hulpprogramma's gebruiken
Beschrijving | Pakketten | Voorbeeld |
---|---|---|
Een lokale FAISS-vectorindex (Facebook AI similarity search) maken met cohere embeddings - Langchain | langchain , langchain_cohere |
cohere_faiss_langchain_embed.ipynb |
Cohere Command R/R+ gebruiken om vragen te beantwoorden van gegevens in de lokale FAISS-vectorindex - Langchain | langchain , langchain_cohere |
command_faiss_langchain.ipynb |
Cohere Command R/R+ gebruiken om vragen te beantwoorden van gegevens in de AI-zoekvectorindex - Langchain | langchain , langchain_cohere |
cohere-aisearch-langchain-rag.ipynb |
Cohere Command R/R+ gebruiken om vragen te beantwoorden van gegevens in de AI-zoekvectorindex - Cohere SDK | cohere , azure_search_documents |
cohere-aisearch-rag.ipynb |
Opdracht R+ hulpprogramma/functie aanroepen, met behulp van LangChain | cohere , , langchain langchain_cohere |
command_tools-langchain.ipynb |
Kosten- en quotumoverwegingen voor Cohere-modellen die zijn geïmplementeerd als serverloze API-eindpunten
Het quotum wordt beheerd per implementatie. Elke implementatie heeft een frequentielimiet van 200.000 tokens per minuut en 1000 API-aanvragen per minuut. Momenteel beperken we echter tot één implementatie per model per project. Neem contact op met de ondersteuning voor Microsoft Azure als de huidige frequentielimieten niet voldoende zijn voor uw scenario's.
Cohere-modellen die zijn geïmplementeerd als een serverloze API, worden aangeboden door Cohere via Azure Marketplace en geïntegreerd met Azure Machine Learning-studio voor gebruik. U krijgt de prijzen voor de Azure Marketplace wanneer u het model implementeert.
Telkens wanneer een project zich abonneert op een bepaalde aanbieding vanuit Azure Marketplace, wordt er een nieuwe resource gemaakt om de kosten te traceren die zijn gekoppeld aan het verbruik. Dezelfde resource wordt gebruikt om de kosten te traceren die zijn gekoppeld aan deductie; er zijn echter meerdere meters beschikbaar om elk scenario onafhankelijk te traceren.
Zie Monitoring van kosten voor modellen die worden aangeboden via Azure Marketplace voor meer informatie over het traceren van kosten.