Associazione di input di completamento del testo Azure OpenAI per le Funzioni di Azure

Importante

L'estensione Azure OpenAI per Funzioni di Azure è attualmente in anteprima.

L'associazione di input di completamento del testo Azure OpenAI consente di inserire le API di completamento del testo dei risultati nelle esecuzioni di codice. È possibile definire l'associazione per usare entrambe le richieste predefinite con parametri o passare un'intera richiesta.

Per informazioni sull'installazione e la configurazione dell'estensione Azure OpenAI, vedere Estensioni Azure OpenAI per Funzioni di Azure. Per ulteriori informazioni sui completamenti Azure OpenAI, vedere Informazioni su come generare o modificare il testo.

Nota

I riferimenti e gli esempi vengono forniti solo per il modello Node.js v4.

Nota

I riferimenti e gli esempi vengono forniti solo per il modello Python v2.

Nota

Anche se sono supportati entrambi i modelli di processo C#, vengono forniti solo esempi di modelli di lavoro isolati.

Esempio

Questo esempio illustra il modello di creazione di modelli, in cui la funzione trigger HTTP accetta un parametro name e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti Azure OpenAI dall'estensione. La risposta alla richiesta viene restituita nella risposta 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>

Questo esempio accetta un prompt come input, lo invia direttamente all'API dei completamenti e restituisce la risposta come output.

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

Questo esempio illustra il modello di creazione di modelli, in cui la funzione trigger HTTP accetta un parametro name e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti Azure OpenAI dall'estensione. La risposta alla richiesta viene restituita nella risposta 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();
}

Questo esempio accetta un prompt come input, lo invia direttamente all'API dei completamenti e restituisce la risposta come output.

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

Questo esempio illustra il modello di creazione di modelli, in cui la funzione trigger HTTP accetta un parametro name e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti Azure OpenAI dall'estensione. La risposta alla richiesta viene restituita nella risposta 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() }
    }
});

Questo esempio illustra il modello di creazione di modelli, in cui la funzione trigger HTTP accetta un parametro name e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti Azure OpenAI dall'estensione. La risposta alla richiesta viene restituita nella risposta 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() }
    }
});

Questo esempio illustra il modello di creazione di modelli, in cui la funzione trigger HTTP accetta un parametro name e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti Azure OpenAI dall'estensione. La risposta alla richiesta viene restituita nella risposta HTTP.

Ecco il file function.json per 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%"
    }
  ]
}

Per altre informazioni sulle proprietà dei file function.json, vedere la sezione configurazione.

Il codice restituisce semplicemente il testo dall'API di completamento come risposta:

using namespace System.Net

param($Request, $TriggerMetadata, $TextCompletionResponse)

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

Questo esempio illustra il modello di creazione di modelli, in cui la funzione trigger HTTP accetta un parametro name e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti Azure OpenAI dall'estensione. La risposta alla richiesta viene restituita nella risposta 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)

Questo esempio accetta un prompt come input, lo invia direttamente all'API dei completamenti e restituisce la risposta come output.

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

Attributi

L'attributo specifico applicato per definire un'associazione di input di completamento del testo dipende dalla modalità processo C#.

Nel modello di lavoro isolato applicare TextCompletionInput per definire un'associazione di input di completamento del testo.

L'attributo supporta questi parametri:

Parametro Descrizione
Prompt Ottiene o imposta il prompt per cui generare i completamenti, codificati come stringa.
Modello Ottiene o imposta l'ID del modello da utilizzare come stringa, con un valore predefinito di gpt-3.5-turbo.
Temperatura Facoltativo. Ottiene o imposta la temperatura di campionamento da utilizzare, come stringa tra 0 e 2. Valori più elevati (0.8) rendono l'output più casuale, mentre valori più bassi (0.2) rendono l'output più mirato e deterministico. È consigliabile usare Temperature o TopP, ma non entrambi.
TopP Facoltativo. Ottiene o imposta un'alternativa al campionamento con la temperatura, denominato campionamento del nucleo, come stringa. In questo metodo di campionamento, il modello considera i risultati dei token con la massa di probabilità top_p. Quindi 0.1 significa che vengono considerati solo i token che comprendono la massa di probabilità superiore del 10%. È consigliabile usare Temperature o TopP, ma non entrambi.
MaxTokens Facoltativo. Ottiene o imposta il numero massimo di token da generare nel completamento, come stringa con un valore predefinito di 100. Il numero di token della richiesta più max_tokens non può superare la lunghezza del contesto del modello. La maggior parte dei modelli ha una lunghezza di contesto di 2.048 token (ad eccezione dei modelli più recenti, che ne supportano 4096).

Annotazioni

L'annotazione TextCompletion consente di definire un'associazione di input di completamento del testo, che supporta questi parametri:

