Compartir a través de


Enlace de entrada de publicación del asistente de Azure OpenAI para Azure Functions

Importante

La extensión de Azure OpenAI para Azure Functions está actualmente en versión preliminar.

El enlace de entrada de publicación del asistente de Azure OpenAI le permite enviar solicitudes a los bots de chat del asistente.

Para obtener información sobre la configuración y los detalles de configuración de la extensión de Azure OpenAI, consulte Extensiones de Azure OpenAI para Azure Functions. Para más información sobre los asistente de Azure OpenAI, consulte [API de azure OpenAI Assistants](.. /ai-services/openai/

Nota:

Las referencias y ejemplos solo se proporcionan para el modelo de Node.js v4.

Nota:

Las referencias y ejemplos solo se proporcionan para el modelo de Python v2.

Nota:

Aunque se admiten ambos modelos de proceso de C#, solo se proporcionan ejemplos de modelos de trabajo aislados.

Ejemplo

En este ejemplo se muestra el proceso de creación, donde la función HTTP POST envía indicaciones del usuario al robot de chat del asistente. La respuesta a la solicitud se devuelve en la respuesta 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)
{

En este ejemplo se muestra el proceso de creación, donde la función HTTP POST envía indicaciones del usuario al robot de chat del asistente. La respuesta a la solicitud se devuelve en la respuesta 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(

Los ejemplos aún no están disponibles.

En este ejemplo se muestra el proceso de creación, donde la función HTTP POST envía indicaciones del usuario al robot de chat del asistente. La respuesta a la solicitud se devuelve en la respuesta 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)

En este ejemplo se muestra el proceso de creación, donde la función HTTP POST envía indicaciones del usuario al robot de chat del asistente. La respuesta a la solicitud se devuelve en la respuesta HTTP.

Este es el archivo function.json para la consulta posterior al usuario:

{
  "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"
    }
  ]
}

Para obtener más información sobre las propiedades del archivo function.json, consulte la sección de Configuración.

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"
    }
})

En este ejemplo se muestra el proceso de creación, donde la función HTTP POST envía indicaciones del usuario al robot de chat del asistente. La respuesta a la solicitud se devuelve en la respuesta 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)

Atributos

Aplique el atributo PostUserQuery para definir un enlace de entrada de publicación del asistente, que admite estos parámetros:

Parámetro Descripción
Id Identificador del asistente que se va a actualizar.
Modelo Nombre del modelo de chat de OpenAI que se va a usar. Para Azure OpenAI, este valor es el nombre de la implementación del modelo.

anotaciones

La anotación PostUserQuery permite definir un enlace de entrada de publicación del asistente, que admite estos parámetros:

Elemento Descripción
name Nombre del enlace de salida.
id Identificador del asistente que se va a actualizar.
model Nombre del modelo de chat de OpenAI que se va a usar. Para Azure OpenAI, este valor es el nombre de la implementación del modelo.

Elementos Decorator

Durante la versión preliminar, defina el enlace de salida como un enlace generic_output_binding de tipo postUserQuery, que admite estos parámetros:

Parámetro Descripción
arg_name Nombre de la variable que representa el parámetro de enlace.
id Identificador del asistente que se va a actualizar.
model Nombre del modelo de chat de OpenAI que se va a usar. Para Azure OpenAI, este valor es el nombre de la implementación del modelo.

Configuración

El enlace admite estas propiedades de configuración que se establecen en el archivo function.json.

Propiedad Descripción
type Debe ser PostUserQuery.
direction Debe ser out.
name Nombre del enlace de salida.
id Identificador del asistente que se va a actualizar.
model Nombre del modelo de chat de OpenAI que se va a usar. Para Azure OpenAI, este valor es el nombre de la implementación del modelo.

Configuración

El enlace admite estas propiedades, que se definen en el código:

Propiedad Descripción
id Identificador del asistente que se va a actualizar.
model Nombre del modelo de chat de OpenAI que se va a usar. Para Azure OpenAI, este valor es el nombre de la implementación del modelo.

Uso

Consulte la sección de ejemplos para ver ejemplos completos.