Assistente do Azure OpenAI após vinculação de entrada para o Funções do Azure

Importante

A extensão do Azure OpenAI para o Funções do Azure 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 Funções do Azure. Para saber mais sobre os assistentes do Azure OpenAI, consulte Azure OpenAI Assistants API.

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

O suporte Go não está atualmente disponível para esta ligação.

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 IActionResult PostUserQuery(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId,
    [AssistantPostInput("{assistantId}", "{Query.message}", ChatModel = "%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.");
}

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.

/*
 * HTTP POST function that sends user prompts to the assistant chat bot.
 */ 
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(
    @HttpTrigger(
        name = "req",
        methods = {HttpMethod.POST}, 
        authLevel = AuthorizationLevel.ANONYMOUS,
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,        
    @AssistantPost(name="newMessages", id = "{assistantId}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", userMessage = "{Query.message}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
    final ExecutionContext context) {
        
        List<AssistantMessage> recentMessages = state.getRecentMessages();
        String response = recentMessages.isEmpty() ? "No response returned." : recentMessages.get(recentMessages.size() - 1).getContent();
        
        return request.createResponseBuilder(HttpStatus.OK)
            .header("Content-Type", "application/json")
            .body(response)
            .build();
}

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 { app, input, output } = require("@azure/functions");

const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    chatModel: '%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 = context.extraInputs.get(assistantPostInput)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"

const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    chatModel: '%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)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: 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.

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}",
      "chatModel": "%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.

@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(
    arg_name="state",
    id="{assistantId}",
    user_message="{Query.message}",
    chat_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)

    # Extract the content of the recentMessage
    recent_message_content = data["recentMessages"][0]["content"]
    return func.HttpResponse(
        recent_message_content, status_code=200, mimetype="text/plain"
    )

Atributos

Aplique o PostUserQuery atributo para definir uma ligação de pós-entrada do assistente, que suporta estes parâmetros:

Parâmetro Descrição
ID O ID do assistente a atualizar.
Mensagem de usuário Obtém ou define a mensagem do usuário para o modelo de conclusão de chat, codificado como uma cadeia de caracteres.
AIConnectionName Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY.
Modelo de Bate-papo Opcional. Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com um valor padrão de gpt-3.5-turbo.
Temperatura Opcional. Obtém ou define a temperatura de amostragem a ser usada, como uma cadeia de caracteres entre 0 e 2. Valores mais altos (0.8) tornam a saída mais aleatória, enquanto valores mais baixos como (0.2) tornam a saída mais focada e determinística. Você deve usar um ou TemperatureTopP, mas não ambos.
TopP Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, como uma corda. Neste método de amostragem, o modelo considera os resultados dos tokens com top_p massa de probabilidade. Isso significa que 0.1 apenas os tokens que compõem o top 10% massa de probabilidade são considerados. Você deve usar um ou TemperatureTopP, mas não ambos.
MaxTokens Opcional. Obtém ou define o número máximo de tokens a serem gerados na conclusão, como uma cadeia de caracteres com um padrão de 100. A contagem de tokens do seu prompt mais max_tokens não pode exceder o comprimento de contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais recentes, que suportam 4096).
IsReasoningModel Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false.

Anotações

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

Elemento Descrição
Designação O nome da ligação de saída.
ID O ID do assistente a atualizar.
userMensagem Obtém ou define a mensagem do usuário para o modelo de conclusão de chat, codificado como uma cadeia de caracteres.
aiConnectionName Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY.
chatModelo Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com um valor padrão de gpt-3.5-turbo.
temperatura Opcional. Obtém ou define a temperatura de amostragem a ser usada, como uma cadeia de caracteres entre 0 e 2. Valores mais altos (0.8) tornam a saída mais aleatória, enquanto valores mais baixos como (0.2) tornam a saída mais focada e determinística. Você deve usar um ou TemperatureTopP, mas não ambos.
topP Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, como uma corda. Neste método de amostragem, o modelo considera os resultados dos tokens com top_p massa de probabilidade. Isso significa que 0.1 apenas os tokens que compõem o top 10% massa de probabilidade são considerados. Você deve usar um ou TemperatureTopP, mas não ambos.
maxTokens Opcional. Obtém ou define o número máximo de tokens a serem gerados na conclusão, como uma cadeia de caracteres com um padrão de 100. A contagem de tokens do seu prompt mais max_tokens não pode exceder o comprimento de contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais recentes, que suportam 4096).
isReasoningModel Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false.

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 Descrição
arg_name O nome da variável que representa o parâmetro de ligação.
ID O ID do assistente a atualizar.
user_message Obtém ou define a mensagem do usuário para o modelo de conclusão de chat, codificado como uma cadeia de caracteres.
ai_connection_name Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY.
chat_model Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com um valor padrão de gpt-3.5-turbo.
temperatura Opcional. Obtém ou define a temperatura de amostragem a ser usada, como uma cadeia de caracteres entre 0 e 2. Valores mais altos (0.8) tornam a saída mais aleatória, enquanto valores mais baixos como (0.2) tornam a saída mais focada e determinística. Você deve usar um ou TemperatureTopP, mas não ambos.
top_p Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, como uma corda. Neste método de amostragem, o modelo considera os resultados dos tokens com top_p massa de probabilidade. Isso significa que 0.1 apenas os tokens que compõem o top 10% massa de probabilidade são considerados. Você deve usar um ou TemperatureTopP, mas não ambos.
max_tokens Opcional. Obtém ou define o número máximo de tokens a serem gerados na conclusão, como uma cadeia de caracteres com um padrão de 100. A contagem de tokens do seu prompt mais max_tokens não pode exceder o comprimento de contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais recentes, que suportam 4096).
is_reasoning _model Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false.

