Eingabebindung für Azure OpenAI-Textvervollständigung für Azure Functions

Wichtig

Die Azure OpenAI-Erweiterung für Azure Functions befindet sich derzeit in der Vorschau.

Die Azure OpenAI-Eingabebindung für die Textvervollständigung ermöglicht es Ihnen, die APIs für die Textvervollständigung der Ergebnisse in Ihre Codeausführungen einzubinden. Sie können die Bindung so einrichten, dass sowohl vordefinierte Prompts mit Parametern als auch komplette Prompts verwendet werden.

Informationen zu Einrichtungs- und Konfigurationsdetails der Azure OpenAI-Erweiterung finden Sie unter Azure OpenAI-Erweiterungen für Azure Functions. Weitere Informationen zu Azure OpenAI-Vervollständigungen finden Sie unter Informationen zum Generieren oder Bearbeiten von Text.

Hinweis

Referenzen und Beispiele werden nur für das Node.js v4-Modell bereitgestellt.

Hinweis

Referenzen und Beispiele werden nur für das Python v2-Modell bereitgestellt.

Hinweis

Während beide C#-Prozessmodelle unterstützt werden, werden nur Isolierte Arbeitsmodellbeispiele bereitgestellt.

Beispiel

Dieses Beispiel demonstriert das Verwendetsmuster, bei dem die HTTP- Auslösefunktion einen name- Parameter nimmt und ihn in einen Textprompt einbettet, die dann von der Erweiterung an die Azure OpenAI-Vervollständigungs-API gesendet wird. Die Antwort auf den Prompt wird in der HTTP-Antwort zurückgegeben.

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

Dieses Beispiel nimmt einen Prompt als Eingabe, sendet ihn direkt an die Vervollständigungs-API und gibt die Antwort als Ausgabe zurück.

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

Dieses Beispiel demonstriert das Verwendetsmuster, bei dem die HTTP- Auslösefunktion einen name- Parameter nimmt und ihn in einen Textprompt einbettet, die dann von der Erweiterung an die Azure OpenAI-Vervollständigungs-API gesendet wird. Die Antwort auf den Prompt wird in der HTTP-Antwort zurückgegeben.

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

Dieses Beispiel nimmt einen Prompt als Eingabe, sendet ihn direkt an die Vervollständigungs-API und gibt die Antwort als Ausgabe zurück.

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

Dieses Beispiel demonstriert das Verwendetsmuster, bei dem die HTTP- Auslösefunktion einen name- Parameter nimmt und ihn in einen Textprompt einbettet, die dann von der Erweiterung an die Azure OpenAI-Vervollständigungs-API gesendet wird. Die Antwort auf den Prompt wird in der HTTP-Antwort zurückgegeben.

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

Dieses Beispiel demonstriert das Verwendetsmuster, bei dem die HTTP- Auslösefunktion einen name- Parameter nimmt und ihn in einen Textprompt einbettet, die dann von der Erweiterung an die Azure OpenAI-Vervollständigungs-API gesendet wird. Die Antwort auf den Prompt wird in der HTTP-Antwort zurückgegeben.

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

Dieses Beispiel demonstriert das Verwendetsmuster, bei dem die HTTP- Auslösefunktion einen name- Parameter nimmt und ihn in einen Textprompt einbettet, die dann von der Erweiterung an die Azure OpenAI-Vervollständigungs-API gesendet wird. Die Antwort auf den Prompt wird in der HTTP-Antwort zurückgegeben.

Hier sehen Sie die Datei 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%"
    }
  ]
}

Weitere Informationen zu den Dateieigenschaften von function.json finden Sie im Abschnitt Konfiguration.

Der Code gibt einfach den Text aus der Abschluss-API als Antwort zurück:

using namespace System.Net

param($Request, $TriggerMetadata, $TextCompletionResponse)

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

Dieses Beispiel demonstriert das Verwendetsmuster, bei dem die HTTP- Auslösefunktion einen name- Parameter nimmt und ihn in einen Textprompt einbettet, die dann von der Erweiterung an die Azure OpenAI-Vervollständigungs-API gesendet wird. Die Antwort auf den Prompt wird in der HTTP-Antwort zurückgegeben.

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

Dieses Beispiel nimmt einen Prompt als Eingabe, sendet ihn direkt an die Vervollständigungs-API und gibt die Antwort als Ausgabe zurück.

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

Attribute

Das spezifische Attribut, das Sie anwenden, um eine Eingabebindung zur Textvervollständigung zu definieren, hängt von Ihrem C#-Prozessmodus ab.

Wenden Sie im isolierten Arbeitsmodell TextCompletionInput an, um eine Eingabebindung zur Textvervollständigung zu definieren.

Das Attribut unterstützt die folgenden Parameter:

