Condividi tramite


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

Importante

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

L'associazione di input di completamento del testo OpenAI di Azure 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 OpenAI di Azure, vedere Estensioni OpenAI di Azure per Funzioni di Azure. Per altre informazioni sui completamenti OpenAI di Azure, vedere Informazioni su come generare o modificare il testo.

Annotazioni

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

Annotazioni

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

Annotazioni

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 name parametro e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti OpenAI di Azure 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}?", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
{
    return new OkObjectResult(response.Content);
}

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

[Function(nameof(GenericCompletion))]
public static IActionResult GenericCompletion(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    [TextCompletionInput("{Prompt}", ChatModel = "%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 name parametro e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti OpenAI di Azure 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}?", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false) 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}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false) 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 name parametro e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti OpenAI di Azure 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',
    chatModel: '%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 name parametro e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti OpenAI di Azure 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',
    chatModel: '%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 name parametro e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti OpenAI di Azure 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",
      "chatModel": "%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 name parametro e lo incorpora in un prompt di testo, che viene quindi inviato all'API dei completamenti OpenAI di Azure 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",
    chat_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}",
    chat_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
Suggerimento Ottiene o imposta il prompt per cui generare i completamenti, codificati come stringa.
AIConnectionName Facoltativo. Ottiene o imposta il nome della sezione di configurazione per le impostazioni di connettività del servizio di intelligenza artificiale. Per Azure OpenAI: se specificato, cerca i valori "Endpoint" e "Key" in questa sezione di configurazione. Se non specificato o la sezione non esiste, esegue il fallback alle variabili di ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Per l'autenticazione dell'identità gestita assegnata dall'utente, questa proprietà è obbligatoria. Per il servizio OpenAI (non Azure), impostare la variabile di ambiente OPENAI_API_KEY.
ChatModel Facoltativo. Ottiene o imposta l'ID del modello da utilizzare come stringa, con un valore predefinito .gpt-3.5-turbo
Temperatura Facoltativo. Ottiene o imposta la temperatura di campionamento da utilizzare, come stringa tra 0 e 2. I valori più elevati (0.8) rendono l'output più casuale, mentre i valori inferiori come (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, denominata campionamento del nucleo, come stringa. In questo metodo di campionamento, il modello considera i risultati dei token con top_p massa di probabilità. Significa quindi 0.1 che vengono considerati solo i token che comprendono i primi 10% massa di probabilità. È 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 .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 supportano 4096).
IsReasoningModel Facoltativo. Ottiene o imposta un valore che indica se il modello di completamento della chat è un modello di ragionamento. Questa opzione è sperimentale e associata al modello di ragionamento fino a quando tutti i modelli non hanno parità nelle proprietà previste, con un valore predefinito di false.

Annotazioni

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

Elemento Descrizione
nome Ottiene o imposta il nome del binding di input.
richiesta Ottiene o imposta il prompt per cui generare i completamenti, codificati come stringa.
aiConnectionName Facoltativo. Ottiene o imposta il nome della sezione di configurazione per le impostazioni di connettività del servizio di intelligenza artificiale. Per Azure OpenAI: se specificato, cerca i valori "Endpoint" e "Key" in questa sezione di configurazione. Se non specificato o la sezione non esiste, esegue il fallback alle variabili di ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Per l'autenticazione dell'identità gestita assegnata dall'utente, questa proprietà è obbligatoria. Per il servizio OpenAI (non Azure), impostare la variabile di ambiente OPENAI_API_KEY.
chatModel Ottiene o imposta l'ID del modello da utilizzare come stringa, con un valore predefinito .gpt-3.5-turbo
temperatura Facoltativo. Ottiene o imposta la temperatura di campionamento da utilizzare, come stringa tra 0 e 2. I valori più elevati (0.8) rendono l'output più casuale, mentre i valori inferiori come (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, denominata campionamento del nucleo, come stringa. In questo metodo di campionamento, il modello considera i risultati dei token con top_p massa di probabilità. Significa quindi 0.1 che vengono considerati solo i token che comprendono i primi 10% massa di probabilità. È 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 .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 supportano 4096).
isReasoningModel Facoltativo. Ottiene o imposta un valore che indica se il modello di completamento della chat è un modello di ragionamento. Questa opzione è sperimentale e associata al modello di ragionamento fino a quando tutti i modelli non hanno parità nelle proprietà previste, con un valore predefinito di false.

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.
richiesta Ottiene o imposta il prompt per cui generare i completamenti, codificati come stringa.
ai_connection_name Facoltativo. Ottiene o imposta il nome della sezione di configurazione per le impostazioni di connettività del servizio di intelligenza artificiale. Per Azure OpenAI: se specificato, cerca i valori "Endpoint" e "Key" in questa sezione di configurazione. Se non specificato o la sezione non esiste, esegue il fallback alle variabili di ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Per l'autenticazione dell'identità gestita assegnata dall'utente, questa proprietà è obbligatoria. Per il servizio OpenAI (non Azure), impostare la variabile di ambiente OPENAI_API_KEY.
chat_model Ottiene o imposta l'ID del modello da utilizzare come stringa, con un valore predefinito .gpt-3.5-turbo
temperatura Facoltativo. Ottiene o imposta la temperatura di campionamento da utilizzare, come stringa tra 0 e 2. I valori più elevati (0.8) rendono l'output più casuale, mentre i valori inferiori come (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, denominata campionamento del nucleo, come stringa. In questo metodo di campionamento, il modello considera i risultati dei token con top_p massa di probabilità. Significa quindi 0.1 che vengono considerati solo i token che comprendono i primi 10% massa di probabilità. È 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 .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 supportano 4096).
is_reasoning _model Facoltativo. Ottiene o imposta un valore che indica se il modello di completamento della chat è un modello di ragionamento. Questa opzione è sperimentale e associata al modello di ragionamento fino a quando tutti i modelli non hanno parità nelle proprietà previste, con un valore predefinito di false.

