Partilhar via


Assistente do Azure OpenAI após vinculação de entrada para o Azure Functions

Importante

A extensão do Azure OpenAI para o Azure Functions está atualmente em visualização.

A vinculação pós-entrada do assistente OpenAI do Azure permite enviar prompts para bots de chat assistentes.

Para obter informações sobre detalhes de instalação e configuração da extensão do Azure OpenAI, consulte Extensões do Azure OpenAI para Azure Functions. Para saber mais sobre os assistentes do Azure OpenAI, consulte [Azure OpenAI Assistants API](.. /ai-serviços/openai/

Nota

Referências e exemplos são fornecidos apenas para o modelo Node.js v4.

Nota

Referências e exemplos são fornecidos apenas para o modelo Python v2.

Nota

Embora ambos os modelos de processo C# sejam suportados, apenas exemplos de modelos de trabalho isolados são fornecidos.

Exemplo

Este exemplo demonstra o processo de criação, onde a função HTTP POST que envia solicitações do usuário para o bot de chat assistente. A resposta ao prompt é retornada na resposta 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)
{

Este exemplo demonstra o processo de criação, onde a função HTTP POST que envia solicitações do usuário para o bot de chat assistente. A resposta ao prompt é retornada na resposta 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(

Os exemplos ainda não estão disponíveis.

Este exemplo demonstra o processo de criação, onde a função HTTP POST que envia solicitações do usuário para o bot de chat assistente. A resposta ao prompt é retornada na resposta 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)

Este exemplo demonstra o processo de criação, onde a função HTTP POST que envia solicitações do usuário para o bot de chat assistente. A resposta ao prompt é retornada na resposta HTTP.

Aqui está o arquivo function.json para consulta pós-usuário:

{
  "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 obter mais informações sobre function.json propriedades do arquivo, consulte a seção Configuração .

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

Este exemplo demonstra o processo de criação, onde a função HTTP POST que envia solicitações do usuário para o bot de chat assistente. A resposta ao prompt é retornada na resposta 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 o PostUserQuery atributo para definir uma ligação de pós-entrada do assistente, que suporta estes parâmetros:

Parâmetro Description
ID O ID do assistente a atualizar.
Modelo O nome do modelo de chat OpenAI a ser usado. Para o Azure OpenAI, esse valor é o nome da implantação do modelo.

Anotações

A PostUserQuery anotação permite que você defina uma vinculação de pós-entrada assistente, que suporta estes parâmetros:

Elemento Description
Designação O nome da ligação de saída.
id O ID do assistente a atualizar.
modelo O nome do modelo de chat OpenAI a ser usado. Para o Azure OpenAI, esse valor é o nome da implantação do modelo.

Decoradores

Durante a visualização, defina a ligação de saída como uma generic_output_binding associação do tipo postUserQuery, que suporta estes parâmetros:

Parâmetro Description
arg_name O nome da variável que representa o parâmetro de ligação.
id O ID do assistente a atualizar.
modelo O nome do modelo de chat OpenAI a ser usado. Para o Azure OpenAI, esse valor é o nome da implantação do modelo.

Configuração

A associação suporta essas propriedades de configuração definidas no arquivo function.json.

Property Descrição
type Deve ser PostUserQuery.
direção Deve ser out.
Designação O nome da ligação de saída.
id O ID do assistente a atualizar.
modelo O nome do modelo de chat OpenAI a ser usado. Para o Azure OpenAI, esse valor é o nome da implantação do modelo.

Configuração

A associação suporta estas propriedades, que são definidas no seu código:

Property Description
id O ID do assistente a atualizar.
modelo O nome do modelo de chat OpenAI a ser usado. Para o Azure OpenAI, esse valor é o nome da implantação do modelo.

Utilização

Consulte a seção Exemplo para obter exemplos completos.