Parameter Beschreibung
Eingabeaufforderung Ruft den als Zeichenfolge kodierte Prompt ab, für den Vervollständigungen generiert werden sollen, oder legt diesen fest.
Modell Ruft die ID des zu verwendenden Modells als Zeichenfolge ab oder legt sie fest, wobei der Standardwert gpt-3.5-turbo ist.
Temperature Optional. Ruft die zu verwendende Samplingtemperatur als Zeichenfolge zwischen 0 und 2 ab. Durch höhere Werte (0.8) wird die Ausgabe zufälliger, während sie durch niedrigere Werte (0.2) fokussierter und deterministischer wird. Sie sollten entweder Temperature oder TopP verwenden, jedoch nicht beide gleichzeitig.
TopP Optional. Ruft eine Alternative zum Sampling mit Temperatur, die sogenannte Kernstichprobe, als Zeichenfolge ab oder legt sie fest. Bei dieser Samplingmethode berücksichtigt das Modell die Ergebnisse der Token mit top_p Wahrscheinlichkeitsmasse. Daher bedeutet 0.1, dass nur die Token berücksichtigt werden, die die oberen 10 % der Wahrscheinlichkeitsmasse umfassen. Sie sollten entweder Temperature oder TopP verwenden, jedoch nicht beide gleichzeitig.
MaxTokens Optional. Liest oder setzt die maximale Anzahl von Token, die in der Vervollständigung generiert werden sollen, als Zeichenfolge mit dem Standardwert 100. Die Tokenanzahl Ihres Prompts plus max_tokens darf die Kontextlänge des Modells nicht überschreiten. Die meisten Modelle haben eine Kontextlänge von 2,048 Token (mit Ausnahme der neuesten Modelle, die 4096 unterstützen).

Anmerkungen

Mit der Anmerkung TextCompletion können Sie eine Eingabebindung für die Textvervollständigung definieren, die diese Parameter unterstützt:

Element BESCHREIBUNG
name Ruft den Namen der Eingabebindung ab oder legt ihn fest.
prompt Ruft den als Zeichenfolge kodierte Prompt ab, für den Vervollständigungen generiert werden sollen, oder legt diesen fest.
Modell Ruft die ID des zu verwendenden Modells als Zeichenfolge ab oder legt sie fest, wobei der Standardwert gpt-3.5-turbo ist.
temperature Optional. Ruft die zu verwendende Samplingtemperatur als Zeichenfolge zwischen 0 und 2 ab. Durch höhere Werte (0.8) wird die Ausgabe zufälliger, während sie durch niedrigere Werte (0.2) fokussierter und deterministischer wird. Sie sollten entweder Temperature oder TopP verwenden, jedoch nicht beide gleichzeitig.
topP Optional. Ruft eine Alternative zum Sampling mit Temperatur, die sogenannte Kernstichprobe, als Zeichenfolge ab oder legt sie fest. Bei dieser Samplingmethode berücksichtigt das Modell die Ergebnisse der Token mit top_p Wahrscheinlichkeitsmasse. Daher bedeutet 0.1, dass nur die Token berücksichtigt werden, die die oberen 10 % der Wahrscheinlichkeitsmasse umfassen. Sie sollten entweder Temperature oder TopP verwenden, jedoch nicht beide gleichzeitig.
maxTokens Optional. Liest oder setzt die maximale Anzahl von Token, die in der Vervollständigung generiert werden sollen, als Zeichenfolge mit dem Standardwert 100. Die Tokenanzahl Ihres Prompts plus max_tokens darf die Kontextlänge des Modells nicht überschreiten. Die meisten Modelle haben eine Kontextlänge von 2,048 Token (mit Ausnahme der neuesten Modelle, die 4096 unterstützen).

Decorator-Elemente

Definieren Sie während der Vorschau die Eingabebindung als generic_input_binding-Bindung vom Typ textCompletion, die diese Parameter unterstützt:

Parameter Beschreibung
arg_name Der Name der Variablen, die den Bindungsparameter darstellt.
prompt Ruft den als Zeichenfolge kodierte Prompt ab, für den Vervollständigungen generiert werden sollen, oder legt diesen fest.
Modell Ruft die ID des zu verwendenden Modells als Zeichenfolge ab oder legt sie fest, wobei der Standardwert gpt-3.5-turbo ist.
temperature Optional. Ruft die zu verwendende Samplingtemperatur als Zeichenfolge zwischen 0 und 2 ab. Durch höhere Werte (0.8) wird die Ausgabe zufälliger, während sie durch niedrigere Werte (0.2) fokussierter und deterministischer wird. Sie sollten entweder Temperature oder TopP verwenden, jedoch nicht beide gleichzeitig.
top_p Optional. Ruft eine Alternative zum Sampling mit Temperatur, die sogenannte Kernstichprobe, als Zeichenfolge ab oder legt sie fest. Bei dieser Samplingmethode berücksichtigt das Modell die Ergebnisse der Token mit top_p Wahrscheinlichkeitsmasse. Daher bedeutet 0.1, dass nur die Token berücksichtigt werden, die die oberen 10 % der Wahrscheinlichkeitsmasse umfassen. Sie sollten entweder Temperature oder TopP verwenden, jedoch nicht beide gleichzeitig.
max_tokens Optional. Liest oder setzt die maximale Anzahl von Token, die in der Vervollständigung generiert werden sollen, als Zeichenfolge mit dem Standardwert 100. Die Tokenanzahl Ihres Prompts plus max_tokens darf die Kontextlänge des Modells nicht überschreiten. Die meisten Modelle haben eine Kontextlänge von 2,048 Token (mit Ausnahme der neuesten Modelle, die 4096 unterstützen).

