Dela via


Så här använder du Jais chattmodeller

Viktigt!

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

I den här artikeln lär du dig mer om Jais chattmodeller och hur du använder dem. JAIS 30b Chat är en autoregressiv dubbelspråkig LLM för arabiska och engelska. De finjusterade versionerna använder övervakad finjustering (SFT). Modellen är finjusterad med både arabiska och engelska prompt-response-par. De finjusteringsdatauppsättningar som ingår i en mängd olika instruktionsdata i olika domäner. Modellen omfattar ett brett utbud av vanliga uppgifter, inklusive frågesvar, kodgenerering och resonemang över textinnehåll. För att förbättra prestandan på arabiska utvecklade Core42-teamet en intern arabisk datauppsättning och översatte vissa engelska instruktioner med öppen källkod till arabiska.

  • Kontextlängd: JAIS stöder en kontextlängd på 8 K.
  • Indata: Modellinmatning är endast text.
  • Utdata: Modellen genererar endast text.

Viktigt!

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

Jais-chattmodeller

Du kan lära dig mer om modellerna i respektive modellkort:

Förutsättningar

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

En modelldistribution

Distribution till serverlösa API:er

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

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

Inferenspaketet installerat

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

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

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

pip install azure-ai-inference

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

Arbeta med chattens slutföranden

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

Dricks

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

Skapa en klient för att använda modellen

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

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

client = ChatCompletionsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)

Hämta modellens funktioner

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

model_info = client.get_model_info()

Svaret är följande:

print("Model name:", model_info.model_name)
print("Model type:", model_info.model_type)
print("Model provider name:", model_info.model_provider_name)
Model name: jais-30b-chat
Model type: chat-completions
Model provider name: G42

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

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

from azure.ai.inference.models import SystemMessage, UserMessage

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

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

print("Response:", response.choices[0].message.content)
print("Model:", response.model)
print("Usage:")
print("\tPrompt tokens:", response.usage.prompt_tokens)
print("\tTotal tokens:", response.usage.total_tokens)
print("\tCompletion tokens:", response.usage.completion_tokens)
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: jais-30b-chat
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

usage Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.

Strömma innehåll

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

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

result = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    temperature=0,
    top_p=1,
    max_tokens=2048,
    stream=True,
)

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

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

def print_stream(result):
    """
    Prints the chat completion with streaming.
    """
    import time
    for update in result:
        if update.choices:
            print(update.choices[0].delta.content, end="")

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

print_stream(result)

Utforska fler parametrar som stöds av slutsatsdragningsklienten

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

from azure.ai.inference.models import ChatCompletionsResponseFormatText

response = client.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    presence_penalty=0.1,
    frequency_penalty=0.8,
    max_tokens=2048,
    stop=["<|endoftext|>"],
    temperature=0,
    top_p=1,
    response_format={ "type": ChatCompletionsResponseFormatText() },
)

Varning

Jais-modeller stöder inte JSON-utdataformatering (response_format = { "type": "json_object" }). Du kan alltid uppmana modellen att generera JSON-utdata. Sådana utdata är dock inte garanterade att vara giltiga JSON.

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

Skicka extra parametrar till modellen

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

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

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

Tillämpa innehållssäkerhet

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

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

from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage

try:
    response = client.complete(
        messages=[
            SystemMessage(content="You are an AI assistant that helps people find information."),
            UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
        ]
    )

    print(response.choices[0].message.content)

except HttpResponseError as ex:
    if ex.status_code == 400:
        response = ex.response.json()
        if isinstance(response, dict) and "error" in response:
            print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
        else:
            raise
    raise

Dricks

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

Jais-chattmodeller

Du kan lära dig mer om modellerna i respektive modellkort:

Förutsättningar

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

En modelldistribution

Distribution till serverlösa API:er

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

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

Inferenspaketet installerat

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

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

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

npm install @azure-rest/ai-inference

Arbeta med chattens slutföranden

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

Dricks

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

Skapa en klient för att använda modellen

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

import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { AzureKeyCredential } from "@azure/core-auth";

const client = new ModelClient(
    process.env.AZURE_INFERENCE_ENDPOINT, 
    new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);

Hämta modellens funktioner

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

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

Svaret är följande:

console.log("Model name: ", model_info.body.model_name)
console.log("Model type: ", model_info.body.model_type)
console.log("Model provider name: ", model_info.body.model_provider_name)
Model name: jais-30b-chat
Model type: chat-completions
Model provider name: G42

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

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

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

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

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

if (isUnexpected(response)) {
    throw response.body.error;
}

console.log("Response: ", response.body.choices[0].message.content);
console.log("Model: ", response.body.model);
console.log("Usage:");
console.log("\tPrompt tokens:", response.body.usage.prompt_tokens);
console.log("\tTotal tokens:", response.body.usage.total_tokens);
console.log("\tCompletion tokens:", response.body.usage.completion_tokens);
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: jais-30b-chat
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

usage Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.

Strömma innehåll

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

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

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

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

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

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