Elemento Descrizione
name Ottiene o imposta il nome del binding di input.
prompt Ottiene o imposta il prompt per cui generare i completamenti, codificati come stringa.
model Ottiene o imposta l'ID del modello da utilizzare come stringa, con un valore predefinito di gpt-3.5-turbo.
temperatura Facoltativo. Ottiene o imposta la temperatura di campionamento da utilizzare, come stringa tra 0 e 2. Valori più elevati (0.8) rendono l'output più casuale, mentre valori più bassi (0.2) rendono l'output più mirato e deterministico. È consigliabile usare Temperature o TopP, ma non entrambi.
topP Facoltativo. Ottiene o imposta un'alternativa al campionamento con la temperatura, denominato campionamento del nucleo, come stringa. In questo metodo di campionamento, il modello considera i risultati dei token con la massa di probabilità top_p. Quindi 0.1 significa che vengono considerati solo i token che comprendono la massa di probabilità superiore del 10%. È consigliabile usare Temperature o TopP, ma non entrambi.
maxTokens Facoltativo. Ottiene o imposta il numero massimo di token da generare nel completamento, come stringa con un valore predefinito di 100. Il numero di token della richiesta più max_tokens non può superare la lunghezza del contesto del modello. La maggior parte dei modelli ha una lunghezza di contesto di 2.048 token (ad eccezione dei modelli più recenti, che ne supportano 4096).

Elementi Decorator

Durante l'anteprima, definire l'associazione di input come associazione generic_input_binding di tipo textCompletion, che supporta questi parametri:

Parametro Descrizione
arg_name Nome della variabile che rappresenta il parametro di associazione.
prompt Ottiene o imposta il prompt per cui generare i completamenti, codificati come stringa.
model Ottiene o imposta l'ID del modello da utilizzare come stringa, con un valore predefinito di gpt-3.5-turbo.
temperatura Facoltativo. Ottiene o imposta la temperatura di campionamento da utilizzare, come stringa tra 0 e 2. Valori più elevati (0.8) rendono l'output più casuale, mentre valori più bassi (0.2) rendono l'output più mirato e deterministico. È consigliabile usare Temperature o TopP, ma non entrambi.
top_p Facoltativo. Ottiene o imposta un'alternativa al campionamento con la temperatura, denominato campionamento del nucleo, come stringa. In questo metodo di campionamento, il modello considera i risultati dei token con la massa di probabilità top_p. Quindi 0.1 significa che vengono considerati solo i token che comprendono la massa di probabilità superiore del 10%. È consigliabile usare Temperature o TopP, ma non entrambi.
max_tokens Facoltativo. Ottiene o imposta il numero massimo di token da generare nel completamento, come stringa con un valore predefinito di 100. Il numero di token della richiesta più max_tokens non può superare la lunghezza del contesto del modello. La maggior parte dei modelli ha una lunghezza di contesto di 2.048 token (ad eccezione dei modelli più recenti, che ne supportano 4096).

Impostazione

L'associazione supporta queste proprietà di configurazione impostate nel file function.json.

Proprietà Descrizione
type Deve essere textCompletion.
direction Deve essere in.
name Nome dell'associazione di input.
prompt Ottiene o imposta il prompt per cui generare i completamenti, codificati come stringa.
model Ottiene o imposta l'ID del modello da utilizzare come stringa, con un valore predefinito di gpt-3.5-turbo.
temperatura Facoltativo. Ottiene o imposta la temperatura di campionamento da utilizzare, come stringa tra 0 e 2. Valori più elevati (0.8) rendono l'output più casuale, mentre valori più bassi (0.2) rendono l'output più mirato e deterministico. È consigliabile usare Temperature o TopP, ma non entrambi.
topP Facoltativo. Ottiene o imposta un'alternativa al campionamento con la temperatura, denominato campionamento del nucleo, come stringa. In questo metodo di campionamento, il modello considera i risultati dei token con la massa di probabilità top_p. Quindi 0.1 significa che vengono considerati solo i token che comprendono la massa di probabilità superiore del 10%. È consigliabile usare Temperature o TopP, ma non entrambi.
maxTokens Facoltativo. Ottiene o imposta il numero massimo di token da generare nel completamento, come stringa con un valore predefinito di 100. Il numero di token della richiesta più max_tokens non può superare la lunghezza del contesto del modello. La maggior parte dei modelli ha una lunghezza di contesto di 2.048 token (ad eccezione dei modelli più recenti, che ne supportano 4096).

Impostazione

Il binding supporta queste proprietà, definite nel codice:

Proprietà Descrizione
prompt Ottiene o imposta il prompt per cui generare i completamenti, codificati come stringa.
model Ottiene o imposta l'ID del modello da utilizzare come stringa, con un valore predefinito di gpt-3.5-turbo.
temperatura Facoltativo. Ottiene o imposta la temperatura di campionamento da utilizzare, come stringa tra 0 e 2. Valori più elevati (0.8) rendono l'output più casuale, mentre valori più bassi (0.2) rendono l'output più mirato e deterministico. È consigliabile usare Temperature o TopP, ma non entrambi.
topP Facoltativo. Ottiene o imposta un'alternativa al campionamento con la temperatura, denominato campionamento del nucleo, come stringa. In questo metodo di campionamento, il modello considera i risultati dei token con la massa di probabilità top_p. Quindi 0.1 significa che vengono considerati solo i token che comprendono la massa di probabilità superiore del 10%. È consigliabile usare Temperature o TopP, ma non entrambi.
maxTokens Facoltativo. Ottiene o imposta il numero massimo di token da generare nel completamento, come stringa con un valore predefinito di 100. Il numero di token della richiesta più max_tokens non può superare la lunghezza del contesto del modello. La maggior parte dei modelli ha una lunghezza di contesto di 2.048 token (ad eccezione dei modelli più recenti, che ne supportano 4096).

Utilizzo

Per esempi completi, vedere la sezione di esempio.