Konfiguration

Die Bindung unterstützt diese Konfigurationseigenschaften, die Sie in der Datei „function.json“ festlegen.

Eigenschaft Beschreibung des Dataflows
type Muss textCompletionlauten.
direction Muss inlauten.
name Der Name der Eingabebindung.
prompt Ruft den als Zeichenfolge kodierte Prompt ab, für den Vervollständigungen generiert werden sollen, oder legt diesen fest.
Modell Ruft die ID des zu verwendenden Modells als Zeichenfolge ab oder legt sie fest, wobei der Standardwert gpt-3.5-turbo ist.
temperature Optional. Ruft die zu verwendende Samplingtemperatur als Zeichenfolge zwischen 0 und 2 ab. Durch höhere Werte (0.8) wird die Ausgabe zufälliger, während sie durch niedrigere Werte (0.2) fokussierter und deterministischer wird. Sie sollten entweder Temperature oder TopP verwenden, jedoch nicht beide gleichzeitig.
topP Optional. Ruft eine Alternative zum Sampling mit Temperatur, die sogenannte Kernstichprobe, als Zeichenfolge ab oder legt sie fest. Bei dieser Samplingmethode berücksichtigt das Modell die Ergebnisse der Token mit top_p Wahrscheinlichkeitsmasse. Daher bedeutet 0.1, dass nur die Token berücksichtigt werden, die die oberen 10 % der Wahrscheinlichkeitsmasse umfassen. Sie sollten entweder Temperature oder TopP verwenden, jedoch nicht beide gleichzeitig.
maxTokens Optional. Liest oder setzt die maximale Anzahl von Token, die in der Vervollständigung generiert werden sollen, als Zeichenfolge mit dem Standardwert 100. Die Tokenanzahl Ihres Prompts plus max_tokens darf die Kontextlänge des Modells nicht überschreiten. Die meisten Modelle haben eine Kontextlänge von 2,048 Token (mit Ausnahme der neuesten Modelle, die 4096 unterstützen).

Konfiguration

Die Bindung unterstützt diese Eigenschaften, die in Ihrem Code definiert sind:

Eigenschaft Beschreibung
prompt Ruft den als Zeichenfolge kodierte Prompt ab, für den Vervollständigungen generiert werden sollen, oder legt diesen fest.
Modell Ruft die ID des zu verwendenden Modells als Zeichenfolge ab oder legt sie fest, wobei der Standardwert gpt-3.5-turbo ist.
temperature Optional. Ruft die zu verwendende Samplingtemperatur als Zeichenfolge zwischen 0 und 2 ab. Durch höhere Werte (0.8) wird die Ausgabe zufälliger, während sie durch niedrigere Werte (0.2) fokussierter und deterministischer wird. Sie sollten entweder Temperature oder TopP verwenden, jedoch nicht beide gleichzeitig.
topP Optional. Ruft eine Alternative zum Sampling mit Temperatur, die sogenannte Kernstichprobe, als Zeichenfolge ab oder legt sie fest. Bei dieser Samplingmethode berücksichtigt das Modell die Ergebnisse der Token mit top_p Wahrscheinlichkeitsmasse. Daher bedeutet 0.1, dass nur die Token berücksichtigt werden, die die oberen 10 % der Wahrscheinlichkeitsmasse umfassen. Sie sollten entweder Temperature oder TopP verwenden, jedoch nicht beide gleichzeitig.
maxTokens Optional. Liest oder setzt die maximale Anzahl von Token, die in der Vervollständigung generiert werden sollen, als Zeichenfolge mit dem Standardwert 100. Die Tokenanzahl Ihres Prompts plus max_tokens darf die Kontextlänge des Modells nicht überschreiten. Die meisten Modelle haben eine Kontextlänge von 2,048 Token (mit Ausnahme der neuesten Modelle, die 4096 unterstützen).

Verbrauch

Vollständige Beispiele finden Sie im Abschnitt Beispiele.