Configurazione

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

Proprietà Descrizione
tipo Deve essere textCompletion.
direzione Deve essere in.
nome Nome dell'associazione di input.
richiesta Ottiene o imposta il prompt per cui generare i completamenti, codificati come stringa.
aiConnectionName Facoltativo. Ottiene o imposta il nome della sezione di configurazione per le impostazioni di connettività del servizio di intelligenza artificiale. Per Azure OpenAI: se specificato, cerca i valori "Endpoint" e "Key" in questa sezione di configurazione. Se non specificato o la sezione non esiste, esegue il fallback alle variabili di ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Per l'autenticazione dell'identità gestita assegnata dall'utente, questa proprietà è obbligatoria. Per il servizio OpenAI (non Azure), impostare la variabile di ambiente OPENAI_API_KEY.
chatModel Ottiene o imposta l'ID del modello da utilizzare come stringa, con un valore predefinito .gpt-3.5-turbo
temperatura Facoltativo. Ottiene o imposta la temperatura di campionamento da utilizzare, come stringa tra 0 e 2. I valori più elevati (0.8) rendono l'output più casuale, mentre i valori inferiori come (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, denominata campionamento del nucleo, come stringa. In questo metodo di campionamento, il modello considera i risultati dei token con top_p massa di probabilità. Significa quindi 0.1 che vengono considerati solo i token che comprendono i primi 10% massa di probabilità. È 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 .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 supportano 4096).
isReasoningModel Facoltativo. Ottiene o imposta un valore che indica se il modello di completamento della chat è un modello di ragionamento. Questa opzione è sperimentale e associata al modello di ragionamento fino a quando tutti i modelli non hanno parità nelle proprietà previste, con un valore predefinito di false.

Configurazione

Il binding supporta queste proprietà, definite nel codice:

Proprietà Descrizione
richiesta Ottiene o imposta il prompt per cui generare i completamenti, codificati come stringa.
aiConnectionName Facoltativo. Ottiene o imposta il nome della sezione di configurazione per le impostazioni di connettività del servizio di intelligenza artificiale. Per Azure OpenAI: se specificato, cerca i valori "Endpoint" e "Key" in questa sezione di configurazione. Se non specificato o la sezione non esiste, esegue il fallback alle variabili di ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Per l'autenticazione dell'identità gestita assegnata dall'utente, questa proprietà è obbligatoria. Per il servizio OpenAI (non Azure), impostare la variabile di ambiente OPENAI_API_KEY.
chatModel Ottiene o imposta l'ID del modello da utilizzare come stringa, con un valore predefinito .gpt-3.5-turbo
temperatura Facoltativo. Ottiene o imposta la temperatura di campionamento da utilizzare, come stringa tra 0 e 2. I valori più elevati (0.8) rendono l'output più casuale, mentre i valori inferiori come (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, denominata campionamento del nucleo, come stringa. In questo metodo di campionamento, il modello considera i risultati dei token con top_p massa di probabilità. Significa quindi 0.1 che vengono considerati solo i token che comprendono i primi 10% massa di probabilità. È 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 .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 supportano 4096).
isReasoningModel Facoltativo. Ottiene o imposta un valore che indica se il modello di completamento della chat è un modello di ragionamento. Questa opzione è sperimentale e associata al modello di ragionamento fino a quando tutti i modelli non hanno parità nelle proprietà previste, con un valore predefinito di false.

Uso

Per esempi completi, vedere la sezione di esempio.