Dela via


Indatabindning för Azure OpenAI-textslutning för Azure Functions

Viktigt!

Azure OpenAI-tillägget för Azure Functions är för närvarande i förhandsversion.

Med indatabindningen för Azure OpenAI-textkomplettering kan du ta med API:erna för slutförande av resultattext i dina kodkörningar. Du kan definiera bindningen för att använda båda fördefinierade prompterna med parametrar eller skicka en hel fråga.

Information om konfiguration och konfigurationsinformation för Azure OpenAI-tillägget finns i Azure OpenAI-tillägg för Azure Functions. Mer information om Azure OpenAI-slutföranden finns i Lär dig hur du genererar eller manipulerar text.

Kommentar

Referenser och exempel tillhandahålls endast för modellen Node.js v4.

Kommentar

Referenser och exempel tillhandahålls endast för Python v2-modellen.

Kommentar

Båda C#-processmodellerna stöds, men endast exempel på isolerade arbetsmodeller tillhandahålls.

Exempel

Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.

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

Det här exemplet tar en fråga som indata, skickar den direkt till API:et för slutföranden och returnerar svaret som utdata.

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

Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.

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

Det här exemplet tar en fråga som indata, skickar den direkt till API:et för slutföranden och returnerar svaret som utdata.

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

Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.

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

Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.

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

Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.

Här är filen function.json för 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%"
    }
  ]
}

Mer information om function.json filegenskaper finns i avsnittet Konfiguration .

Koden returnerar helt enkelt texten från slutförande-API:et som svar:

using namespace System.Net

param($Request, $TriggerMetadata, $TextCompletionResponse)

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

Det här exemplet visar mallmönstret , där FUNKTIONEN HTTP-utlösare tar en name parameter och bäddar in den i en textprompt, som sedan skickas till API:et för Azure OpenAI-slutförande av tillägget. Svaret på uppmaningen returneras i HTTP-svaret.

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

Det här exemplet tar en fråga som indata, skickar den direkt till API:et för slutföranden och returnerar svaret som utdata.

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

Attribut

Det specifika attribut som du använder för att definiera en indatabindning för textslut beror på C#-processläget.

I den isolerade arbetsmodellen använder du TextCompletionInput för att definiera en indatabindning för textslut.

Attributet stöder följande parametrar:

Parameter Description
Prompt Hämtar eller ställer in uppmaningen att generera slutföranden för, kodade som en sträng.
Modell Hämtar eller anger ID för modellen som ska användas som en sträng, med standardvärdet gpt-3.5-turbo.
Temperatur Valfritt. Hämtar eller ställer in samplingstemperaturen som ska användas, som en sträng mellan 0 och 2. Högre värden (0.8) gör utdata mer slumpmässiga, medan lägre värden som (0.2) gör utdata mer fokuserade och deterministiska. Du bör använda antingen Temperature eller TopP, men inte båda.
TopP Valfritt. Hämtar eller anger ett alternativ till sampling med temperatur, som kallas kärnsampling, som en sträng. I den här samplingsmetoden tar modellen hänsyn till resultatet av token med top_p sannolikhetsmassa. Det 0.1 innebär att endast token som består av den översta 10 %-sannolikhetsmassan beaktas. Du bör använda antingen Temperature eller TopP, men inte båda.
MaxTokens Valfritt. Hämtar eller anger det maximala antalet token som ska genereras i slutförandet, som en sträng med standardvärdet 100. Tokenantalet för din fråga plus max_tokens får inte överskrida modellens kontextlängd. De flesta modeller har en kontextlängd på 2 048 token (förutom de senaste modellerna, som stöder 4096).

Kommentarer

Med anteckningen TextCompletion kan du definiera en indatabindning för text som stöder följande parametrar:

Element Description
Namn Hämtar eller anger namnet på indatabindningen.
snabb Hämtar eller ställer in uppmaningen att generera slutföranden för, kodade som en sträng.
modell Hämtar eller anger ID för modellen som ska användas som en sträng, med standardvärdet gpt-3.5-turbo.
temperatur Valfritt. Hämtar eller ställer in samplingstemperaturen som ska användas, som en sträng mellan 0 och 2. Högre värden (0.8) gör utdata mer slumpmässiga, medan lägre värden som (0.2) gör utdata mer fokuserade och deterministiska. Du bör använda antingen Temperature eller TopP, men inte båda.
topP Valfritt. Hämtar eller anger ett alternativ till sampling med temperatur, som kallas kärnsampling, som en sträng. I den här samplingsmetoden tar modellen hänsyn till resultatet av token med top_p sannolikhetsmassa. Det 0.1 innebär att endast token som består av den översta 10 %-sannolikhetsmassan beaktas. Du bör använda antingen Temperature eller TopP, men inte båda.
maxTokens Valfritt. Hämtar eller anger det maximala antalet token som ska genereras i slutförandet, som en sträng med standardvärdet 100. Tokenantalet för din fråga plus max_tokens får inte överskrida modellens kontextlängd. De flesta modeller har en kontextlängd på 2 048 token (förutom de senaste modellerna, som stöder 4096).

