A Cohere Command csevegőmodelljeinek használata az Azure Machine Learning Studióval
Ebben a cikkben megismerheti a Cohere Command csevegési modelljeit és azok használatát. A Cohere modellcsalád különböző használati esetekre optimalizált modelleket tartalmaz, beleértve a csevegések befejezését, a beágyazásokat és a rerankot. A cohere-modellek különböző használati esetekre vannak optimalizálva, amelyek közé tartozik az érvelés, az összegzés és a kérdések megválaszolása.
Fontos
Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik.
További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
A Cohere Command csevegési modelljei
A Cohere Command csevegőmodelljei a következő modelleket tartalmazzák:
Az R+ 08-2024 parancs egy generatív nagy nyelvi modell, amely különböző használati esetekre van optimalizálva, beleértve az érvelést, az összegzést és a kérdések megválaszolását.
- Modellarchitektúra: A Command R+ 08-2024 egy autoregresszív nyelvi modell, amely optimalizált transzformátorarchitektúrát használ. Az előzetes betanítás után a modell felügyelt finomhangolást (SFT) és preferenciális betanítást használ a modell viselkedésének az emberi preferenciákhoz való igazításához a segítőkészség és a biztonság érdekében.
- Nyelvek: A mód úgy van optimalizálva, hogy jól teljesítsen a következő nyelveken: angol, francia, spanyol, olasz, német, brazil portugál, japán, koreai, egyszerűsített kínai és arab.
- A betanítás előtti adatok a következő 13 nyelvet tartalmazzák: orosz, lengyel, török, vietnami, holland, cseh, indonéz, ukrán, román, görög, hindi, héber és perzsa.
- Környezet hossza: Az R+ 08-2024 parancs 128 K környezeti hosszt támogat.
- Bemenet: Csak szöveg.
- Kimenet: Csak szöveg.
Javasoljuk, hogy az R+ 08-2024 parancsot használja azokhoz a munkafolyamatokhoz, amelyek összetett lekéréses kiterjesztett generációs (RAG) funkciókra, többlépéses eszközhasználatra (ügynökökre) és strukturált kimenetekre támaszkodnak.
A következő modellek állnak rendelkezésre:
Tipp.
Emellett a Cohere támogatja a testre szabott API használatát a modell adott funkcióival való használatra. A modellszolgáltatóspecifikus API használatához tekintse meg a Cohere dokumentációját , vagy tekintse meg a példákra vonatkozó következtetési szakaszt .
Előfeltételek
A Cohere Command csevegőmodelljeinek Azure Machine Learning-lel való használatához a következő előfeltételekre van szükség:
Modell üzembe helyezése
Üzembe helyezés kiszolgáló nélküli API-kban
A Cohere Command csevegőmodelljei üzembe helyezhetők a kiszolgáló nélküli API-végpontokon használatalapú fizetéses számlázással. Ez a fajta üzembe helyezés lehetővé teszi a modellek API-ként való használatát anélkül, hogy az előfizetésében üzemelteti őket, miközben megtartja a vállalati biztonságot és megfelelőséget, amire a szervezeteknek szükségük van.
A kiszolgáló nélküli API-végponton való üzembe helyezéshez nem szükséges kvóta az előfizetésből. Ha a modell még nincs üzembe helyezve, használja az Azure Machine Learning Studiót, az Azure Machine Learning Studiót, a Pythonhoz készült Azure Machine Learning SDK-t, az Azure CLI-t vagy az ARM-sablonokat a modell kiszolgáló nélküli API-ként való üzembe helyezéséhez.
A következtetési csomag telepítve van
A modellből származó előrejelzéseket a azure-ai-inference
Python-csomag használatával használhatja. A csomag telepítéséhez a következő előfeltételekre van szükség:
- A Python 3.8 vagy újabb verziója telepítve van, beleértve a pipet is.
- A végpont URL-címe. Az ügyfélkódtár létrehozásához meg kell adnia a végpont URL-címét. A végpont URL-címe az űrlappal
https://your-host-name.your-azure-region.inference.ai.azure.com
rendelkezik, aholyour-host-name
az egyedi modell üzembehelyezési állomásneve, ésyour-azure-region
az az Azure-régió, ahol a modell üzembe van helyezve (például eastus2). - A modell üzembe helyezési és hitelesítési beállításaitól függően szüksége van egy kulcsra a szolgáltatáson való hitelesítéshez, vagy a Microsoft Entra-azonosító hitelesítő adataihoz. A kulcs egy 32 karakterből áll.
Ha már rendelkezik ezekkel az előfeltételekkel, telepítse az Azure AI-következtetési csomagot a következő paranccsal:
pip install azure-ai-inference
További információ az Azure AI következtetési csomagjáról és referenciájáról.
Csevegés befejezésének használata
Ebben a szakaszban az Azure AI-modell következtetési API-jával cseveghet egy csevegés befejezései modellel.
Tipp.
Az Azure AI-modell következtetési API-ja lehetővé teszi, hogy az Azure Machine Learningben üzembe helyezett legtöbb modellel ugyanazzal a kóddal és struktúrával beszéljen, beleértve a Cohere Command csevegési modelljeit is.
Ügyfél létrehozása a modell használatához
Először hozza létre az ügyfelet a modell használatához. Az alábbi kód egy környezeti változókban tárolt végponti URL-címet és kulcsot használ.
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"]),
)
A modell képességeinek lekérése
Az /info
útvonal a végponton üzembe helyezett modell adatait adja vissza. Adja vissza a modell adatait a következő metódus meghívásával:
model_info = client.get_model_info()
A válasz a következő:
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
Csevegés befejezésére vonatkozó kérés létrehozása
Az alábbi példa bemutatja, hogyan hozhat létre alapszintű csevegés-befejezési kérelmet a modellnek.
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?"),
],
)
A válasz a következő, ahol láthatja a modell használati statisztikáit:
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
A válasz szakaszában megtekintheti a parancssorhoz használt jogkivonatok számát, a létrehozott jogkivonatok teljes számát és a befejezéshez használt tokenek számát.
Tartalom streamelése
Alapértelmezés szerint a befejezési API egyetlen válaszban adja vissza a teljes generált tartalmat. Ha hosszú befejezéseket hoz létre, a válaszra való várakozás több másodpercet is igénybe vehet.
Streamelheti a tartalmat, hogy megkapja a létrehozás közben. A streamelési tartalom lehetővé teszi a befejezés feldolgozását, amint a tartalom elérhetővé válik. Ez a mód egy olyan objektumot ad vissza, amely a választ csak a kiszolgáló által küldött eseményekként küldi vissza. Az üzenetmező helyett bontsa ki az adattömböket a delta mezőből.
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,
)
A befejezések streameléséhez állítsa be stream=True
, amikor meghívja a modellt.
A kimenet megjelenítéséhez definiáljon egy segédfüggvényt a stream nyomtatásához.
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="")
Vizualizálhatja, hogyan hozza létre a stream a tartalmat:
print_stream(result)
A következtetési ügyfél által támogatott további paraméterek megismerése
Ismerje meg a következtetési ügyfélben megadható egyéb paramétereket. Az összes támogatott paraméter és azok dokumentációjának teljes listáját az Azure AI Model Inference API-referencia tartalmazza.
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() },
)
Ha olyan paramétert szeretne átadni, amely nem szerepel a támogatott paraméterek listájában, további paraméterekkel továbbíthatja azt a mögöttes modellnek. Lásd: További paraméterek átadása a modellnek.
JSON-kimenetek létrehozása
A Cohere Command csevegőmodelljei JSON-kimeneteket hozhatnak létre. Úgy van beállítva response_format
, json_object
hogy engedélyezze a JSON-módot, és garantálja, hogy a modell által generált üzenet érvényes JSON- Arra is utasítania kell a modellt, hogy saját maga állítson elő JSON-t egy rendszeren vagy felhasználói üzeneten keresztül. Emellett előfordulhat, hogy az üzenet tartalma részben le lesz vágva, ha finish_reason="length"
az azt jelzi, hogy a generáció túllépte a generációt max_tokens
, vagy hogy a beszélgetés túllépte a környezet maximális hosszát.
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() }
)
További paraméterek átadása a modellnek
Az Azure AI Model Inference API-val további paramétereket adhat át a modellnek. Az alábbi példakód bemutatja, hogyan adhatja át a plusz paramétert logprobs
a modellnek.
Mielőtt további paramétereket ad át az Azure AI-modell következtetési API-jának, győződjön meg arról, hogy a modell támogatja ezeket az extra paramétereket. Amikor a kérést a mögöttes modellnek küldi el, a fejlécet extra-parameters
a rendszer átadja a modellnek az értékkel pass-through
. Ez az érték arra utasítja a végpontot, hogy adja át a további paramétereket a modellnek. Az extra paraméterek használata a modellel nem garantálja, hogy a modell ténylegesen képes kezelni őket. A modell dokumentációjában megismerheti, hogy mely további paraméterek támogatottak.
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
model_extras={
"logprobs": True
}
)
Eszközök használata
A Cohere Command csevegőmodelljei támogatják az eszközök használatát, ami rendkívüli erőforrás lehet, ha konkrét feladatokat kell kiszerveznie a nyelvi modellből, és ehelyett egy determinisztikusabb rendszerre vagy akár egy másik nyelvi modellre kell támaszkodnia. Az Azure AI Model Inference API-val az alábbi módon határozhatja meg az eszközöket.
Az alábbi példakód egy eszközdefiníciót hoz létre, amely két különböző város repülési adataiból tud keresni.
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]
Ebben a példában a függvény kimenete az, hogy a kiválasztott útvonalhoz nem érhetők el járatok, de a felhasználónak érdemes megfontolnia a vonatot.
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."
}
Feljegyzés
A Cohere-command-r-plus-08-2024, a Cohere-command-r-08-2024, a Cohere-command-r-plus és a Cohere-command-r használatához az eszköz válaszainak sztringként formázott érvényes JSON-tartalomnak kell lenniük. Eszköz típusú üzenetek létrehozásakor győződjön meg arról, hogy a válasz érvényes JSON-sztring.
Kérje meg a modellt, hogy foglaljon le járatokat a függvény segítségével:
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"
)
A választ megvizsgálva megállapíthatja, hogy meg kell-e hívni egy eszközt. Vizsgálja meg a befejezés okát annak megállapításához, hogy az eszközt meg kell-e hívni. Ne feledje, hogy több eszköztípus is jelezhető. Ez a példa egy típuseszközt function
mutat be.
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)
A folytatáshoz fűzze hozzá ezt az üzenetet a csevegési előzményekhez:
messages.append(
response_message
)
Most itt az ideje, hogy meghívja a megfelelő függvényt az eszközhívás kezeléséhez. A következő kódrészlet a válaszban megjelölt összes eszközhíváson át hatja át, és meghívja a megfelelő függvényt a megfelelő paraméterekkel. A válasz hozzá van fűzve a csevegési előzményekhez is.
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)
)
)
A modell válaszának megtekintése:
response = client.complete(
messages=messages,
tools=tools,
)
Tartalombiztonság alkalmazása
Az Azure AI-modell következtetési API-ja támogatja az Azure AI-tartalombiztonságot. Ha bekapcsolt Azure AI-tartalombiztonsággal rendelkező üzembe helyezéseket használ, a bemenetek és kimenetek besorolási modellek együttesén haladnak át, amelyek célja a káros tartalmak kimenetének észlelése és megakadályozása. A tartalomszűrési (előzetes verzió) rendszer észleli és műveletet hajt végre a potenciálisan káros tartalmak meghatározott kategóriáiban mind a bemeneti kérésekben, mind a kimeneti befejezésekben.
Az alábbi példa bemutatja, hogyan kezelheti az eseményeket, amikor a modell káros tartalmat észlel a bemeneti parancssorban, és engedélyezve van a tartalombiztonság.
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
A Cohere Command csevegési modelljei
A Cohere Command csevegőmodelljei a következő modelleket tartalmazzák:
Az R+ 08-2024 parancs egy generatív nagy nyelvi modell, amely különböző használati esetekre van optimalizálva, beleértve az érvelést, az összegzést és a kérdések megválaszolását.
- Modellarchitektúra: A Command R+ 08-2024 egy autoregresszív nyelvi modell, amely optimalizált transzformátorarchitektúrát használ. Az előzetes betanítás után a modell felügyelt finomhangolást (SFT) és preferenciális betanítást használ a modell viselkedésének az emberi preferenciákhoz való igazításához a segítőkészség és a biztonság érdekében.
- Nyelvek: A mód úgy van optimalizálva, hogy jól teljesítsen a következő nyelveken: angol, francia, spanyol, olasz, német, brazil portugál, japán, koreai, egyszerűsített kínai és arab.
- A betanítás előtti adatok a következő 13 nyelvet tartalmazzák: orosz, lengyel, török, vietnami, holland, cseh, indonéz, ukrán, román, görög, hindi, héber és perzsa.
- Környezet hossza: Az R+ 08-2024 parancs 128 K környezeti hosszt támogat.
- Bemenet: Csak szöveg.
- Kimenet: Csak szöveg.
Javasoljuk, hogy az R+ 08-2024 parancsot használja azokhoz a munkafolyamatokhoz, amelyek összetett lekéréses kiterjesztett generációs (RAG) funkciókra, többlépéses eszközhasználatra (ügynökökre) és strukturált kimenetekre támaszkodnak.
A következő modellek állnak rendelkezésre:
Tipp.
Emellett a Cohere támogatja a testre szabott API használatát a modell adott funkcióival való használatra. A modellszolgáltatóspecifikus API használatához tekintse meg a Cohere dokumentációját , vagy tekintse meg a példákra vonatkozó következtetési szakaszt .
Előfeltételek
A Cohere Command csevegőmodelljeinek Azure Machine Learning-lel való használatához a következő előfeltételekre van szükség:
Modell üzembe helyezése
Üzembe helyezés kiszolgáló nélküli API-kban
A Cohere Command csevegőmodelljei üzembe helyezhetők a kiszolgáló nélküli API-végpontokon használatalapú fizetéses számlázással. Ez a fajta üzembe helyezés lehetővé teszi a modellek API-ként való használatát anélkül, hogy az előfizetésében üzemelteti őket, miközben megtartja a vállalati biztonságot és megfelelőséget, amire a szervezeteknek szükségük van.
A kiszolgáló nélküli API-végponton való üzembe helyezéshez nem szükséges kvóta az előfizetésből. Ha a modell még nincs üzembe helyezve, a modell kiszolgáló nélküli API-ként való üzembe helyezéséhez használja az Azure Machine Learning Studiót, a Pythonhoz készült Azure Machine Learning SDK-t, az Azure CLI-t vagy az ARM-sablonokat.
A következtetési csomag telepítve van
A modellből származó előrejelzéseket a @azure-rest/ai-inference
forrásból származó npm
csomag használatával használhatja fel. A csomag telepítéséhez a következő előfeltételekre van szükség:
- LTS-verziók a
Node.js
withnpm
. - A végpont URL-címe. Az ügyfélkódtár létrehozásához meg kell adnia a végpont URL-címét. A végpont URL-címe az űrlappal
https://your-host-name.your-azure-region.inference.ai.azure.com
rendelkezik, aholyour-host-name
az egyedi modell üzembehelyezési állomásneve, ésyour-azure-region
az az Azure-régió, ahol a modell üzembe van helyezve (például eastus2). - A modell üzembe helyezési és hitelesítési beállításaitól függően szüksége van egy kulcsra a szolgáltatáson való hitelesítéshez, vagy a Microsoft Entra-azonosító hitelesítő adataihoz. A kulcs egy 32 karakterből áll.
Ha már rendelkezik ezekkel az előfeltételekkel, telepítse a JavaScripthez készült Azure Inference-kódtárat a következő paranccsal:
npm install @azure-rest/ai-inference
Csevegés befejezésének használata
Ebben a szakaszban az Azure AI-modell következtetési API-jával cseveghet egy csevegés befejezései modellel.
Tipp.
Az Azure AI-modell következtetési API-ja lehetővé teszi, hogy az Azure Machine Learningben üzembe helyezett legtöbb modellel ugyanazzal a kóddal és struktúrával beszéljen, beleértve a Cohere Command csevegési modelljeit is.
Ügyfél létrehozása a modell használatához
Először hozza létre az ügyfelet a modell használatához. Az alábbi kód egy környezeti változókban tárolt végponti URL-címet és kulcsot használ.
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)
);
A modell képességeinek lekérése
Az /info
útvonal a végponton üzembe helyezett modell adatait adja vissza. Adja vissza a modell adatait a következő metódus meghívásával:
var model_info = await client.path("/info").get()
A válasz a következő:
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
Csevegés befejezésére vonatkozó kérés létrehozása
Az alábbi példa bemutatja, hogyan hozhat létre alapszintű csevegés-befejezési kérelmet a modellnek.
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,
}
});
A válasz a következő, ahol láthatja a modell használati statisztikáit:
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
A válasz szakaszában megtekintheti a parancssorhoz használt jogkivonatok számát, a létrehozott jogkivonatok teljes számát és a befejezéshez használt tokenek számát.
Tartalom streamelése
Alapértelmezés szerint a befejezési API egyetlen válaszban adja vissza a teljes generált tartalmat. Ha hosszú befejezéseket hoz létre, a válaszra való várakozás több másodpercet is igénybe vehet.
Streamelheti a tartalmat, hogy megkapja a létrehozás közben. A streamelési tartalom lehetővé teszi a befejezés feldolgozását, amint a tartalom elérhetővé válik. Ez a mód egy olyan objektumot ad vissza, amely a választ csak a kiszolgáló által küldött eseményekként küldi vissza. Az üzenetmező helyett bontsa ki az adattömböket a delta mezőből.
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();
A befejezések streameléséhez használja .asNodeStream()
a modellt.
Vizualizálhatja, hogyan hozza létre a stream a tartalmat:
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 ?? "");
}
}
A következtetési ügyfél által támogatott további paraméterek megismerése
Ismerje meg a következtetési ügyfélben megadható egyéb paramétereket. Az összes támogatott paraméter és azok dokumentációjának teljes listáját az Azure AI Model Inference API-referencia tartalmazza.
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" },
}
});
Ha olyan paramétert szeretne átadni, amely nem szerepel a támogatott paraméterek listájában, további paraméterekkel továbbíthatja azt a mögöttes modellnek. Lásd: További paraméterek átadása a modellnek.
JSON-kimenetek létrehozása
A Cohere Command csevegőmodelljei JSON-kimeneteket hozhatnak létre. Úgy van beállítva response_format
, json_object
hogy engedélyezze a JSON-módot, és garantálja, hogy a modell által generált üzenet érvényes JSON- Arra is utasítania kell a modellt, hogy saját maga állítson elő JSON-t egy rendszeren vagy felhasználói üzeneten keresztül. Emellett előfordulhat, hogy az üzenet tartalma részben le lesz vágva, ha finish_reason="length"
az azt jelzi, hogy a generáció túllépte a generációt max_tokens
, vagy hogy a beszélgetés túllépte a környezet maximális hosszát.
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" }
}
});
További paraméterek átadása a modellnek
Az Azure AI Model Inference API-val további paramétereket adhat át a modellnek. Az alábbi példakód bemutatja, hogyan adhatja át a plusz paramétert logprobs
a modellnek.
Mielőtt további paramétereket ad át az Azure AI-modell következtetési API-jának, győződjön meg arról, hogy a modell támogatja ezeket az extra paramétereket. Amikor a kérést a mögöttes modellnek küldi el, a fejlécet extra-parameters
a rendszer átadja a modellnek az értékkel pass-through
. Ez az érték arra utasítja a végpontot, hogy adja át a további paramétereket a modellnek. Az extra paraméterek használata a modellel nem garantálja, hogy a modell ténylegesen képes kezelni őket. A modell dokumentációjában megismerheti, hogy mely további paraméterek támogatottak.
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
}
});
Eszközök használata
A Cohere Command csevegőmodelljei támogatják az eszközök használatát, ami rendkívüli erőforrás lehet, ha konkrét feladatokat kell kiszerveznie a nyelvi modellből, és ehelyett egy determinisztikusabb rendszerre vagy akár egy másik nyelvi modellre kell támaszkodnia. Az Azure AI Model Inference API-val az alábbi módon határozhatja meg az eszközöket.
Az alábbi példakód egy eszközdefiníciót hoz létre, amely két különböző város repülési adataiból tud keresni.
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,
},
];
Ebben a példában a függvény kimenete az, hogy a kiválasztott útvonalhoz nem érhetők el járatok, de a felhasználónak érdemes megfontolnia a vonatot.
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."
}
}
Feljegyzés
A Cohere-command-r-plus-08-2024, a Cohere-command-r-08-2024, a Cohere-command-r-plus és a Cohere-command-r használatához az eszköz válaszainak sztringként formázott érvényes JSON-tartalomnak kell lenniük. Eszköz típusú üzenetek létrehozásakor győződjön meg arról, hogy a válasz érvényes JSON-sztring.
Kérje meg a modellt, hogy foglaljon le járatokat a függvény segítségével:
var result = await client.path("/chat/completions").post({
body: {
messages: messages,
tools: tools,
tool_choice: "auto"
}
});
A választ megvizsgálva megállapíthatja, hogy meg kell-e hívni egy eszközt. Vizsgálja meg a befejezés okát annak megállapításához, hogy az eszközt meg kell-e hívni. Ne feledje, hogy több eszköztípus is jelezhető. Ez a példa egy típuseszközt function
mutat be.
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);
A folytatáshoz fűzze hozzá ezt az üzenetet a csevegési előzményekhez:
messages.push(response_message);
Most itt az ideje, hogy meghívja a megfelelő függvényt az eszközhívás kezeléséhez. A következő kódrészlet a válaszban megjelölt összes eszközhíváson át hatja át, és meghívja a megfelelő függvényt a megfelelő paraméterekkel. A válasz hozzá van fűzve a csevegési előzményekhez is.
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
}
);
}
A modell válaszának megtekintése:
var result = await client.path("/chat/completions").post({
body: {
messages: messages,
tools: tools,
}
});
Tartalombiztonság alkalmazása
Az Azure AI-modell következtetési API-ja támogatja az Azure AI-tartalombiztonságot. Ha bekapcsolt Azure AI-tartalombiztonsággal rendelkező üzembe helyezéseket használ, a bemenetek és kimenetek besorolási modellek együttesén haladnak át, amelyek célja a káros tartalmak kimenetének észlelése és megakadályozása. A tartalomszűrési (előzetes verzió) rendszer észleli és műveletet hajt végre a potenciálisan káros tartalmak meghatározott kategóriáiban mind a bemeneti kérésekben, mind a kimeneti befejezésekben.
Az alábbi példa bemutatja, hogyan kezelheti az eseményeket, amikor a modell káros tartalmat észlel a bemeneti parancssorban, és engedélyezve van a tartalombiztonság.
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;
}
}
}
A Cohere Command csevegési modelljei
A Cohere Command csevegőmodelljei a következő modelleket tartalmazzák:
Az R+ 08-2024 parancs egy generatív nagy nyelvi modell, amely különböző használati esetekre van optimalizálva, beleértve az érvelést, az összegzést és a kérdések megválaszolását.
- Modellarchitektúra: A Command R+ 08-2024 egy autoregresszív nyelvi modell, amely optimalizált transzformátorarchitektúrát használ. Az előzetes betanítás után a modell felügyelt finomhangolást (SFT) és preferenciális betanítást használ a modell viselkedésének az emberi preferenciákhoz való igazításához a segítőkészség és a biztonság érdekében.
- Nyelvek: A mód úgy van optimalizálva, hogy jól teljesítsen a következő nyelveken: angol, francia, spanyol, olasz, német, brazil portugál, japán, koreai, egyszerűsített kínai és arab.
- A betanítás előtti adatok a következő 13 nyelvet tartalmazzák: orosz, lengyel, török, vietnami, holland, cseh, indonéz, ukrán, román, görög, hindi, héber és perzsa.
- Környezet hossza: Az R+ 08-2024 parancs 128 K környezeti hosszt támogat.
- Bemenet: Csak szöveg.
- Kimenet: Csak szöveg.
Javasoljuk, hogy az R+ 08-2024 parancsot használja azokhoz a munkafolyamatokhoz, amelyek összetett lekéréses kiterjesztett generációs (RAG) funkciókra, többlépéses eszközhasználatra (ügynökökre) és strukturált kimenetekre támaszkodnak.
A következő modellek állnak rendelkezésre:
Tipp.
Emellett a Cohere támogatja a testre szabott API használatát a modell adott funkcióival való használatra. A modellszolgáltatóspecifikus API használatához tekintse meg a Cohere dokumentációját , vagy tekintse meg a példákra vonatkozó következtetési szakaszt .
Előfeltételek
A Cohere Command csevegőmodelljeinek Azure Machine Learning-lel való használatához a következő előfeltételekre van szükség:
Modell üzembe helyezése
Üzembe helyezés kiszolgáló nélküli API-kban
A Cohere Command csevegőmodelljei üzembe helyezhetők a kiszolgáló nélküli API-végpontokon használatalapú fizetéses számlázással. Ez a fajta üzembe helyezés lehetővé teszi a modellek API-ként való használatát anélkül, hogy az előfizetésében üzemelteti őket, miközben megtartja a vállalati biztonságot és megfelelőséget, amire a szervezeteknek szükségük van.
A kiszolgáló nélküli API-végponton való üzembe helyezéshez nem szükséges kvóta az előfizetésből. Ha a modell még nincs üzembe helyezve, a modell kiszolgáló nélküli API-ként való üzembe helyezéséhez használja az Azure Machine Learning Studiót, a Pythonhoz készült Azure Machine Learning SDK-t, az Azure CLI-t vagy az ARM-sablonokat.
A következtetési csomag telepítve van
A modellből származó előrejelzéseket a Azure.AI.Inference
NuGet-csomag használatával használhatja fel. A csomag telepítéséhez a következő előfeltételekre van szükség:
- A végpont URL-címe. Az ügyfélkódtár létrehozásához meg kell adnia a végpont URL-címét. A végpont URL-címe az űrlappal
https://your-host-name.your-azure-region.inference.ai.azure.com
rendelkezik, aholyour-host-name
az egyedi modell üzembehelyezési állomásneve, ésyour-azure-region
az az Azure-régió, ahol a modell üzembe van helyezve (például eastus2). - A modell üzembe helyezési és hitelesítési beállításaitól függően szüksége van egy kulcsra a szolgáltatáson való hitelesítéshez, vagy a Microsoft Entra-azonosító hitelesítő adataihoz. A kulcs egy 32 karakterből áll.
Ha már rendelkezik ezekkel az előfeltételekkel, telepítse az Azure AI-következtetési kódtárat a következő paranccsal:
dotnet add package Azure.AI.Inference --prerelease
Hitelesítést microsoft entra-azonosítóval (korábban Azure Active Directory) is végezhet. Az Azure SDK-hoz biztosított hitelesítőadat-szolgáltatók használatához telepítse a Azure.Identity
csomagot:
dotnet add package Azure.Identity
Importálja a következő névtereket:
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
Ez a példa a következő névtereket is használja, de előfordulhat, hogy nem mindig van rájuk szüksége:
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Reflection;
Csevegés befejezésének használata
Ebben a szakaszban az Azure AI-modell következtetési API-jával cseveghet egy csevegés befejezései modellel.
Tipp.
Az Azure AI-modell következtetési API-ja lehetővé teszi, hogy az Azure Machine Learningben üzembe helyezett legtöbb modellel ugyanazzal a kóddal és struktúrával beszéljen, beleértve a Cohere Command csevegési modelljeit is.
Ügyfél létrehozása a modell használatához
Először hozza létre az ügyfelet a modell használatához. Az alábbi kód egy környezeti változókban tárolt végponti URL-címet és kulcsot használ.
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);
A modell képességeinek lekérése
Az /info
útvonal a végponton üzembe helyezett modell adatait adja vissza. Adja vissza a modell adatait a következő metódus meghívásával:
Response<ModelInfo> modelInfo = client.GetModelInfo();
A válasz a következő:
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
Csevegés befejezésére vonatkozó kérés létrehozása
Az alábbi példa bemutatja, hogyan hozhat létre alapszintű csevegés-befejezési kérelmet a modellnek.
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);
A válasz a következő, ahol láthatja a modell használati statisztikáit:
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
A válasz szakaszában megtekintheti a parancssorhoz használt jogkivonatok számát, a létrehozott jogkivonatok teljes számát és a befejezéshez használt tokenek számát.
Tartalom streamelése
Alapértelmezés szerint a befejezési API egyetlen válaszban adja vissza a teljes generált tartalmat. Ha hosszú befejezéseket hoz létre, a válaszra való várakozás több másodpercet is igénybe vehet.
Streamelheti a tartalmat, hogy megkapja a létrehozás közben. A streamelési tartalom lehetővé teszi a befejezés feldolgozását, amint a tartalom elérhetővé válik. Ez a mód egy olyan objektumot ad vissza, amely a választ csak a kiszolgáló által küldött eseményekként küldi vissza. Az üzenetmező helyett bontsa ki az adattömböket a delta mezőből.
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);
}
A befejezések streameléséhez használja CompleteStreamingAsync
a metódust, amikor meghívja a modellt. Figyelje meg, hogy ebben a példában a hívás aszinkron metódusba van csomagolva.
A kimenet megjelenítéséhez definiáljon egy aszinkron módszert a stream konzolon való nyomtatásához.
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);
}
}
}
Vizualizálhatja, hogyan hozza létre a stream a tartalmat:
StreamMessageAsync(client).GetAwaiter().GetResult();
A következtetési ügyfél által támogatott további paraméterek megismerése
Ismerje meg a következtetési ügyfélben megadható egyéb paramétereket. Az összes támogatott paraméter és azok dokumentációjának teljes listáját az Azure AI Model Inference API-referencia tartalmazza.
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}");
Ha olyan paramétert szeretne átadni, amely nem szerepel a támogatott paraméterek listájában, további paraméterekkel továbbíthatja azt a mögöttes modellnek. Lásd: További paraméterek átadása a modellnek.
JSON-kimenetek létrehozása
A Cohere Command csevegőmodelljei JSON-kimeneteket hozhatnak létre. Úgy van beállítva response_format
, json_object
hogy engedélyezze a JSON-módot, és garantálja, hogy a modell által generált üzenet érvényes JSON- Arra is utasítania kell a modellt, hogy saját maga állítson elő JSON-t egy rendszeren vagy felhasználói üzeneten keresztül. Emellett előfordulhat, hogy az üzenet tartalma részben le lesz vágva, ha finish_reason="length"
az azt jelzi, hogy a generáció túllépte a generációt max_tokens
, vagy hogy a beszélgetés túllépte a környezet maximális hosszát.
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}");
További paraméterek átadása a modellnek
Az Azure AI Model Inference API-val további paramétereket adhat át a modellnek. Az alábbi példakód bemutatja, hogyan adhatja át a plusz paramétert logprobs
a modellnek.
Mielőtt további paramétereket ad át az Azure AI-modell következtetési API-jának, győződjön meg arról, hogy a modell támogatja ezeket az extra paramétereket. Amikor a kérést a mögöttes modellnek küldi el, a fejlécet extra-parameters
a rendszer átadja a modellnek az értékkel pass-through
. Ez az érték arra utasítja a végpontot, hogy adja át a további paramétereket a modellnek. Az extra paraméterek használata a modellel nem garantálja, hogy a modell ténylegesen képes kezelni őket. A modell dokumentációjában megismerheti, hogy mely további paraméterek támogatottak.
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}");
Eszközök használata
A Cohere Command csevegőmodelljei támogatják az eszközök használatát, ami rendkívüli erőforrás lehet, ha konkrét feladatokat kell kiszerveznie a nyelvi modellből, és ehelyett egy determinisztikusabb rendszerre vagy akár egy másik nyelvi modellre kell támaszkodnia. Az Azure AI Model Inference API-val az alábbi módon határozhatja meg az eszközöket.
Az alábbi példakód egy eszközdefiníciót hoz létre, amely két különböző város repülési adataiból tud keresni.
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);
Ebben a példában a függvény kimenete az, hogy a kiválasztott útvonalhoz nem érhetők el járatok, de a felhasználónak érdemes megfontolnia a vonatot.
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."
});
}
Feljegyzés
A Cohere-command-r-plus-08-2024, a Cohere-command-r-08-2024, a Cohere-command-r-plus és a Cohere-command-r használatához az eszköz válaszainak sztringként formázott érvényes JSON-tartalomnak kell lenniük. Eszköz típusú üzenetek létrehozásakor győződjön meg arról, hogy a válasz érvényes JSON-sztring.
Kérje meg a modellt, hogy foglaljon le járatokat a függvény segítségével:
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);
A választ megvizsgálva megállapíthatja, hogy meg kell-e hívni egy eszközt. Vizsgálja meg a befejezés okát annak megállapításához, hogy az eszközt meg kell-e hívni. Ne feledje, hogy több eszköztípus is jelezhető. Ez a példa egy típuseszközt function
mutat be.
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}");
A folytatáshoz fűzze hozzá ezt az üzenetet a csevegési előzményekhez:
requestOptions.Messages.Add(new ChatRequestAssistantMessage(response.Value.Choices[0].Message));
Most itt az ideje, hogy meghívja a megfelelő függvényt az eszközhívás kezeléséhez. A következő kódrészlet a válaszban megjelölt összes eszközhíváson át hatja át, és meghívja a megfelelő függvényt a megfelelő paraméterekkel. A válasz hozzá van fűzve a csevegési előzményekhez is.
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");
}
A modell válaszának megtekintése:
response = client.Complete(requestOptions);
Tartalombiztonság alkalmazása
Az Azure AI-modell következtetési API-ja támogatja az Azure AI-tartalombiztonságot. Ha bekapcsolt Azure AI-tartalombiztonsággal rendelkező üzembe helyezéseket használ, a bemenetek és kimenetek besorolási modellek együttesén haladnak át, amelyek célja a káros tartalmak kimenetének észlelése és megakadályozása. A tartalomszűrési (előzetes verzió) rendszer észleli és műveletet hajt végre a potenciálisan káros tartalmak meghatározott kategóriáiban mind a bemeneti kérésekben, mind a kimeneti befejezésekben.
Az alábbi példa bemutatja, hogyan kezelheti az eseményeket, amikor a modell káros tartalmat észlel a bemeneti parancssorban, és engedélyezve van a tartalombiztonság.
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;
}
}
A Cohere Command csevegési modelljei
A Cohere Command csevegőmodelljei a következő modelleket tartalmazzák:
Az R+ 08-2024 parancs egy generatív nagy nyelvi modell, amely különböző használati esetekre van optimalizálva, beleértve az érvelést, az összegzést és a kérdések megválaszolását.
- Modellarchitektúra: A Command R+ 08-2024 egy autoregresszív nyelvi modell, amely optimalizált transzformátorarchitektúrát használ. Az előzetes betanítás után a modell felügyelt finomhangolást (SFT) és preferenciális betanítást használ a modell viselkedésének az emberi preferenciákhoz való igazításához a segítőkészség és a biztonság érdekében.
- Nyelvek: A mód úgy van optimalizálva, hogy jól teljesítsen a következő nyelveken: angol, francia, spanyol, olasz, német, brazil portugál, japán, koreai, egyszerűsített kínai és arab.
- A betanítás előtti adatok a következő 13 nyelvet tartalmazzák: orosz, lengyel, török, vietnami, holland, cseh, indonéz, ukrán, román, görög, hindi, héber és perzsa.
- Környezet hossza: Az R+ 08-2024 parancs 128 K környezeti hosszt támogat.
- Bemenet: Csak szöveg.
- Kimenet: Csak szöveg.
Javasoljuk, hogy az R+ 08-2024 parancsot használja azokhoz a munkafolyamatokhoz, amelyek összetett lekéréses kiterjesztett generációs (RAG) funkciókra, többlépéses eszközhasználatra (ügynökökre) és strukturált kimenetekre támaszkodnak.
A következő modellek állnak rendelkezésre:
Tipp.
Emellett a Cohere támogatja a testre szabott API használatát a modell adott funkcióival való használatra. A modellszolgáltatóspecifikus API használatához tekintse meg a Cohere dokumentációját , vagy tekintse meg a példákra vonatkozó következtetési szakaszt .
Előfeltételek
A Cohere Command csevegőmodelljeinek Azure Machine Learning-lel való használatához a következő előfeltételekre van szükség:
Modell üzembe helyezése
Üzembe helyezés kiszolgáló nélküli API-kban
A Cohere Command csevegőmodelljei üzembe helyezhetők a kiszolgáló nélküli API-végpontokon használatalapú fizetéses számlázással. Ez a fajta üzembe helyezés lehetővé teszi a modellek API-ként való használatát anélkül, hogy az előfizetésében üzemelteti őket, miközben megtartja a vállalati biztonságot és megfelelőséget, amire a szervezeteknek szükségük van.
A kiszolgáló nélküli API-végponton való üzembe helyezéshez nem szükséges kvóta az előfizetésből. Ha a modell még nincs üzembe helyezve, a modell kiszolgáló nélküli API-ként való üzembe helyezéséhez használja az Azure Machine Learning Studiót, a Pythonhoz készült Azure Machine Learning SDK-t, az Azure CLI-t vagy az ARM-sablonokat.
REST-ügyfél
Az Azure AI-modell következtetési API-val üzembe helyezett modellek bármely REST-ügyfél használatával felhasználhatók. A REST-ügyfél használatához a következő előfeltételekre van szükség:
- A kérések létrehozásához meg kell adnia a végpont URL-címét. A végpont URL-címe az űrlap,
https://your-host-name.your-azure-region.inference.ai.azure.com
aholyour-host-name`` is your unique model deployment host name and
az Azure-régió az az Azure-régió, ahol a modell üzembe van helyezve (például eastus2). - A modell üzembe helyezési és hitelesítési beállításaitól függően szüksége van egy kulcsra a szolgáltatáson való hitelesítéshez, vagy a Microsoft Entra-azonosító hitelesítő adataihoz. A kulcs egy 32 karakterből áll.
Csevegés befejezésének használata
Ebben a szakaszban az Azure AI-modell következtetési API-jával cseveghet egy csevegés befejezései modellel.
Tipp.
Az Azure AI-modell következtetési API-ja lehetővé teszi, hogy az Azure Machine Learningben üzembe helyezett legtöbb modellel ugyanazzal a kóddal és struktúrával beszéljen, beleértve a Cohere Command csevegési modelljeit is.
Ügyfél létrehozása a modell használatához
Először hozza létre az ügyfelet a modell használatához. Az alábbi kód egy környezeti változókban tárolt végponti URL-címet és kulcsot használ.
A modell képességeinek lekérése
Az /info
útvonal a végponton üzembe helyezett modell adatait adja vissza. Adja vissza a modell adatait a következő metódus meghívásával:
GET /info HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json
A válasz a következő:
{
"model_name": "Cohere-command-r-plus-08-2024",
"model_type": "chat-completions",
"model_provider_name": "Cohere"
}
Csevegés befejezésére vonatkozó kérés létrehozása
Az alábbi példa bemutatja, hogyan hozhat létre alapszintű csevegés-befejezési kérelmet a modellnek.
{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "How many languages are in the world?"
}
]
}
A válasz a következő, ahol láthatja a modell használati statisztikáit:
{
"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
A válasz szakaszában megtekintheti a parancssorhoz használt jogkivonatok számát, a létrehozott jogkivonatok teljes számát és a befejezéshez használt tokenek számát.
Tartalom streamelése
Alapértelmezés szerint a befejezési API egyetlen válaszban adja vissza a teljes generált tartalmat. Ha hosszú befejezéseket hoz létre, a válaszra való várakozás több másodpercet is igénybe vehet.
Streamelheti a tartalmat, hogy megkapja a létrehozás közben. A streamelési tartalom lehetővé teszi a befejezés feldolgozását, amint a tartalom elérhetővé válik. Ez a mód egy olyan objektumot ad vissza, amely a választ csak a kiszolgáló által küldött eseményekként küldi vissza. Az üzenetmező helyett bontsa ki az adattömböket a delta mezőből.
{
"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
}
Vizualizálhatja, hogyan hozza létre a stream a tartalmat:
{
"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
}
]
}
A stream utolsó üzenete be van finish_reason
állítva, jelezve a létrehozási folyamat leállításának okát.
{
"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
}
}
A következtetési ügyfél által támogatott további paraméterek megismerése
Ismerje meg a következtetési ügyfélben megadható egyéb paramétereket. Az összes támogatott paraméter és azok dokumentációjának teljes listáját az Azure AI Model Inference API-referencia tartalmazza.
{
"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
}
}
Ha olyan paramétert szeretne átadni, amely nem szerepel a támogatott paraméterek listájában, további paraméterekkel továbbíthatja azt a mögöttes modellnek. Lásd: További paraméterek átadása a modellnek.
JSON-kimenetek létrehozása
A Cohere Command csevegőmodelljei JSON-kimeneteket hozhatnak létre. Úgy van beállítva response_format
, json_object
hogy engedélyezze a JSON-módot, és garantálja, hogy a modell által generált üzenet érvényes JSON- Arra is utasítania kell a modellt, hogy saját maga állítson elő JSON-t egy rendszeren vagy felhasználói üzeneten keresztül. Emellett előfordulhat, hogy az üzenet tartalma részben le lesz vágva, ha finish_reason="length"
az azt jelzi, hogy a generáció túllépte a generációt max_tokens
, vagy hogy a beszélgetés túllépte a környezet maximális hosszát.
{
"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
}
}
További paraméterek átadása a modellnek
Az Azure AI Model Inference API-val további paramétereket adhat át a modellnek. Az alábbi példakód bemutatja, hogyan adhatja át a plusz paramétert logprobs
a modellnek.
Mielőtt további paramétereket ad át az Azure AI-modell következtetési API-jának, győződjön meg arról, hogy a modell támogatja ezeket az extra paramétereket. Amikor a kérést a mögöttes modellnek küldi el, a fejlécet extra-parameters
a rendszer átadja a modellnek az értékkel pass-through
. Ez az érték arra utasítja a végpontot, hogy adja át a további paramétereket a modellnek. Az extra paraméterek használata a modellel nem garantálja, hogy a modell ténylegesen képes kezelni őket. A modell dokumentációjában megismerheti, hogy mely további paraméterek támogatottak.
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
}
Eszközök használata
A Cohere Command csevegőmodelljei támogatják az eszközök használatát, ami rendkívüli erőforrás lehet, ha konkrét feladatokat kell kiszerveznie a nyelvi modellből, és ehelyett egy determinisztikusabb rendszerre vagy akár egy másik nyelvi modellre kell támaszkodnia. Az Azure AI Model Inference API-val az alábbi módon határozhatja meg az eszközöket.
Az alábbi példakód egy olyan eszközdefiníciót hoz létre, amely két különböző város repülési információinak keresésére képes.
{
"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"
]
}
}
}
Ebben a példában a függvény kimenete az, hogy a kiválasztott útvonalhoz nem érhetők el járatok, de a felhasználónak érdemes megfontolnia a vonatot.
Feljegyzés
A Cohere-command-r-plus-08-2024, a Cohere-command-r-08-2024, a Cohere-command-r-plus és a Cohere-command-r használatához az eszköz válaszainak sztringként formázott érvényes JSON-tartalomnak kell lenniük. Eszköz típusú üzenetek létrehozásakor győződjön meg arról, hogy a válasz érvényes JSON-sztring.
Kérje meg a modellt, hogy foglaljon le járatokat a függvény segítségével:
{
"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"
]
}
}
}
]
}
A választ megvizsgálva megállapíthatja, hogy meg kell-e hívni egy eszközt. Vizsgálja meg a befejezés okát annak megállapításához, hogy az eszközt meg kell-e hívni. Ne feledje, hogy több eszköztípus is jelezhető. Ez a példa egy típuseszközt function
mutat be.
{
"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
}
}
A folytatáshoz fűzze hozzá ezt az üzenetet a csevegési előzményekhez:
Most itt az ideje, hogy meghívja a megfelelő függvényt az eszközhívás kezeléséhez. A következő kódrészlet a válaszban megjelölt összes eszközhíváson át hatja át, és meghívja a megfelelő függvényt a megfelelő paraméterekkel. A válasz hozzá van fűzve a csevegési előzményekhez is.
A modell válaszának megtekintése:
{
"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"]
}
}
}
]
}
Tartalombiztonság alkalmazása
Az Azure AI-modell következtetési API-ja támogatja az Azure AI-tartalombiztonságot. Ha bekapcsolt Azure AI-tartalombiztonsággal rendelkező üzembe helyezéseket használ, a bemenetek és kimenetek besorolási modellek együttesén haladnak át, amelyek célja a káros tartalmak kimenetének észlelése és megakadályozása. A tartalomszűrési (előzetes verzió) rendszer észleli és műveletet hajt végre a potenciálisan káros tartalmak meghatározott kategóriáiban mind a bemeneti kérésekben, mind a kimeneti befejezésekben.
Az alábbi példa bemutatja, hogyan kezelheti az eseményeket, amikor a modell káros tartalmat észlel a bemeneti parancssorban, és engedélyezve van a tartalombiztonság.
{
"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
}
}
További következtetési példák
A Cohere-modellek használatára vonatkozó további példákért tekintse meg az alábbi példákat és oktatóanyagokat:
Leírás | Nyelv | Minta |
---|---|---|
Webes kérések | Bash | Command-R - Command-R+ |
Azure AI-következtetési csomag JavaScripthez | JavaScript | Láncszem |
Azure AI-következtetési csomag Pythonhoz | Python | Láncszem |
OpenAI SDK (kísérleti) | Python | Láncszem |
LangChain | Python | Láncszem |
Cohere SDK | Python | Láncszem |
LiteLLM SDK | Python | Láncszem |
A lekéréses kiterjesztett generáció (RAG) és az eszköz mintákat használ
Leírás | Csomagok | Minta |
---|---|---|
Helyi Facebook AI-hasonlósági keresés (FAISS) vektorindex létrehozása a Cohere beágyazások használatával – Langchain | langchain , langchain_cohere |
cohere_faiss_langchain_embed.ipynb |
A Cohere Command R/R+ használatával válaszolhat a helyi FAISS-vektorindex adatainak kérdéseire – Langchain | langchain , langchain_cohere |
command_faiss_langchain.ipynb |
A Cohere Command R/R+ használatával válaszolhat az AI keresési vektorindexében szereplő adatokkal kapcsolatos kérdésekre – Langchain | langchain , langchain_cohere |
cohere-aisearch-langchain-rag.ipynb |
A Cohere Command R/R+ használatával válaszolhat az AI keresési vektorindexében szereplő adatokkal kapcsolatos kérdésekre – Cohere SDK | cohere , azure_search_documents |
cohere-aisearch-rag.ipynb |
Command R+ eszköz/függvény hívása a LangChain használatával | cohere , , langchain langchain_cohere |
command_tools-langchain.ipynb |
A kiszolgáló nélküli API-végpontként üzembe helyezett cohere-modellek költség- és kvótaalapú szempontjai
A kvóta kezelése üzemelő példányonként történik. Minden üzemelő példányhoz 200 000 token/perc sebességkorlát és percenként 1000 API-kérés tartozik. Jelenleg azonban modellenként és projektenként csak egy telepítésre van lehetőség. Lépjen kapcsolatba a Microsoft Azure ügyfélszolgálatával, ha az aktuális díjszabási korlátok nem elegendőek az Ön forgatókönyveihez.
A kiszolgáló nélküli API-ként üzembe helyezett koherens modelleket a Cohere kínálja az Azure Marketplace-en keresztül, és integrálva van az Azure Machine Learning Studióval használat céljából. A modell üzembe helyezésekor megtalálja az Azure Marketplace díjszabását.
Minden alkalommal, amikor egy projekt előfizet egy adott ajánlatra az Azure Marketplace-ről, egy új erőforrás jön létre a használathoz kapcsolódó költségek nyomon követéséhez. Ugyanazt az erőforrást használja a következtetéshez kapcsolódó költségek nyomon követésére; azonban több mérőeszköz is rendelkezésre áll az egyes forgatókönyvek egymástól függetlenül történő nyomon követéséhez.
A költségek nyomon követéséről további információt az Azure Marketplace-en kínált modellek költségeinek monitorozása című témakörben talál.