Sdílet prostřednictvím


Vstupní vazba pro dokončování textu Azure OpenAI pro Azure Functions

Důležité

Rozšíření Azure OpenAI pro Azure Functions je aktuálně ve verzi Preview.

Vstupní vazba pro dokončování textu Azure OpenAI umožňuje přenést rozhraní API pro dokončování textu výsledků do provádění kódu. Můžete definovat vazbu tak, aby používala obě předdefinované výzvy s parametry nebo prošel celou výzvou.

Informace o nastavení a konfiguraci rozšíření Azure OpenAI najdete v tématu Rozšíření Azure OpenAI pro Azure Functions. Další informace o doplňování Azure OpenAI najdete v tématu O tom, jak generovat nebo manipulovat s textem.

Poznámka:

Odkazy a příklady jsou k dispozici pouze pro model Node.js v4.

Poznámka:

Odkazy a příklady jsou k dispozici pouze pro model Pythonu v2.

Poznámka:

I když jsou podporovány oba modely procesu jazyka C#, jsou k dispozici pouze příklady izolovaného modelu pracovního procesu .

Příklad

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.

[Function(nameof(WhoIs))]
public static IActionResult WhoIs(
    [HttpTrigger(AuthorizationLevel.Function, Route = "whois/{name}")] HttpRequestData req,
    [TextCompletionInput("Who is {name}?", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
{
    return new OkObjectResult(response.Content);
}

/// <summary>

V tomto příkladu se jako vstup zobrazí výzva, odešle ji přímo do rozhraní API pro dokončování a jako výstup vrátí odpověď.

        [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
        [TextCompletionInput("{Prompt}", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response,
        ILogger log)
    {
        string text = response.Content;
        return new OkObjectResult(text);
    }
}

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.

@FunctionName("WhoIs")
public HttpResponseMessage whoIs(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.GET},
        authLevel = AuthorizationLevel.ANONYMOUS, 
        route = "whois/{name}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("name") String name,
    @TextCompletion(prompt = "Who is {name}?", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response") TextCompletionResponse response,
    final ExecutionContext context) {
    return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response.getContent())
        .build();
}

V tomto příkladu se jako vstup zobrazí výzva, odešle ji přímo do rozhraní API pro dokončování a jako výstup vrátí odpověď.

@FunctionName("GenericCompletion")
public HttpResponseMessage genericCompletion(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.POST},
        authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request,
    @TextCompletion(prompt = "{prompt}", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response") TextCompletionResponse response,
    final ExecutionContext context) {
    return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response.getContent())
        .build();
}

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.

const { app, input } = require("@azure/functions");

// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
    prompt: 'Who is {name}?',
    maxTokens: '100',
    type: 'textCompletion',
    model: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})

app.http('whois', {
    methods: ['GET'],
    route: 'whois/{name}',
    authLevel: 'function',
    extraInputs: [openAICompletionInput],
    handler: async (_request, context) => {
        var response = context.extraInputs.get(openAICompletionInput)
        return { body: response.content.trim() }
    }
});

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.

import { app, input } from "@azure/functions";

// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
    prompt: 'Who is {name}?',
    maxTokens: '100',
    type: 'textCompletion',
    model: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})

app.http('whois', {
    methods: ['GET'],
    route: 'whois/{name}',
    authLevel: 'function',
    extraInputs: [openAICompletionInput],
    handler: async (_request, context) => {
        var response: any = context.extraInputs.get(openAICompletionInput)
        return { body: response.content.trim() }
    }
});

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.

Tady je soubor function.json pro TextCompletionResponse:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "whois/{name}",
      "methods": [
        "get"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "textCompletion",
      "direction": "in",
      "name": "TextCompletionResponse",
      "prompt": "Who is {name}?",
      "maxTokens": "100",
      "model": "%CHAT_MODEL_DEPLOYMENT_NAME%"
    }
  ]
}

Další informace o function.json vlastnosti souboru naleznete v části Konfigurace .

Kód jednoduše vrátí text z rozhraní API pro dokončování jako odpověď:

using namespace System.Net

param($Request, $TriggerMetadata, $TextCompletionResponse)

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body       = $TextCompletionResponse.Content
    })

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.

@app.route(route="whois/{name}", methods=["GET"])
@app.text_completion_input(arg_name="response", prompt="Who is {name}?", max_tokens="100", model = "%CHAT_MODEL_DEPLOYMENT_NAME%")
def whois(req: func.HttpRequest, response: str) -> func.HttpResponse:
    response_json = json.loads(response)
    return func.HttpResponse(response_json["content"], status_code=200)

V tomto příkladu se jako vstup zobrazí výzva, odešle ji přímo do rozhraní API pro dokončování a jako výstup vrátí odpověď.

@app.route(route="genericcompletion", methods=["POST"])
@app.text_completion_input(arg_name="response", prompt="{Prompt}", model = "%CHAT_MODEL_DEPLOYMENT_NAME%")
def genericcompletion(req: func.HttpRequest, response: str) -> func.HttpResponse:
    response_json = json.loads(response)
    return func.HttpResponse(response_json["content"], status_code=200)

Atributy

Konkrétní atribut, který použijete k definování vstupní vazby pro dokončování textu, závisí na režimu procesu jazyka C#.

V izolovaném pracovním modelu použijte TextCompletionInput definici vstupní vazby pro dokončování textu.

Atribut podporuje tyto parametry:

Parametr Popis
Instrukce Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec.
Model Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo.
Teplota Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2. Vyšší hodnoty (0.8) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
TopP Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny, které tvoří 10% pravděpodobnostní hmotnost. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
MaxTokens Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100. Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096).

Poznámky

Poznámka TextCompletion umožňuje definovat vstupní vazbu pro dokončování textu, která podporuje tyto parametry:

Element (Prvek) Popis
Jméno Získá nebo nastaví název vstupní vazby.
pobídnout Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec.
model Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo.
teplota Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2. Vyšší hodnoty (0.8) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
topP Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny, které tvoří 10% pravděpodobnostní hmotnost. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
maxTokens Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100. Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096).

Dekoratéry

Během náhledu definujte vstupní vazbu jako generic_input_binding vazbu typu textCompletion, která podporuje tyto parametry:

Parametr Popis
arg_name Název proměnné, která představuje parametr vazby.
pobídnout Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec.
model Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo.
teplota Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2. Vyšší hodnoty (0.8) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
top_p Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny, které tvoří 10% pravděpodobnostní hmotnost. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
max_tokens Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100. Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096).

Konfigurace

Vazba podporuje tyto vlastnosti konfigurace, které jste nastavili v souboru function.json.

Vlastnost Popis
type Musí být textCompletion.
direction Musí být in.
Jméno Název vstupní vazby.
pobídnout Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec.
model Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo.
teplota Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2. Vyšší hodnoty (0.8) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
topP Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny, které tvoří 10% pravděpodobnostní hmotnost. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
maxTokens Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100. Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096).

Konfigurace

Vazba podporuje tyto vlastnosti, které jsou definovány v kódu:

Vlastnost Popis
pobídnout Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec.
model Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo.
teplota Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2. Vyšší hodnoty (0.8) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
topP Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny, které tvoří 10% pravděpodobnostní hmotnost. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
maxTokens Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100. Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096).

Využití

Kompletní příklady najdete v části Příklad.