var stream = response.body;
if (!stream) {
    stream.destroy();
    throw new Error(`Failed to get chat completions with status: ${response.status}`);
}

if (response.status !== "200") {
    throw new Error(`Failed to get chat completions: ${response.body.error}`);
}

var sses = createSseStream(stream);

for await (const event of sses) {
    if (event.data === "[DONE]") {
        return;
    }
    for (const choice of (JSON.parse(event.data)).choices) {
        console.log(choice.delta?.content ?? "");
    }
}

Utforska fler parametrar som stöds av slutsatsdragningsklienten

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

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

var response = await client.path("/chat/completions").post({
    body: {
        messages: messages,
        presence_penalty: "0.1",
        frequency_penalty: "0.8",
        max_tokens: 2048,
        stop: ["<|endoftext|>"],
        temperature: 0,
        top_p: 1,
        response_format: { type: "text" },
    }
});

Varning

Jais-modeller stöder inte JSON-utdataformatering (response_format = { "type": "json_object" }). Du kan alltid uppmana modellen att generera JSON-utdata. Sådana utdata är dock inte garanterade att vara giltiga JSON.

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

Skicka extra parametrar till modellen

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

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

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

var response = await client.path("/chat/completions").post({
    headers: {
        "extra-params": "pass-through"
    },
    body: {
        messages: messages,
        logprobs: true
    }
});

Tillämpa innehållssäkerhet

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

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

try {
    var messages = [
        { role: "system", content: "You are an AI assistant that helps people find information." },
        { role: "user", content: "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills." },
    ];

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

    console.log(response.body.choices[0].message.content);
}
catch (error) {
    if (error.status_code == 400) {
        var response = JSON.parse(error.response._content);
        if (response.error) {
            console.log(`Your request triggered an ${response.error.code} error:\n\t ${response.error.message}`);
        }
        else
        {
            throw error;
        }
    }
}

Dricks

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

Jais-chattmodeller

Du kan lära dig mer om modellerna i respektive modellkort:

Förutsättningar

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

En modelldistribution

Distribution till serverlösa API:er

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

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

Inferenspaketet installerat

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

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

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

dotnet add package Azure.AI.Inference --prerelease

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

dotnet add package Azure.Identity

Importera följande namnområden:

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

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

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

Arbeta med chattens slutföranden

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

Dricks

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

Skapa en klient för att använda modellen

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

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

Hämta modellens funktioner

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

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

Svaret är följande:

Console.WriteLine($"Model name: {modelInfo.Value.ModelName}");
Console.WriteLine($"Model type: {modelInfo.Value.ModelType}");
Console.WriteLine($"Model provider name: {modelInfo.Value.ModelProviderName}");
Model name: jais-30b-chat
Model type: chat-completions
Model provider name: G42

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

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

ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("How many languages are in the world?")
    },
};

Response<ChatCompletions> response = client.Complete(requestOptions);

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

Console.WriteLine($"Response: {response.Value.Choices[0].Message.Content}");
Console.WriteLine($"Model: {response.Value.Model}");
Console.WriteLine("Usage:");
Console.WriteLine($"\tPrompt tokens: {response.Value.Usage.PromptTokens}");
Console.WriteLine($"\tTotal tokens: {response.Value.Usage.TotalTokens}");
Console.WriteLine($"\tCompletion tokens: {response.Value.Usage.CompletionTokens}");
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: jais-30b-chat
Usage: 
  Prompt tokens: 19
  Total tokens: 91
  Completion tokens: 72

usage Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.

Strömma innehåll

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

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

static async Task StreamMessageAsync(ChatCompletionsClient client)
{
    ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
    {
        Messages = {
            new ChatRequestSystemMessage("You are a helpful assistant."),
            new ChatRequestUserMessage("How many languages are in the world? Write an essay about it.")
        },
        MaxTokens=4096
    };

    StreamingResponse<StreamingChatCompletionsUpdate> streamResponse = await client.CompleteStreamingAsync(requestOptions);

    await PrintStream(streamResponse);
}

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

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

static async Task PrintStream(StreamingResponse<StreamingChatCompletionsUpdate> response)
{
    await foreach (StreamingChatCompletionsUpdate chatUpdate in response)
    {
        if (chatUpdate.Role.HasValue)
        {
            Console.Write($"{chatUpdate.Role.Value.ToString().ToUpperInvariant()}: ");
        }
        if (!string.IsNullOrEmpty(chatUpdate.ContentUpdate))
        {
            Console.Write(chatUpdate.ContentUpdate);
        }
    }
}

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

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

Utforska fler parametrar som stöds av slutsatsdragningsklienten

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

requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("How many languages are in the world?")
    },
    PresencePenalty = 0.1f,
    FrequencyPenalty = 0.8f,
    MaxTokens = 2048,
    StopSequences = { "<|endoftext|>" },
    Temperature = 0,
    NucleusSamplingFactor = 1,
    ResponseFormat = new ChatCompletionsResponseFormatText()
};

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

Varning

