Compartilhar via


Associação de entrada de postagem do assistente do OpenAI do Azure para Azure Functions

Importante

Atualmente, a extensão do OpenAI do Azure para Azure Functions está em versão prévia.

A associação de entrada de postagem do assistente do OpenAI do Azure permite enviar prompts para chatbots assistentes.

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

Observação

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

Observação

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

Observação

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

Exemplo

Este exemplo demonstra o processo de criação, em que a função HTTP POST que envia prompts de usuário para o chatbot 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, em que a função HTTP POST que envia prompts de usuário para o chatbot 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(

Ainda não há exemplos disponíveis.

Este exemplo demonstra o processo de criação, em que a função HTTP POST que envia prompts de usuário para o chatbot 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, em que a função HTTP POST que envia prompts de usuário para o chatbot 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 as propriedades do arquivo function.json, 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, em que a função HTTP POST que envia prompts de usuário para o chatbot 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 atributo PostUserQuery para definir uma associação de entrada de postagem do assistente, que dá suporte a esses parâmetros:

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

Anotações

A anotação PostUserQuery permite que você defina uma associação de entrada de postagem do assistente, que dá suporte a estes parâmetros:

Element Descrição
name O nome da associação de saída.
id A ID do assistente a ser atualizada.
Modelo O nome do modelo de chat do OpenAI a ser usado. Para o OpenAI do Azure, esse valor é o nome da implantação de modelo.

Decoradores

Durante a versão prévia, defina a associação de saída como uma associação generic_output_binding do tipo postUserQuery, que dá suporte a esses parâmetros:

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

Configuração

A associação dá suporte a essas propriedades de configuração definidas no arquivo function.json.

Propriedade Descrição
tipo Deve ser PostUserQuery.
direction Deve ser out.
name O nome da associação de saída.
id A ID do assistente a ser atualizada.
Modelo O nome do modelo de chat do OpenAI a ser usado. Para o OpenAI do Azure, esse valor é o nome da implantação de modelo.

Configuração

A associação dá suporte a estas propriedades, que são definidas no código:

Propriedade Descrição
id A ID do assistente a ser atualizada.
Modelo O nome do modelo de chat do OpenAI a ser usado. Para o OpenAI do Azure, esse valor é o nome da implantação de modelo.

Uso

Consulte a Seção de exemplo para obter exemplos completos.