Dekoratörer

Under förhandsversionen definierar du indatabindningen som en generic_input_binding bindning av typen textCompletion, som stöder följande parametrar:

Parameter Description
arg_name Namnet på variabeln som representerar bindningsparametern.
snabb Hämtar eller ställer in uppmaningen att generera slutföranden för, kodade som en sträng.
modell Hämtar eller anger ID för modellen som ska användas som en sträng, med standardvärdet gpt-3.5-turbo.
temperatur Valfritt. Hämtar eller ställer in samplingstemperaturen som ska användas, som en sträng mellan 0 och 2. Högre värden (0.8) gör utdata mer slumpmässiga, medan lägre värden som (0.2) gör utdata mer fokuserade och deterministiska. Du bör använda antingen Temperature eller TopP, men inte båda.
top_p Valfritt. Hämtar eller anger ett alternativ till sampling med temperatur, som kallas kärnsampling, som en sträng. I den här samplingsmetoden tar modellen hänsyn till resultatet av token med top_p sannolikhetsmassa. Det 0.1 innebär att endast token som består av den översta 10 %-sannolikhetsmassan beaktas. Du bör använda antingen Temperature eller TopP, men inte båda.
max_tokens Valfritt. Hämtar eller anger det maximala antalet token som ska genereras i slutförandet, som en sträng med standardvärdet 100. Tokenantalet för din fråga plus max_tokens får inte överskrida modellens kontextlängd. De flesta modeller har en kontextlängd på 2 048 token (förutom de senaste modellerna, som stöder 4096).

Konfiguration

Bindningen stöder de konfigurationsegenskaper som du anger i filen function.json.

Property Beskrivning
typ Måste vara textCompletion.
riktning Måste vara in.
Namn Namnet på indatabindningen.
snabb Hämtar eller ställer in uppmaningen att generera slutföranden för, kodade som en sträng.
modell Hämtar eller anger ID för modellen som ska användas som en sträng, med standardvärdet gpt-3.5-turbo.
temperatur Valfritt. Hämtar eller ställer in samplingstemperaturen som ska användas, som en sträng mellan 0 och 2. Högre värden (0.8) gör utdata mer slumpmässiga, medan lägre värden som (0.2) gör utdata mer fokuserade och deterministiska. Du bör använda antingen Temperature eller TopP, men inte båda.
topP Valfritt. Hämtar eller anger ett alternativ till sampling med temperatur, som kallas kärnsampling, som en sträng. I den här samplingsmetoden tar modellen hänsyn till resultatet av token med top_p sannolikhetsmassa. Det 0.1 innebär att endast token som består av den översta 10 %-sannolikhetsmassan beaktas. Du bör använda antingen Temperature eller TopP, men inte båda.
maxTokens Valfritt. Hämtar eller anger det maximala antalet token som ska genereras i slutförandet, som en sträng med standardvärdet 100. Tokenantalet för din fråga plus max_tokens får inte överskrida modellens kontextlängd. De flesta modeller har en kontextlängd på 2 048 token (förutom de senaste modellerna, som stöder 4096).

Konfiguration

Bindningen stöder dessa egenskaper, som definieras i koden:

Property beskrivning
snabb Hämtar eller ställer in uppmaningen att generera slutföranden för, kodade som en sträng.
modell Hämtar eller anger ID för modellen som ska användas som en sträng, med standardvärdet gpt-3.5-turbo.
temperatur Valfritt. Hämtar eller ställer in samplingstemperaturen som ska användas, som en sträng mellan 0 och 2. Högre värden (0.8) gör utdata mer slumpmässiga, medan lägre värden som (0.2) gör utdata mer fokuserade och deterministiska. Du bör använda antingen Temperature eller TopP, men inte båda.
topP Valfritt. Hämtar eller anger ett alternativ till sampling med temperatur, som kallas kärnsampling, som en sträng. I den här samplingsmetoden tar modellen hänsyn till resultatet av token med top_p sannolikhetsmassa. Det 0.1 innebär att endast token som består av den översta 10 %-sannolikhetsmassan beaktas. Du bör använda antingen Temperature eller TopP, men inte båda.
maxTokens Valfritt. Hämtar eller anger det maximala antalet token som ska genereras i slutförandet, som en sträng med standardvärdet 100. Tokenantalet för din fråga plus max_tokens får inte överskrida modellens kontextlängd. De flesta modeller har en kontextlängd på 2 048 token (förutom de senaste modellerna, som stöder 4096).

Användning

Se avsnittet Exempel för fullständiga exempel.