Jais-modeller stöder inte JSON-utdataformatering (response_format = { "type": "json_object" }). Du kan alltid uppmana modellen att generera JSON-utdata. Sådana utdata är dock inte garanterade att vara giltiga JSON.

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

Skicka extra parametrar till modellen

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

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

requestOptions = new ChatCompletionsOptions()
{
    Messages = {
        new ChatRequestSystemMessage("You are a helpful assistant."),
        new ChatRequestUserMessage("How many languages are in the world?")
    },
    AdditionalProperties = { { "logprobs", BinaryData.FromString("true") } },
};

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

Tillämpa innehållssäkerhet

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

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

try
{
    requestOptions = new ChatCompletionsOptions()
    {
        Messages = {
            new ChatRequestSystemMessage("You are an AI assistant that helps people find information."),
            new ChatRequestUserMessage(
                "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
            ),
        },
    };

    response = client.Complete(requestOptions);
    Console.WriteLine(response.Value.Choices[0].Message.Content);
}
catch (RequestFailedException ex)
{
    if (ex.ErrorCode == "content_filter")
    {
        Console.WriteLine($"Your query has trigger Azure Content Safety: {ex.Message}");
    }
    else
    {
        throw;
    }
}

Dricks

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

Jais-chattmodeller

Du kan lära dig mer om modellerna i respektive modellkort:

Förutsättningar

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

En modelldistribution

Distribution till serverlösa API:er

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

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

En REST-klient

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

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

Arbeta med chattens slutföranden

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

Dricks

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

Skapa en klient för att använda modellen

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

Hämta modellens funktioner

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

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

Svaret är följande:

{
    "model_name": "jais-30b-chat",
    "model_type": "chat-completions",
    "model_provider_name": "G42"
}

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

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

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

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

{
    "id": "0a1234b5de6789f01gh2i345j6789klm",
    "object": "chat.completion",
    "created": 1718726686,
    "model": "jais-30b-chat",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.",
                "tool_calls": null
            },
            "finish_reason": "stop",
            "logprobs": null
        }
    ],
    "usage": {
        "prompt_tokens": 19,
        "total_tokens": 91,
        "completion_tokens": 72
    }
}

usage Granska avsnittet i svaret för att se antalet token som används för prompten, det totala antalet token som genererats och antalet token som används för slutförandet.

Strömma innehåll

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

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

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "stream": true,
    "temperature": 0,
    "top_p": 1,
    "max_tokens": 2048
}

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

{
    "id": "23b54589eba14564ad8a2e6978775a39",
    "object": "chat.completion.chunk",
    "created": 1718726371,
    "model": "jais-30b-chat",
    "choices": [
        {
            "index": 0,
            "delta": {
                "role": "assistant",
                "content": ""
            },
            "finish_reason": null,
            "logprobs": null
        }
    ]
}

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

{
    "id": "23b54589eba14564ad8a2e6978775a39",
    "object": "chat.completion.chunk",
    "created": 1718726371,
    "model": "jais-30b-chat",
    "choices": [
        {
            "index": 0,
            "delta": {
                "content": ""
            },
            "finish_reason": "stop",
            "logprobs": null
        }
    ],
    "usage": {
        "prompt_tokens": 19,
        "total_tokens": 91,
        "completion_tokens": 72
    }
}

Utforska fler parametrar som stöds av slutsatsdragningsklienten

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

{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "presence_penalty": 0.1,
    "frequency_penalty": 0.8,
    "max_tokens": 2048,
    "stop": ["<|endoftext|>"],
    "temperature" :0,
    "top_p": 1,
    "response_format": { "type": "text" }
}
{
    "id": "0a1234b5de6789f01gh2i345j6789klm",
    "object": "chat.completion",
    "created": 1718726686,
    "model": "jais-30b-chat",
    "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
    }
}

Varning

Jais-modeller stöder inte JSON-utdataformatering (response_format = { "type": "json_object" }). Du kan alltid uppmana modellen att generera JSON-utdata. Sådana utdata är dock inte garanterade att vara giltiga JSON.

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

Skicka extra parametrar till modellen

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

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

POST /chat/completions HTTP/1.1
Host: <ENDPOINT_URI>
Authorization: Bearer <TOKEN>
Content-Type: application/json
extra-parameters: pass-through
{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "How many languages are in the world?"
        }
    ],
    "logprobs": true
}

Tillämpa innehållssäkerhet

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

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

{
    "messages": [
        {
            "role": "system",
            "content": "You are an AI assistant that helps people find information."
        },
                {
            "role": "user",
            "content": "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
        }
    ]
}
{
    "error": {
        "message": "The response was filtered due to the prompt triggering Microsoft's content management policy. Please modify your prompt and retry.",
        "type": null,
        "param": "prompt",
        "code": "content_filter",
        "status": 400
    }
}

Dricks

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

Fler slutsatsdragningsexempel

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

beskrivning Språk Exempel
Azure AI-slutsatsdragningspaket för JavaScript JavaScript Länk
Azure AI-slutsatsdragningspaket för Python Python Länk

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

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

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

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

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