Partager via


Liaison d’entrée de saisie semi-automatique 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 saisie de texte Azure OpenAI vous permet d’intégrer les API de saisie semi-automatique de texte des résultats dans vos exécutions de code. Vous pouvez définir la liaison pour utiliser les deux invites prédéfinies avec des paramètres ou passer une invite entière.

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 achèvements d’Azure OpenAI, consultez Découvrez comment 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 modèle de création de modèles , où la fonction de déclencheur HTTP prend un name paramètre et l’incorpore dans une invite de texte, qui est ensuite envoyée à l’API d’achèvement Azure OpenAI par l’extension. La réponse à l’invite est renvoyé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}?", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
{
    return new OkObjectResult(response.Content);
}

Cet exemple prend une invite en tant qu’entrée, l’envoie directement à l’API de saisie semi-automatique et retourne la réponse en tant que sortie.

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

Cet exemple illustre le modèle de création de modèles , où la fonction de déclencheur HTTP prend un name paramètre et l’incorpore dans une invite de texte, qui est ensuite envoyée à l’API d’achèvement Azure OpenAI par l’extension. La réponse à l’invite est renvoyé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}?", 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();
}

Cet exemple prend une invite en tant qu’entrée, l’envoie directement à l’API de saisie semi-automatique 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}", 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();
}

Cet exemple illustre le modèle de création de modèles , où la fonction de déclencheur HTTP prend un name paramètre et l’incorpore dans une invite de texte, qui est ensuite envoyée à l’API d’achèvement Azure OpenAI par l’extension. La réponse à l’invite est renvoyé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',
    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() }
    }
});

Cet exemple illustre le modèle de création de modèles , où la fonction de déclencheur HTTP prend un name paramètre et l’incorpore dans une invite de texte, qui est ensuite envoyée à l’API d’achèvement Azure OpenAI par l’extension. La réponse à l’invite est renvoyé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',
    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() }
    }
});

Cet exemple illustre le modèle de création de modèles , où la fonction de déclencheur HTTP prend un name paramètre et l’incorpore dans une invite de texte, qui est ensuite envoyée à l’API d’achèvement Azure OpenAI par l’extension. La réponse à l’invite est renvoyé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",
      "chatModel": "%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 saisie semi-automatique 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 modèle de création de modèles , où la fonction de déclencheur HTTP prend un name paramètre et l’incorpore dans une invite de texte, qui est ensuite envoyée à l’API d’achèvement Azure OpenAI par l’extension. La réponse à l’invite est renvoyé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",
    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)

Cet exemple prend une invite en tant qu’entrée, l’envoie directement à l’API de saisie semi-automatique et retourne la réponse en tant que sortie.

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

Attributs

L’attribut spécifique que vous appliquez pour définir une liaison d’entrée de saisie de saisie de texte dépend de votre mode de processus C#.

Dans le modèle worker isolé, appliquez TextCompletionInput la définition d’une liaison d’entrée de saisie semi-automatique de texte.

L’attribut prend en charge ces paramètres :

Paramètre Descriptif
Prompt Obtient ou définit l’invite pour générer des saisies semi-automatiques, encodées sous forme de chaîne.
AIConnectionName Facultatif. Obtient ou définit le nom de la section de configuration pour les paramètres de connectivité du service IA. Pour Azure OpenAI : s’il est spécifié, recherche les valeurs « Point de terminaison » et « Clé » dans cette section de configuration. S’il n’existe pas ou si la section n’existe pas, revient aux variables d’environnement : AZURE_OPENAI_ENDPOINT et AZURE_OPENAI_KEY. Pour l’authentification d’identité managée affectée par l’utilisateur, cette propriété est requise. Pour le service OpenAI (non-Azure), définissez la variable d’environnement OPENAI_API_KEY.
ChatModel Facultatif. Obtient ou définit l’ID du modèle à utiliser en tant que chaîne, avec la valeur gpt-3.5-turbopar défaut .
Température Facultatif. Obtient ou définit la température d’échantillonnage à utiliser, sous forme de chaîne entre 0 et 2. Les valeurs plus élevées (0.8) rendent la sortie plus aléatoire, tandis que les valeurs inférieures comme (0.2) rendent la sortie plus ciblée et déterministe. Vous devez utiliser l’un ou l’autre Temperature , TopPmais 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 top_p une masse de probabilité. Par conséquent 0.1 , seuls les jetons comprenant la masse de probabilité supérieure de 10% sont considérés. Vous devez utiliser l’un ou l’autre Temperature , TopPmais pas les deux.
MaxTokens Facultatif. Obtient ou définit le nombre maximal de jetons à générer dans l’achèvement, sous la forme d’une chaîne avec une 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).
IsReasoningModel Facultatif. Obtient ou définit une valeur indiquant si le modèle d’achèvement de conversation est un modèle de raisonnement. Cette option est expérimentale et associée au modèle de raisonnement jusqu’à ce que tous les modèles aient une parité dans les propriétés attendues, avec une valeur par défaut de false.