Configuração

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

Propriedade Descrição
tipo 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.
userMensagem Obtém ou define a mensagem do usuário para o modelo de conclusão de chat, codificado como uma cadeia de caracteres.
aiConnectionName Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY.
chatModelo Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com um valor padrão de gpt-3.5-turbo.
temperatura Opcional. Obtém ou define a temperatura de amostragem a ser usada, como uma cadeia de caracteres entre 0 e 2. Valores mais altos (0.8) tornam a saída mais aleatória, enquanto valores mais baixos como (0.2) tornam a saída mais focada e determinística. Você deve usar um ou TemperatureTopP, mas não ambos.
topP Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, como uma corda. Neste método de amostragem, o modelo considera os resultados dos tokens com top_p massa de probabilidade. Isso significa que 0.1 apenas os tokens que compõem o top 10% massa de probabilidade são considerados. Você deve usar um ou TemperatureTopP, mas não ambos.
maxTokens Opcional. Obtém ou define o número máximo de tokens a serem gerados na conclusão, como uma cadeia de caracteres com um padrão de 100. A contagem de tokens do seu prompt mais max_tokens não pode exceder o comprimento de contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais recentes, que suportam 4096).
isReasoningModel Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false.

Configuração

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

Propriedade Descrição
ID O ID do assistente a atualizar.
userMensagem Obtém ou define a mensagem do usuário para o modelo de conclusão de chat, codificado como uma cadeia de caracteres.
aiConnectionName Opcional. Obtém ou define o nome da seção de configuração para as configurações de conectividade do serviço de IA. Para o Azure OpenAI: Se especificado, procure os valores "Endpoint" e "Key" nesta seção de configuração. Se não for especificado ou a seção não existir, recorrerá às variáveis de ambiente: AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY. Para autenticação de identidade gerenciada atribuída pelo usuário, essa propriedade é necessária. Para o serviço OpenAI (não Azure), defina a variável de ambiente OPENAI_API_KEY.
chatModelo Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com um valor padrão de gpt-3.5-turbo.
temperatura Opcional. Obtém ou define a temperatura de amostragem a ser usada, como uma cadeia de caracteres entre 0 e 2. Valores mais altos (0.8) tornam a saída mais aleatória, enquanto valores mais baixos como (0.2) tornam a saída mais focada e determinística. Você deve usar um ou TemperatureTopP, mas não ambos.
topP Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, como uma corda. Neste método de amostragem, o modelo considera os resultados dos tokens com top_p massa de probabilidade. Isso significa que 0.1 apenas os tokens que compõem o top 10% massa de probabilidade são considerados. Você deve usar um ou TemperatureTopP, mas não ambos.
maxTokens Opcional. Obtém ou define o número máximo de tokens a serem gerados na conclusão, como uma cadeia de caracteres com um padrão de 100. A contagem de tokens do seu prompt mais max_tokens não pode exceder o comprimento de contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais recentes, que suportam 4096).
isReasoningModel Opcional. Obtém ou define um valor que indica se o modelo de conclusão de chat é um modelo de raciocínio. Esta opção é experimental e associada ao modelo de raciocínio até que todos os modelos tenham paridade nas propriedades esperadas, com um valor padrão de false.

Utilização

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