Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Important
L’extension Azure OpenAI pour Azure Functions est actuellement en préversion.
La liaison d’entrée de publication de l’assistant Azure OpenAI vous permet d’envoyer des invites aux bots de conversation de l’assistant.
Pour plus d’informations sur l’installation et la configuration de l’extension Azure OpenAI, consultez Extensions Azure OpenAI pour Azure Functions. Si vous souhaitez en savoir plus sur les assistants Azure OpenAI, veuillez consulter la rubrique API d’assistants Azure OpenAI.
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 processus de création, où la fonction HTTP POST envoie des invites utilisateur au bot de conversation de l’assistant. La réponse à l’invite est renvoyée dans la réponse HTTP.
/// <summary>
/// HTTP POST function that sends user prompts to the assistant chat bot.
/// </summary>
[Function(nameof(PostUserQuery))]
public static IActionResult PostUserQuery(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
string assistantId,
[AssistantPostInput("{assistantId}", "{Query.message}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
return new OkObjectResult(state.RecentMessages.Any() ? state.RecentMessages[state.RecentMessages.Count - 1].Content : "No response returned.");
}
Cet exemple illustre le processus de création, où la fonction HTTP POST envoie des invites utilisateur au bot de conversation de l’assistant. La réponse à l’invite est renvoyée dans la réponse HTTP.
/*
* HTTP POST function that sends user prompts to the assistant chat bot.
*/
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "assistants/{assistantId}")
HttpRequestMessage<Optional<String>> request,
@BindingName("assistantId") String assistantId,
@AssistantPost(name="newMessages", id = "{assistantId}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", userMessage = "{Query.message}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
final ExecutionContext context) {
List<AssistantMessage> recentMessages = state.getRecentMessages();
String response = recentMessages.isEmpty() ? "No response returned." : recentMessages.get(recentMessages.size() - 1).getContent();
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response)
.build();
}
Cet exemple illustre le processus de création, où la fonction HTTP POST envoie des invites utilisateur au bot de conversation de l’assistant. La réponse à l’invite est renvoyée dans la réponse HTTP.
const { app, input, output } = require("@azure/functions");
const assistantPostInput = input.generic({
type: 'assistantPost',
id: '{assistantId}',
chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
userMessage: '{Query.message}',
chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
methods: ['POST'],
route: 'assistants/{assistantId}',
authLevel: 'anonymous',
extraInputs: [assistantPostInput],
handler: async (_, context) => {
const chatState = context.extraInputs.get(assistantPostInput)
const content = chatState.recentMessages[0].content
return {
status: 200,
body: content,
headers: {
'Content-Type': 'text/plain'
}
};
}
})
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"
const assistantPostInput = input.generic({
type: 'assistantPost',
id: '{assistantId}',
chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
userMessage: '{Query.message}',
chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
methods: ['POST'],
route: 'assistants/{assistantId}',
authLevel: 'anonymous',
extraInputs: [assistantPostInput],
handler: async (_, context) => {
const chatState: any = context.extraInputs.get(assistantPostInput)
const content = chatState.recentMessages[0].content
return {
status: 200,
body: content,
headers: {
'Content-Type': 'text/plain'
}
};
}
})
Cet exemple illustre le processus de création, où la fonction HTTP POST envoie des invites utilisateur au bot de conversation de l’assistant. La réponse à l’invite est renvoyée dans la réponse HTTP.
Voici le fichier function.json pour la requête post-utilisateur :
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"route": "assistants/{assistantId}",
"methods": [
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"name": "State",
"type": "assistantPost",
"direction": "in",
"dataType": "string",
"id": "{assistantId}",
"userMessage": "{Query.message}",
"chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
"chatStorageConnectionSetting": "AzureWebJobsStorage",
"collectionName": "ChatState"
}
]
}
Pour plus d’informations sur les propriétés du fichier function.json, consultez la section Configuration.
using namespace System.Net
param($Request, $TriggerMetadata, $State)
$recent_message_content = "No recent messages!"
if ($State.recentMessages.Count -gt 0) {
$recent_message_content = $State.recentMessages[0].content
}
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $recent_message_content
Headers = @{
"Content-Type" = "text/plain"
}
})
Cet exemple illustre le processus de création, où la fonction HTTP POST envoie des invites utilisateur au bot de conversation de l’assistant. La réponse à l’invite est renvoyée dans la réponse HTTP.
@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(
arg_name="state",
id="{assistantId}",
user_message="{Query.message}",
chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
chat_storage_connection_setting=DEFAULT_CHAT_STORAGE_SETTING,
collection_name=DEFAULT_CHAT_COLLECTION_NAME,
)
def post_user_response(req: func.HttpRequest, state: str) -> func.HttpResponse:
# Parse the JSON string into a dictionary
data = json.loads(state)
# Extract the content of the recentMessage
recent_message_content = data["recentMessages"][0]["content"]
return func.HttpResponse(
recent_message_content, status_code=200, mimetype="text/plain"
)
Attributs
Appliquez l’attribut PostUserQuery pour définir une liaison d’entrée de publication d’assistant, qui prend en charge ces paramètres :
| Paramètre | Descriptif |
|---|---|
| Id | ID de l’assistant à mettre à jour. |
| UserMessage | Obtient ou définit le message utilisateur pour le modèle d’achèvement de conversation, encodé en tant que 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 PostUserQuery vous permet de définir une liaison d’entrée de publication d’assistant, qui prend en charge ces paramètres :
| Élément | Descriptif |
|---|---|
| nom | Nom de la liaison de sortie. |
| id | ID de l’assistant à mettre à jour. |
| userMessage | Obtient ou définit le message utilisateur pour le modèle d’achèvement de conversation, encodé en tant que 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 de sortie en tant que liaison generic_output_binding de type postUserQuery, 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. |
| id | ID de l’assistant à mettre à jour. |
| user_message | Obtient ou définit le message utilisateur pour le modèle d’achèvement de conversation, encodé en tant que 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 PostUserQuery. |
| direction | Doit être out. |
| nom | Nom de la liaison de sortie. |
| id | ID de l’assistant à mettre à jour. |
| userMessage | Obtient ou définit le message utilisateur pour le modèle d’achèvement de conversation, encodé en tant que 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 |
|---|---|
| id | ID de l’assistant à mettre à jour. |
| userMessage | Obtient ou définit le message utilisateur pour le modèle d’achèvement de conversation, encodé en tant que 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.