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.