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.

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 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.