Liaison d’entrée de publication de l’assistant Azure OpenAI pour Azure Functions
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. Pour en savoir plus sur les assistants Azure OpenAI, consultez [API Assistants Azure OpenAI](.. /ai-services/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 async Task<IActionResult> PostUserQuery(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
string assistantId,
[AssistantPostInput("{assistantId}", "{Query.message}", Model = "%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.");
}
/// <summary>
/// HTTP GET function that queries the conversation history of the assistant chat bot.
/// </summary>
[Function(nameof(GetChatState))]
public static async Task<IActionResult> GetChatState(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "assistants/{assistantId}")] HttpRequestData req,
string assistantId,
[AssistantQueryInput("{assistantId}", TimestampUtc = "{Query.timestampUTC}", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
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.
public HttpResponseMessage getChatState(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "assistants/{assistantId}")
HttpRequestMessage<Optional<String>> request,
@BindingName("assistantId") String assistantId,
@AssistantQuery(name = "AssistantState", id = "{assistantId}", timestampUtc = "{Query.timestampUTC}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
final ExecutionContext context) {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(state)
.build();
}
/*
* HTTP POST function that sends user prompts to the assistant chat bot.
*/
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(
Les exemples ne sont pas encore disponibles.
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 assistantPostInput = input.generic({
type: 'assistantPost',
id: '{assistantId}',
model: '%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)
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}",
"model": "%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.
response_json = {"assistantId": assistantId}
return func.HttpResponse(json.dumps(response_json), status_code=202, mimetype="application/json")
@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(arg_name="state", id="{assistantId}", user_message="{Query.message}", 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)
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 | Description |
---|---|
Id | ID de l’assistant à mettre à jour. |
Modèle | Nom du modèle de conversation OpenAI à utiliser. Pour Azure OpenAI, cette valeur est le nom du modèle de déploiement. |
Annotations
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 | Description |
---|---|
name | Nom de la liaison de sortie. |
id | ID de l’assistant à mettre à jour. |
modèle | Nom du modèle de conversation OpenAI à utiliser. Pour Azure OpenAI, cette valeur est le nom du modèle de déploiement. |
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 | Description |
---|---|
arg_name | Le nom de la variable qui représente le paramètre de liaison. |
id | ID de l’assistant à mettre à jour. |
modèle | Nom du modèle de conversation OpenAI à utiliser. Pour Azure OpenAI, cette valeur est le nom du modèle de déploiement. |
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 PostUserQuery . |
direction | Doit être out . |
name | Nom de la liaison de sortie. |
id | ID de l’assistant à mettre à jour. |
modèle | Nom du modèle de conversation OpenAI à utiliser. Pour Azure OpenAI, cette valeur est le nom du modèle de déploiement. |
Configuration
La liaison prend en charge ces propriétés, qui sont définies dans votre code :
Propriété | Description |
---|---|
id | ID de l’assistant à mettre à jour. |
modèle | Nom du modèle de conversation OpenAI à utiliser. Pour Azure OpenAI, cette valeur est le nom du modèle de déploiement. |
Utilisation
Pour obtenir des exemples complets, consultez la section Exemple.