Liaison d’entrée de complétion de texte Azure OpenAI pour Azure Functions
Important
L’extension Azure OpenAI pour Azure Functions est actuellement en préversion.
La liaison d’entrée de complétion de texte Azure OpenAI vous permet d’intégrer les API de complétion de texte des résultats dans vos exécutions de code. Vous pouvez définir la liaison pour utiliser les deux prompts prédéfinis avec des paramètres ou passer directement un prompt entier.
Pour plus d’informations sur l’installation et la configuration de l’extension Azure OpenAI, consultez Extensions Azure OpenAI pour Azure Functions. Pour en savoir plus sur les complétions Azure OpenAI, consultez Apprendre à générer ou à manipuler du texte.
Remarque
Les références et les exemples sont fournis uniquement pour le modèle Node.js v4.
Remarque
Les références et exemples sont fournis uniquement pour le modèle Python v2.
Remarque
Bien que les deux modèles de processus C# soient pris en charge, seuls les exemples de modèles worker isolés sont fournis.
Exemple
Cet exemple illustre le schéma (pattern) de création de modèles, où la fonction de déclencheur HTTP prend un paramètre name
et l’incorpore dans un prompt textuel, qui est ensuite envoyé à l’API de complétions Azure OpenAI par l’extension. La réponse au prompt est retournée dans la réponse 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>
Cet exemple prend un prompt en tant qu’entrée, l’envoie directement à l’API de complétions et retourne la réponse en tant que sortie.
[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);
}
}
Cet exemple illustre le schéma (pattern) de création de modèles, où la fonction de déclencheur HTTP prend un paramètre name
et l’incorpore dans un prompt textuel, qui est ensuite envoyé à l’API de complétions Azure OpenAI par l’extension. La réponse au prompt est retournée dans la réponse 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();
}
Cet exemple prend un prompt en tant qu’entrée, l’envoie directement à l’API de complétions et retourne la réponse en tant que sortie.
@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();
}
Cet exemple illustre le schéma (pattern) de création de modèles, où la fonction de déclencheur HTTP prend un paramètre name
et l’incorpore dans un prompt textuel, qui est ensuite envoyé à l’API de complétions Azure OpenAI par l’extension. La réponse au prompt est retournée dans la réponse 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() }
}
});
Cet exemple illustre le schéma (pattern) de création de modèles, où la fonction de déclencheur HTTP prend un paramètre name
et l’incorpore dans un prompt textuel, qui est ensuite envoyé à l’API de complétions Azure OpenAI par l’extension. La réponse au prompt est retournée dans la réponse 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() }
}
});
Cet exemple illustre le schéma (pattern) de création de modèles, où la fonction de déclencheur HTTP prend un paramètre name
et l’incorpore dans un prompt textuel, qui est ensuite envoyé à l’API de complétions Azure OpenAI par l’extension. La réponse au prompt est retournée dans la réponse HTTP.
Voici le fichier function.json pour 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%"
}
]
}
Pour plus d’informations sur les propriétés du fichier function.json, consultez la section Configuration.
Le code retourne simplement le texte de l’API de complétion comme réponse :
using namespace System.Net
param($Request, $TriggerMetadata, $TextCompletionResponse)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $TextCompletionResponse.Content
})
Cet exemple illustre le schéma (pattern) de création de modèles, où la fonction de déclencheur HTTP prend un paramètre name
et l’incorpore dans un prompt textuel, qui est ensuite envoyé à l’API de complétions Azure OpenAI par l’extension. La réponse au prompt est retournée dans la réponse 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)
Cet exemple prend un prompt en tant qu’entrée, l’envoie directement à l’API de complétions et retourne la réponse en tant que sortie.
@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)
Attributs
L’attribut spécifique que vous appliquez pour définir une liaison d’entrée de complétion de texte dépend de votre mode de processus C#.
Dans le modèle worker isolé, appliquez TextCompletionInput
pour définir une liaison d’entrée de complétion de texte.
L’attribut prend en charge ces paramètres :
Paramètre | Description |
---|---|
Demander | Obtient ou définit le prompt pour lequel générer des complétions, encodé sous forme de chaîne. |
Modèle | Obtient ou définit l’ID du modèle à utiliser en tant que chaîne, avec la valeur par défaut gpt-3.5-turbo . |
Température | Facultatif. Obtient ou définit la température d’échantillonnage à utiliser, sous forme de chaîne entre 0 et 2 . Des valeurs supérieures (0.8 ) rendent la sortie plus aléatoire, tandis que des valeurs inférieures (0.2 ) rendent la sortie plus ciblée et déterministe. Vous devez utiliser Temperature ou TopP , mais pas les deux. |
TopP | Facultatif. Obtient ou définit une alternative à l’échantillonnage avec la température, appelée échantillonnage de noyau, sous forme de chaîne. Dans cette méthode d’échantillonnage, le modèle considère les résultats des jetons avec la masse de probabilité top_p . Par conséquent, 0.1 signifie que seuls les jetons comprenant la masse de probabilité supérieure de 10 % sont considérés. Vous devez utiliser Temperature ou TopP , mais pas les deux. |
MaxTokens | Facultatif. Obtient ou définit le nombre maximal de jetons à générer dans la complétion, sous forme de chaîne avec la valeur par défaut 100 . Le nombre de jetons de votre invite plus max_tokens ne peut pas dépasser la longueur du contexte du modèle. La plupart des modèles ont une longueur de contexte de 2 048 jetons (à l’exception des modèles les plus récents qui prennent en charge 4 096 jetons). |
Annotations
L’annotation TextCompletion
vous permet de définir une liaison d’entrée de complétion de texte, qui prend en charge ces paramètres :
Élément | Description |
---|---|
name | Obtient ou définit le nom de la liaison d’entrée. |
prompt | Obtient ou définit le prompt pour lequel générer des complétions, encodé sous forme de chaîne. |
modèle | Obtient ou définit l’ID du modèle à utiliser en tant que chaîne, avec la valeur par défaut gpt-3.5-turbo . |
température | Facultatif. Obtient ou définit la température d’échantillonnage à utiliser, sous forme de chaîne entre 0 et 2 . Des valeurs supérieures (0.8 ) rendent la sortie plus aléatoire, tandis que des valeurs inférieures (0.2 ) rendent la sortie plus ciblée et déterministe. Vous devez utiliser Temperature ou TopP , mais pas les deux. |
topP | Facultatif. Obtient ou définit une alternative à l’échantillonnage avec la température, appelée échantillonnage de noyau, sous forme de chaîne. Dans cette méthode d’échantillonnage, le modèle considère les résultats des jetons avec la masse de probabilité top_p . Par conséquent, 0.1 signifie que seuls les jetons comprenant la masse de probabilité supérieure de 10 % sont considérés. Vous devez utiliser Temperature ou TopP , mais pas les deux. |
maxTokens | Facultatif. Obtient ou définit le nombre maximal de jetons à générer dans la complétion, sous forme de chaîne avec la valeur par défaut 100 . Le nombre de jetons de votre invite plus max_tokens ne peut pas dépasser la longueur du contexte du modèle. La plupart des modèles ont une longueur de contexte de 2 048 jetons (à l’exception des modèles les plus récents qui prennent en charge 4 096 jetons). |
Décorateurs
Pendant la préversion, définissez la liaison d’entrée en tant que liaison generic_input_binding
de type textCompletion
, qui prend en charge ces paramètres :
Paramètre | Description |
---|---|
arg_name | Le nom de la variable qui représente le paramètre de liaison. |
prompt | Obtient ou définit le prompt pour lequel générer des complétions, encodé sous forme de chaîne. |
modèle | Obtient ou définit l’ID du modèle à utiliser en tant que chaîne, avec la valeur par défaut gpt-3.5-turbo . |
température | Facultatif. Obtient ou définit la température d’échantillonnage à utiliser, sous forme de chaîne entre 0 et 2 . Des valeurs supérieures (0.8 ) rendent la sortie plus aléatoire, tandis que des valeurs inférieures (0.2 ) rendent la sortie plus ciblée et déterministe. Vous devez utiliser Temperature ou TopP , mais pas les deux. |
top_p | Facultatif. Obtient ou définit une alternative à l’échantillonnage avec la température, appelée échantillonnage de noyau, sous forme de chaîne. Dans cette méthode d’échantillonnage, le modèle considère les résultats des jetons avec la masse de probabilité top_p . Par conséquent, 0.1 signifie que seuls les jetons comprenant la masse de probabilité supérieure de 10 % sont considérés. Vous devez utiliser Temperature ou TopP , mais pas les deux. |
max_tokens | Facultatif. Obtient ou définit le nombre maximal de jetons à générer dans la complétion, sous forme de chaîne avec la valeur par défaut 100 . Le nombre de jetons de votre invite plus max_tokens ne peut pas dépasser la longueur du contexte du modèle. La plupart des modèles ont une longueur de contexte de 2 048 jetons (à l’exception des modèles les plus récents qui prennent en charge 4 096 jetons). |
Configuration
La liaison prend en charge ces propriétés de configuration que vous définissez dans le fichier function.json.
Propriété | Description |
---|---|
type | Doit être textCompletion . |
direction | Doit être in . |
name | Le nom de la liaison d’entrée. |
prompt | Obtient ou définit le prompt pour lequel générer des complétions, encodé sous forme de chaîne. |
modèle | Obtient ou définit l’ID du modèle à utiliser en tant que chaîne, avec la valeur par défaut gpt-3.5-turbo . |
température | Facultatif. Obtient ou définit la température d’échantillonnage à utiliser, sous forme de chaîne entre 0 et 2 . Des valeurs supérieures (0.8 ) rendent la sortie plus aléatoire, tandis que des valeurs inférieures (0.2 ) rendent la sortie plus ciblée et déterministe. Vous devez utiliser Temperature ou TopP , mais pas les deux. |
topP | Facultatif. Obtient ou définit une alternative à l’échantillonnage avec la température, appelée échantillonnage de noyau, sous forme de chaîne. Dans cette méthode d’échantillonnage, le modèle considère les résultats des jetons avec la masse de probabilité top_p . Par conséquent, 0.1 signifie que seuls les jetons comprenant la masse de probabilité supérieure de 10 % sont considérés. Vous devez utiliser Temperature ou TopP , mais pas les deux. |
maxTokens | Facultatif. Obtient ou définit le nombre maximal de jetons à générer dans la complétion, sous forme de chaîne avec la valeur par défaut 100 . Le nombre de jetons de votre invite plus max_tokens ne peut pas dépasser la longueur du contexte du modèle. La plupart des modèles ont une longueur de contexte de 2 048 jetons (à l’exception des modèles les plus récents qui prennent en charge 4 096 jetons). |
Configuration
La liaison prend en charge ces propriétés, qui sont définies dans votre code :
Propriété | Description |
---|---|
prompt | Obtient ou définit le prompt pour lequel générer des complétions, encodé sous forme de chaîne. |
modèle | Obtient ou définit l’ID du modèle à utiliser en tant que chaîne, avec la valeur par défaut gpt-3.5-turbo . |
température | Facultatif. Obtient ou définit la température d’échantillonnage à utiliser, sous forme de chaîne entre 0 et 2 . Des valeurs supérieures (0.8 ) rendent la sortie plus aléatoire, tandis que des valeurs inférieures (0.2 ) rendent la sortie plus ciblée et déterministe. Vous devez utiliser Temperature ou TopP , mais pas les deux. |
topP | Facultatif. Obtient ou définit une alternative à l’échantillonnage avec la température, appelée échantillonnage de noyau, sous forme de chaîne. Dans cette méthode d’échantillonnage, le modèle considère les résultats des jetons avec la masse de probabilité top_p . Par conséquent, 0.1 signifie que seuls les jetons comprenant la masse de probabilité supérieure de 10 % sont considérés. Vous devez utiliser Temperature ou TopP , mais pas les deux. |
maxTokens | Facultatif. Obtient ou définit le nombre maximal de jetons à générer dans la complétion, sous forme de chaîne avec la valeur par défaut 100 . Le nombre de jetons de votre invite plus max_tokens ne peut pas dépasser la longueur du contexte du modèle. La plupart des modèles ont une longueur de contexte de 2 048 jetons (à l’exception des modèles les plus récents qui prennent en charge 4 096 jetons). |
Utilisation
Pour obtenir des exemples complets, consultez la section Exemple.