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 textCompletion lauten. |
direction | Muss in lauten. |
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.