Commentaires

L’annotation TextCompletion vous permet de définir une liaison d’entrée de saisie semi-automatique de texte, qui prend en charge ces paramètres :

Élément Descriptif
nom Obtient ou définit le nom de la liaison d’entrée.
prompt Obtient ou définit l’invite pour générer des saisies semi-automatiques, encodées sous forme de chaîne.
aiConnectionName Facultatif. Obtient ou définit le nom de la section de configuration pour les paramètres de connectivité du service IA. Pour Azure OpenAI : s’il est spécifié, recherche les valeurs « Point de terminaison » et « Clé » dans cette section de configuration. S’il n’existe pas ou si la section n’existe pas, revient aux variables d’environnement : AZURE_OPENAI_ENDPOINT et AZURE_OPENAI_KEY. Pour l’authentification d’identité managée affectée par l’utilisateur, cette propriété est requise. Pour le service OpenAI (non-Azure), définissez la variable d’environnement OPENAI_API_KEY.
chatModel Obtient ou définit l’ID du modèle à utiliser en tant que chaîne, avec la valeur gpt-3.5-turbopar défaut .
température Facultatif. Obtient ou définit la température d’échantillonnage à utiliser, sous forme de chaîne entre 0 et 2. Les valeurs plus élevées (0.8) rendent la sortie plus aléatoire, tandis que les valeurs inférieures comme (0.2) rendent la sortie plus ciblée et déterministe. Vous devez utiliser l’un ou l’autre Temperature , TopPmais 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 top_p une masse de probabilité. Par conséquent 0.1 , seuls les jetons comprenant la masse de probabilité supérieure de 10% sont considérés. Vous devez utiliser l’un ou l’autre Temperature , TopPmais pas les deux.
maxTokens Facultatif. Obtient ou définit le nombre maximal de jetons à générer dans l’achèvement, sous la forme d’une chaîne avec une 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).
isReasoningModel Facultatif. Obtient ou définit une valeur indiquant si le modèle d’achèvement de conversation est un modèle de raisonnement. Cette option est expérimentale et associée au modèle de raisonnement jusqu’à ce que tous les modèles aient une parité dans les propriétés attendues, avec une valeur par défaut de false.

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 Descriptif
arg_name Le nom de la variable qui représente le paramètre de liaison.
prompt Obtient ou définit l’invite pour générer des saisies semi-automatiques, encodées sous forme de chaîne.
ai_connection_name Facultatif. Obtient ou définit le nom de la section de configuration pour les paramètres de connectivité du service IA. Pour Azure OpenAI : s’il est spécifié, recherche les valeurs « Point de terminaison » et « Clé » dans cette section de configuration. S’il n’existe pas ou si la section n’existe pas, revient aux variables d’environnement : AZURE_OPENAI_ENDPOINT et AZURE_OPENAI_KEY. Pour l’authentification d’identité managée affectée par l’utilisateur, cette propriété est requise. Pour le service OpenAI (non-Azure), définissez la variable d’environnement OPENAI_API_KEY.
chat_model Obtient ou définit l’ID du modèle à utiliser en tant que chaîne, avec la valeur gpt-3.5-turbopar défaut .
température Facultatif. Obtient ou définit la température d’échantillonnage à utiliser, sous forme de chaîne entre 0 et 2. Les valeurs plus élevées (0.8) rendent la sortie plus aléatoire, tandis que les valeurs inférieures comme (0.2) rendent la sortie plus ciblée et déterministe. Vous devez utiliser l’un ou l’autre Temperature , TopPmais 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 top_p une masse de probabilité. Par conséquent 0.1 , seuls les jetons comprenant la masse de probabilité supérieure de 10% sont considérés. Vous devez utiliser l’un ou l’autre Temperature , TopPmais pas les deux.
max_tokens Facultatif. Obtient ou définit le nombre maximal de jetons à générer dans l’achèvement, sous la forme d’une chaîne avec une 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).
is_reasoning _model Facultatif. Obtient ou définit une valeur indiquant si le modèle d’achèvement de conversation est un modèle de raisonnement. Cette option est expérimentale et associée au modèle de raisonnement jusqu’à ce que tous les modèles aient une parité dans les propriétés attendues, avec une valeur par défaut de false.

