Partager via


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.