Paramétrage

La liaison prend en charge ces propriétés de configuration que vous définissez dans le fichier function.json.

Propriété Descriptif
type Doit être textCompletion.
direction Doit être in.
nom Le nom de la liaison d’entrée.
prompt Obtient ou définit l’invite pour générer des saisies semi-automatiques, encodées sous forme de chaîne.
aiConnectionName Facultatif. Obtient ou définit le nom de la section de configuration pour les paramètres de connectivité du service IA. Pour Azure OpenAI : s’il est spécifié, recherche les valeurs « Point de terminaison » et « Clé » dans cette section de configuration. S’il n’existe pas ou si la section n’existe pas, revient aux variables d’environnement : AZURE_OPENAI_ENDPOINT et AZURE_OPENAI_KEY. Pour l’authentification d’identité managée affectée par l’utilisateur, cette propriété est requise. Pour le service OpenAI (non-Azure), définissez la variable d’environnement OPENAI_API_KEY.
chatModel Obtient ou définit l’ID du modèle à utiliser en tant que chaîne, avec la valeur gpt-3.5-turbopar défaut .
température Facultatif. Obtient ou définit la température d’échantillonnage à utiliser, sous forme de chaîne entre 0 et 2. Les valeurs plus élevées (0.8) rendent la sortie plus aléatoire, tandis que les valeurs inférieures comme (0.2) rendent la sortie plus ciblée et déterministe. Vous devez utiliser l’un ou l’autre Temperature , TopPmais 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 top_p une masse de probabilité. Par conséquent 0.1 , seuls les jetons comprenant la masse de probabilité supérieure de 10% sont considérés. Vous devez utiliser l’un ou l’autre Temperature , TopPmais pas les deux.
maxTokens Facultatif. Obtient ou définit le nombre maximal de jetons à générer dans l’achèvement, sous la forme d’une chaîne avec une 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).
isReasoningModel Facultatif. Obtient ou définit une valeur indiquant si le modèle d’achèvement de conversation est un modèle de raisonnement. Cette option est expérimentale et associée au modèle de raisonnement jusqu’à ce que tous les modèles aient une parité dans les propriétés attendues, avec une valeur par défaut de false.

Paramétrage

La liaison prend en charge ces propriétés, qui sont définies dans votre code :

Propriété Descriptif
prompt Obtient ou définit l’invite pour générer des saisies semi-automatiques, encodées sous forme de chaîne.
aiConnectionName Facultatif. Obtient ou définit le nom de la section de configuration pour les paramètres de connectivité du service IA. Pour Azure OpenAI : s’il est spécifié, recherche les valeurs « Point de terminaison » et « Clé » dans cette section de configuration. S’il n’existe pas ou si la section n’existe pas, revient aux variables d’environnement : AZURE_OPENAI_ENDPOINT et AZURE_OPENAI_KEY. Pour l’authentification d’identité managée affectée par l’utilisateur, cette propriété est requise. Pour le service OpenAI (non-Azure), définissez la variable d’environnement OPENAI_API_KEY.
chatModel Obtient ou définit l’ID du modèle à utiliser en tant que chaîne, avec la valeur gpt-3.5-turbopar défaut .
température Facultatif. Obtient ou définit la température d’échantillonnage à utiliser, sous forme de chaîne entre 0 et 2. Les valeurs plus élevées (0.8) rendent la sortie plus aléatoire, tandis que les valeurs inférieures comme (0.2) rendent la sortie plus ciblée et déterministe. Vous devez utiliser l’un ou l’autre Temperature , TopPmais 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 top_p une masse de probabilité. Par conséquent 0.1 , seuls les jetons comprenant la masse de probabilité supérieure de 10% sont considérés. Vous devez utiliser l’un ou l’autre Temperature , TopPmais pas les deux.
maxTokens Facultatif. Obtient ou définit le nombre maximal de jetons à générer dans l’achèvement, sous la forme d’une chaîne avec une 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).
isReasoningModel Facultatif. Obtient ou définit une valeur indiquant si le modèle d’achèvement de conversation est un modèle de raisonnement. Cette option est expérimentale et associée au modèle de raisonnement jusqu’à ce que tous les modèles aient une parité dans les propriétés attendues, avec une valeur par défaut de false.

Utilisation

Pour obtenir des exemples complets, consultez la section Exemple.